@praxisui/editorial-forms 8.0.0-beta.7 → 8.0.0-beta.70
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.
|
@@ -1,22 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { PraxisI18nService, PraxisIconDirective, DynamicWidgetLoaderDirective, providePraxisI18n } from '@praxisui/core';
|
|
2
|
+
import { InjectionToken, makeEnvironmentProviders, inject, DestroyRef, viewChild, ViewContainerRef, input, output, signal, computed, effect, ChangeDetectionStrategy, Component, ENVIRONMENT_INITIALIZER, reflectComponentType, Input } from '@angular/core';
|
|
3
|
+
import { PraxisI18nService, PraxisIconDirective, DynamicWidgetLoaderDirective, ComponentMetadataRegistry, providePraxisI18n } from '@praxisui/core';
|
|
5
4
|
import * as i1 from '@angular/material/icon';
|
|
6
5
|
import { MatIconModule } from '@angular/material/icon';
|
|
7
6
|
|
|
8
|
-
/**
|
|
9
|
-
* Root provider entrypoint for the editorial runtime package.
|
|
10
|
-
*
|
|
11
|
-
* Intentionally minimal in v1:
|
|
12
|
-
* - no global singleton graph yet
|
|
13
|
-
* - no dependency on @praxisui/dynamic-form
|
|
14
|
-
* - safe to consume from apps without pulling generic form authoring
|
|
15
|
-
*/
|
|
16
|
-
function providePraxisEditorialForms() {
|
|
17
|
-
return makeEnvironmentProviders([]);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
7
|
const DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG = {
|
|
21
8
|
emitOperationalEvents: true,
|
|
22
9
|
forwardAdapterOperationalEvents: true,
|
|
@@ -180,39 +167,39 @@ class EditorialDataCollectionBlockOutletComponent {
|
|
|
180
167
|
}) ?? [];
|
|
181
168
|
destroyRef = inject(DestroyRef);
|
|
182
169
|
adapterRegistry = new EditorialDataBlockAdapterRegistry(this.adapters);
|
|
183
|
-
adapterHost = viewChild('adapterHost', ...(ngDevMode ?
|
|
170
|
+
adapterHost = viewChild('adapterHost', { ...(ngDevMode ? { debugName: "adapterHost" } : /* istanbul ignore next */ {}), read: ViewContainerRef });
|
|
184
171
|
loadVersion = 0;
|
|
185
172
|
lastAdapterEventSignature = null;
|
|
186
173
|
componentRef = null;
|
|
187
174
|
renderedComponentType = null;
|
|
188
175
|
componentOutputSubscriptions = [];
|
|
189
|
-
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : []));
|
|
190
|
-
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : []));
|
|
191
|
-
solution = input(null, ...(ngDevMode ? [{ debugName: "solution" }] : []));
|
|
192
|
-
instance = input(null, ...(ngDevMode ? [{ debugName: "instance" }] : []));
|
|
176
|
+
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : /* istanbul ignore next */ []));
|
|
177
|
+
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : /* istanbul ignore next */ []));
|
|
178
|
+
solution = input(null, ...(ngDevMode ? [{ debugName: "solution" }] : /* istanbul ignore next */ []));
|
|
179
|
+
instance = input(null, ...(ngDevMode ? [{ debugName: "instance" }] : /* istanbul ignore next */ []));
|
|
193
180
|
runtimeContextChange = output();
|
|
194
181
|
operationalEvent = output();
|
|
195
|
-
resolvedComponent = signal(null, ...(ngDevMode ? [{ debugName: "resolvedComponent" }] : []));
|
|
196
|
-
state = signal({ kind: 'idle' }, ...(ngDevMode ? [{ debugName: "state" }] : []));
|
|
182
|
+
resolvedComponent = signal(null, ...(ngDevMode ? [{ debugName: "resolvedComponent" }] : /* istanbul ignore next */ []));
|
|
183
|
+
state = signal({ kind: 'idle' }, ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
|
|
197
184
|
adapterContext = computed(() => ({
|
|
198
185
|
block: this.block(),
|
|
199
186
|
runtimeContext: this.runtimeContext(),
|
|
200
187
|
solution: this.solution(),
|
|
201
188
|
instance: this.instance(),
|
|
202
189
|
resolvedFormConfig: resolveEditorialDataBlockFormConfig(this.block(), this.instance()),
|
|
203
|
-
}), ...(ngDevMode ? [{ debugName: "adapterContext" }] : []));
|
|
204
|
-
resolution = computed(() => resolveEditorialDataBlockFormConfigDetails(this.block(), this.instance()), ...(ngDevMode ? [{ debugName: "resolution" }] : []));
|
|
205
|
-
adapterResolution = computed(() => this.adapterRegistry.resolve(this.adapterContext()), ...(ngDevMode ? [{ debugName: "adapterResolution" }] : []));
|
|
206
|
-
adapter = computed(() => this.adapterResolution().adapter, ...(ngDevMode ? [{ debugName: "adapter" }] : []));
|
|
207
|
-
adapterComponent = computed(() => this.resolvedComponent() ?? this.adapter()?.component ?? null, ...(ngDevMode ? [{ debugName: "adapterComponent" }] : []));
|
|
190
|
+
}), ...(ngDevMode ? [{ debugName: "adapterContext" }] : /* istanbul ignore next */ []));
|
|
191
|
+
resolution = computed(() => resolveEditorialDataBlockFormConfigDetails(this.block(), this.instance()), ...(ngDevMode ? [{ debugName: "resolution" }] : /* istanbul ignore next */ []));
|
|
192
|
+
adapterResolution = computed(() => this.adapterRegistry.resolve(this.adapterContext()), ...(ngDevMode ? [{ debugName: "adapterResolution" }] : /* istanbul ignore next */ []));
|
|
193
|
+
adapter = computed(() => this.adapterResolution().adapter, ...(ngDevMode ? [{ debugName: "adapter" }] : /* istanbul ignore next */ []));
|
|
194
|
+
adapterComponent = computed(() => this.resolvedComponent() ?? this.adapter()?.component ?? null, ...(ngDevMode ? [{ debugName: "adapterComponent" }] : /* istanbul ignore next */ []));
|
|
208
195
|
loadingState = computed(() => {
|
|
209
196
|
const state = this.state();
|
|
210
197
|
return state.kind === 'loading' ? state : null;
|
|
211
|
-
}, ...(ngDevMode ? [{ debugName: "loadingState" }] : []));
|
|
198
|
+
}, ...(ngDevMode ? [{ debugName: "loadingState" }] : /* istanbul ignore next */ []));
|
|
212
199
|
errorState = computed(() => {
|
|
213
200
|
const state = this.state();
|
|
214
201
|
return state.kind === 'error' ? state : null;
|
|
215
|
-
}, ...(ngDevMode ? [{ debugName: "errorState" }] : []));
|
|
202
|
+
}, ...(ngDevMode ? [{ debugName: "errorState" }] : /* istanbul ignore next */ []));
|
|
216
203
|
adapterInputs = computed(() => {
|
|
217
204
|
const adapter = this.adapter();
|
|
218
205
|
if (!adapter) {
|
|
@@ -226,7 +213,7 @@ class EditorialDataCollectionBlockOutletComponent {
|
|
|
226
213
|
resolvedFormConfig: this.resolution().formConfig,
|
|
227
214
|
...(adapter.buildInputs?.(this.adapterContext()) ?? {}),
|
|
228
215
|
};
|
|
229
|
-
}, ...(ngDevMode ? [{ debugName: "adapterInputs" }] : []));
|
|
216
|
+
}, ...(ngDevMode ? [{ debugName: "adapterInputs" }] : /* istanbul ignore next */ []));
|
|
230
217
|
fallbackMessage = computed(() => {
|
|
231
218
|
const resolution = this.resolution();
|
|
232
219
|
const block = this.block();
|
|
@@ -266,11 +253,11 @@ class EditorialDataCollectionBlockOutletComponent {
|
|
|
266
253
|
formBlockId: block.formBlockId,
|
|
267
254
|
source: resolution.source,
|
|
268
255
|
});
|
|
269
|
-
}, ...(ngDevMode ? [{ debugName: "fallbackMessage" }] : []));
|
|
270
|
-
effectiveSurface = computed(() => this.block().surface === 'plain' ? 'plain' : 'card', ...(ngDevMode ? [{ debugName: "effectiveSurface" }] : []));
|
|
271
|
-
showBlockTitle = computed(() => Boolean(this.block().title) && !this.shouldHideBlockTitle(), ...(ngDevMode ? [{ debugName: "showBlockTitle" }] : []));
|
|
272
|
-
showBlockDescription = computed(() => Boolean(this.block().description) && !this.shouldHideBlockDescription(), ...(ngDevMode ? [{ debugName: "showBlockDescription" }] : []));
|
|
273
|
-
showBlockHeader = computed(() => this.showBlockTitle() || this.showBlockDescription(), ...(ngDevMode ? [{ debugName: "showBlockHeader" }] : []));
|
|
256
|
+
}, ...(ngDevMode ? [{ debugName: "fallbackMessage" }] : /* istanbul ignore next */ []));
|
|
257
|
+
effectiveSurface = computed(() => this.block().surface === 'plain' ? 'plain' : 'card', ...(ngDevMode ? [{ debugName: "effectiveSurface" }] : /* istanbul ignore next */ []));
|
|
258
|
+
showBlockTitle = computed(() => Boolean(this.block().title) && !this.shouldHideBlockTitle(), ...(ngDevMode ? [{ debugName: "showBlockTitle" }] : /* istanbul ignore next */ []));
|
|
259
|
+
showBlockDescription = computed(() => Boolean(this.block().description) && !this.shouldHideBlockDescription(), ...(ngDevMode ? [{ debugName: "showBlockDescription" }] : /* istanbul ignore next */ []));
|
|
260
|
+
showBlockHeader = computed(() => this.showBlockTitle() || this.showBlockDescription(), ...(ngDevMode ? [{ debugName: "showBlockHeader" }] : /* istanbul ignore next */ []));
|
|
274
261
|
constructor() {
|
|
275
262
|
this.destroyRef.onDestroy(() => {
|
|
276
263
|
this.destroyRenderedComponent();
|
|
@@ -539,8 +526,8 @@ class EditorialDataCollectionBlockOutletComponent {
|
|
|
539
526
|
const [section] = sections;
|
|
540
527
|
return section ?? null;
|
|
541
528
|
}
|
|
542
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
543
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
529
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialDataCollectionBlockOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
530
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EditorialDataCollectionBlockOutletComponent, isStandalone: true, selector: "praxis-editorial-data-collection-block-outlet", inputs: { block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: true, transformFunction: null }, runtimeContext: { classPropertyName: "runtimeContext", publicName: "runtimeContext", isSignal: true, isRequired: false, transformFunction: null }, solution: { classPropertyName: "solution", publicName: "solution", isSignal: true, isRequired: false, transformFunction: null }, instance: { classPropertyName: "instance", publicName: "instance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { runtimeContextChange: "runtimeContextChange", operationalEvent: "operationalEvent" }, viewQueries: [{ propertyName: "adapterHost", first: true, predicate: ["adapterHost"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
|
|
544
531
|
<section
|
|
545
532
|
class="data-block"
|
|
546
533
|
[class.block-card]="effectiveSurface() === 'card'"
|
|
@@ -583,11 +570,11 @@ class EditorialDataCollectionBlockOutletComponent {
|
|
|
583
570
|
}
|
|
584
571
|
</div>
|
|
585
572
|
</section>
|
|
586
|
-
`, isInline: true, styles: [":host{display:block;color:var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f))}.data-block{display:grid;gap:16px;font-family:var(--editorial-body-font-family, inherit)}.block-card{display:grid;gap:16px;padding:clamp(18px,2vw,24px);border-radius:var(--editorial-card-radius, 18px);background:var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa));border:var(--editorial-card-border-width, 1px) solid color-mix(in srgb,var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 65%,transparent);box-shadow:var(--editorial-card-shadow, none)}.block-plain{padding:0;border:0;background:transparent;box-shadow:none;gap:0}.block-header{display:grid;gap:8px}.block-plain .block-header{margin-bottom:16px;padding-bottom:4px}.block-body{min-width:0}h3,p{margin:0}.block-title{font-family:var(--editorial-title-font-family, var(--editorial-body-font-family, inherit));font-size:var(--editorial-step-title-size, 1.15rem);line-height:1.15;color:var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f))}.description,.feedback{color:var(--editorial-text-secondary, var(--md-sys-color-on-surface-variant, #49454f));font-size:var(--editorial-body-size, .95rem);line-height:1.55}.feedback{display:grid;gap:6px;padding:12px 14px;border-radius:var(--editorial-card-radius, 14px);border:var(--editorial-card-border-width, 1px) solid color-mix(in srgb,var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 70%,transparent);background:color-mix(in srgb,var(--editorial-surface-primary, var(--md-sys-color-surface, #fff)) 94%,var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa)) 6%)}.feedback strong{color:var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f));font-family:var(--editorial-title-font-family, var(--editorial-body-font-family, inherit))}.error{border-color:color-mix(in srgb,var(--md-sys-color-error, #b3261e) 50%,transparent);background:color-mix(in srgb,var(--md-sys-color-error-container, #f9dedc) 35%,var(--md-sys-color-surface, #fff))}.details{font-size:.9rem}\n"],
|
|
573
|
+
`, isInline: true, styles: [":host{display:block;color:var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f))}.data-block{display:grid;gap:16px;font-family:var(--editorial-body-font-family, inherit)}.block-card{display:grid;gap:16px;padding:clamp(18px,2vw,24px);border-radius:var(--editorial-card-radius, 18px);background:var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa));border:var(--editorial-card-border-width, 1px) solid color-mix(in srgb,var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 65%,transparent);box-shadow:var(--editorial-card-shadow, none)}.block-plain{padding:0;border:0;background:transparent;box-shadow:none;gap:0}.block-header{display:grid;gap:8px}.block-plain .block-header{margin-bottom:16px;padding-bottom:4px}.block-body{min-width:0}h3,p{margin:0}.block-title{font-family:var(--editorial-title-font-family, var(--editorial-body-font-family, inherit));font-size:var(--editorial-step-title-size, 1.15rem);line-height:1.15;color:var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f))}.description,.feedback{color:var(--editorial-text-secondary, var(--md-sys-color-on-surface-variant, #49454f));font-size:var(--editorial-body-size, .95rem);line-height:1.55}.feedback{display:grid;gap:6px;padding:12px 14px;border-radius:var(--editorial-card-radius, 14px);border:var(--editorial-card-border-width, 1px) solid color-mix(in srgb,var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 70%,transparent);background:color-mix(in srgb,var(--editorial-surface-primary, var(--md-sys-color-surface, #fff)) 94%,var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa)) 6%)}.feedback strong{color:var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f));font-family:var(--editorial-title-font-family, var(--editorial-body-font-family, inherit))}.error{border-color:color-mix(in srgb,var(--md-sys-color-error, #b3261e) 50%,transparent);background:color-mix(in srgb,var(--md-sys-color-error-container, #f9dedc) 35%,var(--md-sys-color-surface, #fff))}.details{font-size:.9rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
587
574
|
}
|
|
588
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
575
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialDataCollectionBlockOutletComponent, decorators: [{
|
|
589
576
|
type: Component,
|
|
590
|
-
args: [{ selector: 'praxis-editorial-data-collection-block-outlet', standalone: true, imports: [
|
|
577
|
+
args: [{ selector: 'praxis-editorial-data-collection-block-outlet', standalone: true, imports: [], template: `
|
|
591
578
|
<section
|
|
592
579
|
class="data-block"
|
|
593
580
|
[class.block-card]="effectiveSurface() === 'card'"
|
|
@@ -674,13 +661,13 @@ function normalizeComparableCopy(value) {
|
|
|
674
661
|
}
|
|
675
662
|
|
|
676
663
|
class EditorialIntroHeroBlockComponent {
|
|
677
|
-
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : []));
|
|
664
|
+
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : /* istanbul ignore next */ []));
|
|
678
665
|
actionTriggered = output();
|
|
679
666
|
triggerAction(action) {
|
|
680
667
|
this.actionTriggered.emit(action.actionId);
|
|
681
668
|
}
|
|
682
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
683
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
669
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialIntroHeroBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
670
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EditorialIntroHeroBlockComponent, isStandalone: true, selector: "praxis-editorial-intro-hero-block", inputs: { block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { actionTriggered: "actionTriggered" }, ngImport: i0, template: `
|
|
684
671
|
<section class="intro-hero" [attr.data-align]="block().align ?? 'center'">
|
|
685
672
|
@if (block().icon?.name) {
|
|
686
673
|
<div class="hero-icon"><mat-icon aria-hidden="true" [praxisIcon]="block().icon?.name"></mat-icon></div>
|
|
@@ -742,11 +729,11 @@ class EditorialIntroHeroBlockComponent {
|
|
|
742
729
|
</div>
|
|
743
730
|
}
|
|
744
731
|
</section>
|
|
745
|
-
`, isInline: true, styles: [".intro-hero{display:grid;gap:18px;text-align:center}.intro-hero[data-align=left]{text-align:left}.hero-icon{width:64px;height:64px;border-radius:18px;background:color-mix(in srgb,var(--editorial-accent, #264a8a) 18%,#fff);color:var(--editorial-accent, #264a8a);display:grid;place-items:center;justify-self:center;font-weight:700}.hero-icon mat-icon,.highlight-icon{width:22px;height:22px;font-size:22px;line-height:22px}.intro-hero[data-align=left] .hero-icon{justify-self:start}.hero-copy{display:grid;gap:10px}.hero-copy h3,.hero-copy p{margin:0}.hero-copy h3{font-size:var(--editorial-hero-title-size, 1.75rem);line-height:1.15}.subtitle,.description{font-size:var(--editorial-body-size, 1rem);color:var(--editorial-text-secondary, #7b8aa0)}.hero-highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.hero-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.intro-hero[data-align=left] .hero-actions{justify-content:flex-start}.hero-action{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border-radius:var(--editorial-button-radius, var(--editorial-card-radius, 18px));border:1px solid transparent;cursor:pointer;font:inherit;font-weight:600;transition:background-color .12s ease,color .12s ease,border-color .12s ease,box-shadow .12s ease}.hero-action mat-icon{width:18px;height:18px;font-size:18px;line-height:18px}.hero-action.primary{background:var(--editorial-cta-primary, var(--editorial-accent, #264a8a));color:var(--editorial-cta-primary-text, #fff);box-shadow:var(--editorial-card-shadow, none)}.hero-action.secondary{background:color-mix(in srgb,var(--editorial-accent, #264a8a) 8%,#fff);border-color:color-mix(in srgb,var(--editorial-accent, #264a8a) 20%,transparent);color:var(--editorial-accent, #264a8a)}.highlight-card{display:grid;gap:6px;padding:14px;border-radius:var(--editorial-card-radius, 18px);background:var(--editorial-surface-primary, #fff);border:1px solid var(--editorial-border-color, #d9deea);box-shadow:var(--editorial-card-shadow, none)}.highlight-card p{margin:0;color:var(--editorial-text-secondary, #7b8aa0)}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
732
|
+
`, isInline: true, styles: [".intro-hero{display:grid;gap:18px;text-align:center}.intro-hero[data-align=left]{text-align:left}.hero-icon{width:64px;height:64px;border-radius:18px;background:color-mix(in srgb,var(--editorial-accent, #264a8a) 18%,#fff);color:var(--editorial-accent, #264a8a);display:grid;place-items:center;justify-self:center;font-weight:700}.hero-icon mat-icon,.highlight-icon{width:22px;height:22px;font-size:22px;line-height:22px}.intro-hero[data-align=left] .hero-icon{justify-self:start}.hero-copy{display:grid;gap:10px}.hero-copy h3,.hero-copy p{margin:0}.hero-copy h3{font-size:var(--editorial-hero-title-size, 1.75rem);line-height:1.15}.subtitle,.description{font-size:var(--editorial-body-size, 1rem);color:var(--editorial-text-secondary, #7b8aa0)}.hero-highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.hero-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.intro-hero[data-align=left] .hero-actions{justify-content:flex-start}.hero-action{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border-radius:var(--editorial-button-radius, var(--editorial-card-radius, 18px));border:1px solid transparent;cursor:pointer;font:inherit;font-weight:600;transition:background-color .12s ease,color .12s ease,border-color .12s ease,box-shadow .12s ease}.hero-action mat-icon{width:18px;height:18px;font-size:18px;line-height:18px}.hero-action.primary{background:var(--editorial-cta-primary, var(--editorial-accent, #264a8a));color:var(--editorial-cta-primary-text, #fff);box-shadow:var(--editorial-card-shadow, none)}.hero-action.secondary{background:color-mix(in srgb,var(--editorial-accent, #264a8a) 8%,#fff);border-color:color-mix(in srgb,var(--editorial-accent, #264a8a) 20%,transparent);color:var(--editorial-accent, #264a8a)}.highlight-card{display:grid;gap:6px;padding:14px;border-radius:var(--editorial-card-radius, 18px);background:var(--editorial-surface-primary, #fff);border:1px solid var(--editorial-border-color, #d9deea);box-shadow:var(--editorial-card-shadow, none)}.highlight-card p{margin:0;color:var(--editorial-text-secondary, #7b8aa0)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
746
733
|
}
|
|
747
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
734
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialIntroHeroBlockComponent, decorators: [{
|
|
748
735
|
type: Component,
|
|
749
|
-
args: [{ selector: 'praxis-editorial-intro-hero-block', standalone: true, imports: [
|
|
736
|
+
args: [{ selector: 'praxis-editorial-intro-hero-block', standalone: true, imports: [MatIconModule, PraxisIconDirective], template: `
|
|
750
737
|
<section class="intro-hero" [attr.data-align]="block().align ?? 'center'">
|
|
751
738
|
@if (block().icon?.name) {
|
|
752
739
|
<div class="hero-icon"><mat-icon aria-hidden="true" [praxisIcon]="block().icon?.name"></mat-icon></div>
|
|
@@ -813,8 +800,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
813
800
|
|
|
814
801
|
class EditorialReviewSectionsBlockComponent {
|
|
815
802
|
i18n = inject(PraxisI18nService);
|
|
816
|
-
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : []));
|
|
817
|
-
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : []));
|
|
803
|
+
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : /* istanbul ignore next */ []));
|
|
804
|
+
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : /* istanbul ignore next */ []));
|
|
818
805
|
visibleFields(fields) {
|
|
819
806
|
return fields.filter((field) => {
|
|
820
807
|
if (!field.hideWhenEmpty) {
|
|
@@ -893,8 +880,8 @@ class EditorialReviewSectionsBlockComponent {
|
|
|
893
880
|
t(key, fallback) {
|
|
894
881
|
return this.i18n.t(`praxis.editorialForms.${key}`, undefined, fallback);
|
|
895
882
|
}
|
|
896
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
897
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
883
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialReviewSectionsBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
884
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EditorialReviewSectionsBlockComponent, isStandalone: true, selector: "praxis-editorial-review-sections-block", inputs: { block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: true, transformFunction: null }, runtimeContext: { classPropertyName: "runtimeContext", publicName: "runtimeContext", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
898
885
|
<section class="review-sections">
|
|
899
886
|
@if (block().title) {
|
|
900
887
|
<header class="review-header">
|
|
@@ -926,11 +913,11 @@ class EditorialReviewSectionsBlockComponent {
|
|
|
926
913
|
}
|
|
927
914
|
</div>
|
|
928
915
|
</section>
|
|
929
|
-
`, isInline: true, styles: [".review-sections,.review-header{display:grid;gap:10px}.review-header h3,.review-header p,.review-section h4{margin:0}.review-header p{color:var(--editorial-text-secondary, #7b8aa0)}.review-sections-grid{display:grid;gap:14px}.review-section{display:grid;gap:12px;padding:18px;border-radius:var(--editorial-card-radius, 18px);border:1px solid var(--editorial-border-color, #d9deea);background:var(--editorial-surface-primary, #fff);box-shadow:var(--editorial-card-shadow, none)}.review-section-header{display:inline-flex;align-items:center;gap:10px}.section-icon{display:grid;place-items:center;width:18px;height:18px;color:var(--editorial-accent, #264a8a);font-size:18px;line-height:18px}.review-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0}.review-grid dt{margin-bottom:4px;color:var(--editorial-text-secondary, #7b8aa0);font-size:.82rem}.review-grid dd{margin:0;font-weight:600;color:var(--editorial-text-primary, #24324a)}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
916
|
+
`, isInline: true, styles: [".review-sections,.review-header{display:grid;gap:10px}.review-header h3,.review-header p,.review-section h4{margin:0}.review-header p{color:var(--editorial-text-secondary, #7b8aa0)}.review-sections-grid{display:grid;gap:14px}.review-section{display:grid;gap:12px;padding:18px;border-radius:var(--editorial-card-radius, 18px);border:1px solid var(--editorial-border-color, #d9deea);background:var(--editorial-surface-primary, #fff);box-shadow:var(--editorial-card-shadow, none)}.review-section-header{display:inline-flex;align-items:center;gap:10px}.section-icon{display:grid;place-items:center;width:18px;height:18px;color:var(--editorial-accent, #264a8a);font-size:18px;line-height:18px}.review-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0}.review-grid dt{margin-bottom:4px;color:var(--editorial-text-secondary, #7b8aa0);font-size:.82rem}.review-grid dd{margin:0;font-weight:600;color:var(--editorial-text-primary, #24324a)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
930
917
|
}
|
|
931
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
918
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialReviewSectionsBlockComponent, decorators: [{
|
|
932
919
|
type: Component,
|
|
933
|
-
args: [{ selector: 'praxis-editorial-review-sections-block', standalone: true, imports: [
|
|
920
|
+
args: [{ selector: 'praxis-editorial-review-sections-block', standalone: true, imports: [MatIconModule, PraxisIconDirective], template: `
|
|
934
921
|
<section class="review-sections">
|
|
935
922
|
@if (block().title) {
|
|
936
923
|
<header class="review-header">
|
|
@@ -967,17 +954,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
967
954
|
|
|
968
955
|
class EditorialSelectionCardsBlockComponent {
|
|
969
956
|
i18n = inject(PraxisI18nService);
|
|
970
|
-
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : []));
|
|
971
|
-
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : []));
|
|
957
|
+
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : /* istanbul ignore next */ []));
|
|
958
|
+
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : /* istanbul ignore next */ []));
|
|
972
959
|
runtimeContextChange = output();
|
|
973
960
|
valueChange = output();
|
|
974
|
-
groupId = computed(() => `selection-group-${this.block().blockId}`, ...(ngDevMode ? [{ debugName: "groupId" }] : []));
|
|
961
|
+
groupId = computed(() => `selection-group-${this.block().blockId}`, ...(ngDevMode ? [{ debugName: "groupId" }] : /* istanbul ignore next */ []));
|
|
975
962
|
gridTemplateColumns = computed(() => {
|
|
976
963
|
const columns = this.block().columns ?? 2;
|
|
977
964
|
return `repeat(${columns}, minmax(0, 1fr))`;
|
|
978
|
-
}, ...(ngDevMode ? [{ debugName: "gridTemplateColumns" }] : []));
|
|
965
|
+
}, ...(ngDevMode ? [{ debugName: "gridTemplateColumns" }] : /* istanbul ignore next */ []));
|
|
979
966
|
groupAriaLabel = computed(() => this.block().title
|
|
980
|
-
|| this.t('selection.group.label', 'Grupo de selecao'), ...(ngDevMode ? [{ debugName: "groupAriaLabel" }] : []));
|
|
967
|
+
|| this.t('selection.group.label', 'Grupo de selecao'), ...(ngDevMode ? [{ debugName: "groupAriaLabel" }] : /* istanbul ignore next */ []));
|
|
981
968
|
isSelected(value) {
|
|
982
969
|
const currentValue = this.currentValue();
|
|
983
970
|
if (Array.isArray(currentValue)) {
|
|
@@ -1097,8 +1084,8 @@ class EditorialSelectionCardsBlockComponent {
|
|
|
1097
1084
|
t(key, fallback) {
|
|
1098
1085
|
return this.i18n.t(`praxis.editorialForms.${key}`, undefined, fallback);
|
|
1099
1086
|
}
|
|
1100
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1101
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1087
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialSelectionCardsBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1088
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EditorialSelectionCardsBlockComponent, isStandalone: true, selector: "praxis-editorial-selection-cards-block", inputs: { block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: true, transformFunction: null }, runtimeContext: { classPropertyName: "runtimeContext", publicName: "runtimeContext", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { runtimeContextChange: "runtimeContextChange", valueChange: "valueChange" }, ngImport: i0, template: `
|
|
1102
1089
|
<section class="selection-block">
|
|
1103
1090
|
@if (block().title) {
|
|
1104
1091
|
<header class="selection-header">
|
|
@@ -1155,11 +1142,11 @@ class EditorialSelectionCardsBlockComponent {
|
|
|
1155
1142
|
}
|
|
1156
1143
|
</div>
|
|
1157
1144
|
</section>
|
|
1158
|
-
`, isInline: true, styles: [".selection-block,.selection-header{display:grid;gap:10px}.selection-header h3,.selection-header p{margin:0}.selection-header p{color:var(--editorial-text-secondary, #7b8aa0)}.selection-grid{display:grid;gap:14px}.selection-card{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-height:72px;padding:16px;border-radius:var(--editorial-card-radius, 18px);border:1px solid var(--editorial-border-color, #d9deea);background:var(--editorial-surface-primary, #fff);color:var(--editorial-text-primary, #24324a);box-shadow:var(--editorial-card-shadow, none);cursor:pointer;text-align:left;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease}.selection-card:hover:not([disabled]){transform:translateY(-1px)}.selection-card.selected{border-color:var(--editorial-accent, #264a8a);box-shadow:0 0 0 2px color-mix(in srgb,var(--editorial-accent, #264a8a) 22%,transparent);background:color-mix(in srgb,var(--editorial-accent, #264a8a) 8%,#fff)}.selection-card[data-variant=accent]{background:color-mix(in srgb,var(--editorial-accent, #264a8a) 4%,#fff);border-color:color-mix(in srgb,var(--editorial-accent, #264a8a) 18%,transparent)}.selection-card[data-variant=outline]{box-shadow:none;background:transparent}.selection-card[data-tone=accent] .selection-icon{background:color-mix(in srgb,var(--editorial-accent, #264a8a) 18%,#fff);color:var(--editorial-accent, #264a8a)}.selection-card[data-tone=muted] .selection-icon{background:var(--editorial-surface-secondary, #eef2f8);color:var(--editorial-text-secondary, #7b8aa0)}.selection-card[disabled]{opacity:.5;cursor:not-allowed}.selection-leading{display:inline-flex;align-items:center;gap:12px;min-width:0;flex:1 1 auto}.selection-grid[data-icon-position=top] .selection-card{flex-direction:column;align-items:stretch}.selection-grid[data-icon-position=top] .selection-leading{display:grid;gap:10px}.selection-grid[data-icon-position=top] .selection-check{align-self:flex-end}.selection-icon,.selection-check{display:grid;place-items:center;width:28px;height:28px;border-radius:999px;background:color-mix(in srgb,var(--editorial-accent, #264a8a) 14%,#fff);color:var(--editorial-accent, #264a8a);font-size:.75rem;font-weight:700;flex:0 0 auto}.selection-icon,.selection-check mat-icon{width:18px;height:18px;font-size:18px;line-height:18px}.selection-copy{display:grid;gap:4px;min-width:0}.selection-copy span{color:var(--editorial-text-secondary, #7b8aa0);font-size:.9rem}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
1145
|
+
`, isInline: true, styles: [".selection-block,.selection-header{display:grid;gap:10px}.selection-header h3,.selection-header p{margin:0}.selection-header p{color:var(--editorial-text-secondary, #7b8aa0)}.selection-grid{display:grid;gap:14px}.selection-card{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-height:72px;padding:16px;border-radius:var(--editorial-card-radius, 18px);border:1px solid var(--editorial-border-color, #d9deea);background:var(--editorial-surface-primary, #fff);color:var(--editorial-text-primary, #24324a);box-shadow:var(--editorial-card-shadow, none);cursor:pointer;text-align:left;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease}.selection-card:hover:not([disabled]){transform:translateY(-1px)}.selection-card.selected{border-color:var(--editorial-accent, #264a8a);box-shadow:0 0 0 2px color-mix(in srgb,var(--editorial-accent, #264a8a) 22%,transparent);background:color-mix(in srgb,var(--editorial-accent, #264a8a) 8%,#fff)}.selection-card[data-variant=accent]{background:color-mix(in srgb,var(--editorial-accent, #264a8a) 4%,#fff);border-color:color-mix(in srgb,var(--editorial-accent, #264a8a) 18%,transparent)}.selection-card[data-variant=outline]{box-shadow:none;background:transparent}.selection-card[data-tone=accent] .selection-icon{background:color-mix(in srgb,var(--editorial-accent, #264a8a) 18%,#fff);color:var(--editorial-accent, #264a8a)}.selection-card[data-tone=muted] .selection-icon{background:var(--editorial-surface-secondary, #eef2f8);color:var(--editorial-text-secondary, #7b8aa0)}.selection-card[disabled]{opacity:.5;cursor:not-allowed}.selection-leading{display:inline-flex;align-items:center;gap:12px;min-width:0;flex:1 1 auto}.selection-grid[data-icon-position=top] .selection-card{flex-direction:column;align-items:stretch}.selection-grid[data-icon-position=top] .selection-leading{display:grid;gap:10px}.selection-grid[data-icon-position=top] .selection-check{align-self:flex-end}.selection-icon,.selection-check{display:grid;place-items:center;width:28px;height:28px;border-radius:999px;background:color-mix(in srgb,var(--editorial-accent, #264a8a) 14%,#fff);color:var(--editorial-accent, #264a8a);font-size:.75rem;font-weight:700;flex:0 0 auto}.selection-icon,.selection-check mat-icon{width:18px;height:18px;font-size:18px;line-height:18px}.selection-copy{display:grid;gap:4px;min-width:0}.selection-copy span{color:var(--editorial-text-secondary, #7b8aa0);font-size:.9rem}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1159
1146
|
}
|
|
1160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialSelectionCardsBlockComponent, decorators: [{
|
|
1161
1148
|
type: Component,
|
|
1162
|
-
args: [{ selector: 'praxis-editorial-selection-cards-block', standalone: true, imports: [
|
|
1149
|
+
args: [{ selector: 'praxis-editorial-selection-cards-block', standalone: true, imports: [MatIconModule, PraxisIconDirective], template: `
|
|
1163
1150
|
<section class="selection-block">
|
|
1164
1151
|
@if (block().title) {
|
|
1165
1152
|
<header class="selection-header">
|
|
@@ -1220,13 +1207,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
1220
1207
|
}], propDecorators: { block: [{ type: i0.Input, args: [{ isSignal: true, alias: "block", required: true }] }], runtimeContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "runtimeContext", required: false }] }], runtimeContextChange: [{ type: i0.Output, args: ["runtimeContextChange"] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
|
|
1221
1208
|
|
|
1222
1209
|
class EditorialSuccessPanelBlockComponent {
|
|
1223
|
-
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : []));
|
|
1210
|
+
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : /* istanbul ignore next */ []));
|
|
1224
1211
|
actionTriggered = output();
|
|
1225
1212
|
triggerAction(action) {
|
|
1226
1213
|
this.actionTriggered.emit(action.actionId);
|
|
1227
1214
|
}
|
|
1228
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1229
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1215
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialSuccessPanelBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1216
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EditorialSuccessPanelBlockComponent, isStandalone: true, selector: "praxis-editorial-success-panel-block", inputs: { block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { actionTriggered: "actionTriggered" }, ngImport: i0, template: `
|
|
1230
1217
|
<section class="success-panel" [attr.data-tone]="block().tone ?? 'success'">
|
|
1231
1218
|
@if (block().icon?.name) {
|
|
1232
1219
|
<div class="success-icon"><mat-icon aria-hidden="true" [praxisIcon]="block().icon?.name"></mat-icon></div>
|
|
@@ -1254,11 +1241,11 @@ class EditorialSuccessPanelBlockComponent {
|
|
|
1254
1241
|
</button>
|
|
1255
1242
|
}
|
|
1256
1243
|
</section>
|
|
1257
|
-
`, isInline: true, styles: [".success-panel{display:grid;gap:12px;text-align:center;padding:20px;border-radius:var(--editorial-card-radius, 18px);background:color-mix(in srgb,var(--editorial-success, #35b37e) 10%,#fff);border:1px solid color-mix(in srgb,var(--editorial-success, #35b37e) 32%,transparent);box-shadow:var(--editorial-card-shadow, none)}.success-panel[data-tone=accent]{background:color-mix(in srgb,var(--editorial-accent, #264a8a) 10%,#fff);border-color:color-mix(in srgb,var(--editorial-accent, #264a8a) 24%,transparent)}.success-panel[data-tone=neutral]{background:var(--editorial-surface-primary, #fff);border-color:var(--editorial-border-color, #d9deea)}.success-panel h3,.success-panel p,.success-panel ul{margin:0}.success-panel ul{padding-left:20px;text-align:left}.secondary-message{color:var(--editorial-text-secondary, #7b8aa0);font-size:var(--editorial-body-size, 1rem)}.success-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:999px;background:var(--editorial-success, #35b37e);color:#fff;justify-self:center;font-weight:700}.success-panel[data-tone=accent] .success-icon{background:var(--editorial-accent, #264a8a)}.success-panel[data-tone=neutral] .success-icon{background:var(--editorial-surface-secondary, #eef2f8);color:var(--editorial-text-primary, #24324a)}.success-icon mat-icon{width:20px;height:20px;font-size:20px;line-height:20px}.success-action{justify-self:center;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border:0;border-radius:var(--editorial-button-radius, var(--editorial-card-radius, 18px));background:var(--editorial-cta-primary, var(--editorial-success, #35b37e));color:var(--editorial-cta-primary-text, #fff);box-shadow:var(--editorial-card-shadow, none);cursor:pointer;font:inherit;font-weight:600}.success-action mat-icon{width:18px;height:18px;font-size:18px;line-height:18px}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
1244
|
+
`, isInline: true, styles: [".success-panel{display:grid;gap:12px;text-align:center;padding:20px;border-radius:var(--editorial-card-radius, 18px);background:color-mix(in srgb,var(--editorial-success, #35b37e) 10%,#fff);border:1px solid color-mix(in srgb,var(--editorial-success, #35b37e) 32%,transparent);box-shadow:var(--editorial-card-shadow, none)}.success-panel[data-tone=accent]{background:color-mix(in srgb,var(--editorial-accent, #264a8a) 10%,#fff);border-color:color-mix(in srgb,var(--editorial-accent, #264a8a) 24%,transparent)}.success-panel[data-tone=neutral]{background:var(--editorial-surface-primary, #fff);border-color:var(--editorial-border-color, #d9deea)}.success-panel h3,.success-panel p,.success-panel ul{margin:0}.success-panel ul{padding-left:20px;text-align:left}.secondary-message{color:var(--editorial-text-secondary, #7b8aa0);font-size:var(--editorial-body-size, 1rem)}.success-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:999px;background:var(--editorial-success, #35b37e);color:#fff;justify-self:center;font-weight:700}.success-panel[data-tone=accent] .success-icon{background:var(--editorial-accent, #264a8a)}.success-panel[data-tone=neutral] .success-icon{background:var(--editorial-surface-secondary, #eef2f8);color:var(--editorial-text-primary, #24324a)}.success-icon mat-icon{width:20px;height:20px;font-size:20px;line-height:20px}.success-action{justify-self:center;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border:0;border-radius:var(--editorial-button-radius, var(--editorial-card-radius, 18px));background:var(--editorial-cta-primary, var(--editorial-success, #35b37e));color:var(--editorial-cta-primary-text, #fff);box-shadow:var(--editorial-card-shadow, none);cursor:pointer;font:inherit;font-weight:600}.success-action mat-icon{width:18px;height:18px;font-size:18px;line-height:18px}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1258
1245
|
}
|
|
1259
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialSuccessPanelBlockComponent, decorators: [{
|
|
1260
1247
|
type: Component,
|
|
1261
|
-
args: [{ selector: 'praxis-editorial-success-panel-block', standalone: true, imports: [
|
|
1248
|
+
args: [{ selector: 'praxis-editorial-success-panel-block', standalone: true, imports: [MatIconModule, PraxisIconDirective], template: `
|
|
1262
1249
|
<section class="success-panel" [attr.data-tone]="block().tone ?? 'success'">
|
|
1263
1250
|
@if (block().icon?.name) {
|
|
1264
1251
|
<div class="success-icon"><mat-icon aria-hidden="true" [praxisIcon]="block().icon?.name"></mat-icon></div>
|
|
@@ -1290,27 +1277,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
1290
1277
|
}], propDecorators: { block: [{ type: i0.Input, args: [{ isSignal: true, alias: "block", required: true }] }], actionTriggered: [{ type: i0.Output, args: ["actionTriggered"] }] } });
|
|
1291
1278
|
|
|
1292
1279
|
class EditorialBlockRendererComponent {
|
|
1293
|
-
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : []));
|
|
1294
|
-
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : []));
|
|
1295
|
-
solution = input(null, ...(ngDevMode ? [{ debugName: "solution" }] : []));
|
|
1296
|
-
instance = input(null, ...(ngDevMode ? [{ debugName: "instance" }] : []));
|
|
1280
|
+
block = input.required(...(ngDevMode ? [{ debugName: "block" }] : /* istanbul ignore next */ []));
|
|
1281
|
+
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : /* istanbul ignore next */ []));
|
|
1282
|
+
solution = input(null, ...(ngDevMode ? [{ debugName: "solution" }] : /* istanbul ignore next */ []));
|
|
1283
|
+
instance = input(null, ...(ngDevMode ? [{ debugName: "instance" }] : /* istanbul ignore next */ []));
|
|
1297
1284
|
runtimeContextChange = output();
|
|
1298
1285
|
operationalEvent = output();
|
|
1299
1286
|
blockAction = output();
|
|
1300
|
-
introHero = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "introHero" }] : []));
|
|
1301
|
-
hero = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "hero" }] : []));
|
|
1302
|
-
richText = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "richText" }] : []));
|
|
1303
|
-
policyList = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "policyList" }] : []));
|
|
1304
|
-
timeline = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "timeline" }] : []));
|
|
1305
|
-
review = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "review" }] : []));
|
|
1306
|
-
reviewSections = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "reviewSections" }] : []));
|
|
1307
|
-
contextSummary = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "contextSummary" }] : []));
|
|
1308
|
-
selectionCards = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "selectionCards" }] : []));
|
|
1309
|
-
infoCards = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "infoCards" }] : []));
|
|
1310
|
-
successPanel = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "successPanel" }] : []));
|
|
1311
|
-
faq = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "faq" }] : []));
|
|
1312
|
-
dataCollection = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "dataCollection" }] : []));
|
|
1313
|
-
customWidget = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "customWidget" }] : []));
|
|
1287
|
+
introHero = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "introHero" }] : /* istanbul ignore next */ []));
|
|
1288
|
+
hero = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "hero" }] : /* istanbul ignore next */ []));
|
|
1289
|
+
richText = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "richText" }] : /* istanbul ignore next */ []));
|
|
1290
|
+
policyList = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "policyList" }] : /* istanbul ignore next */ []));
|
|
1291
|
+
timeline = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "timeline" }] : /* istanbul ignore next */ []));
|
|
1292
|
+
review = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "review" }] : /* istanbul ignore next */ []));
|
|
1293
|
+
reviewSections = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "reviewSections" }] : /* istanbul ignore next */ []));
|
|
1294
|
+
contextSummary = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "contextSummary" }] : /* istanbul ignore next */ []));
|
|
1295
|
+
selectionCards = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "selectionCards" }] : /* istanbul ignore next */ []));
|
|
1296
|
+
infoCards = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "infoCards" }] : /* istanbul ignore next */ []));
|
|
1297
|
+
successPanel = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "successPanel" }] : /* istanbul ignore next */ []));
|
|
1298
|
+
faq = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "faq" }] : /* istanbul ignore next */ []));
|
|
1299
|
+
dataCollection = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "dataCollection" }] : /* istanbul ignore next */ []));
|
|
1300
|
+
customWidget = computed(() => this.block(), ...(ngDevMode ? [{ debugName: "customWidget" }] : /* istanbul ignore next */ []));
|
|
1314
1301
|
resolveValue(valuePath, fallback = '-') {
|
|
1315
1302
|
if (!valuePath) {
|
|
1316
1303
|
return fallback;
|
|
@@ -1325,8 +1312,8 @@ class EditorialBlockRendererComponent {
|
|
|
1325
1312
|
}
|
|
1326
1313
|
return valuePath ? `${contextPath}.${valuePath}` : contextPath;
|
|
1327
1314
|
}
|
|
1328
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1329
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1315
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialBlockRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1316
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EditorialBlockRendererComponent, isStandalone: true, selector: "praxis-editorial-block-renderer", inputs: { block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: true, transformFunction: null }, runtimeContext: { classPropertyName: "runtimeContext", publicName: "runtimeContext", isSignal: true, isRequired: false, transformFunction: null }, solution: { classPropertyName: "solution", publicName: "solution", isSignal: true, isRequired: false, transformFunction: null }, instance: { classPropertyName: "instance", publicName: "instance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { runtimeContextChange: "runtimeContextChange", operationalEvent: "operationalEvent", blockAction: "blockAction" }, ngImport: i0, template: `
|
|
1330
1317
|
@switch (block().kind) {
|
|
1331
1318
|
@case ('introHero') {
|
|
1332
1319
|
<praxis-editorial-intro-hero-block
|
|
@@ -1500,18 +1487,17 @@ class EditorialBlockRendererComponent {
|
|
|
1500
1487
|
/>
|
|
1501
1488
|
}
|
|
1502
1489
|
}
|
|
1503
|
-
`, isInline: true, styles: [":host{display:block}.block-card{display:grid;gap:12px;padding:18px;border-radius:18px;background:var(--md-sys-color-surface-container-low, #f7f2fa);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 65%,transparent)}.eyebrow{margin:0;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--md-sys-color-primary, #6750a4)}h3,p,ul,ol,dl{margin:0}.description,.content,.timeline-item span,.policy-item p,.info-card p,.faq-item p{color:var(--md-sys-color-on-surface-variant, #49454f)}.hero-block h3 span{color:var(--md-sys-color-primary, #6750a4)}.review-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.review-grid dt{margin-bottom:4px;font-size:.78rem;color:var(--md-sys-color-on-surface-variant, #49454f)}.review-grid dd{margin:0;font-weight:600}.list-reset{list-style:none;padding:0;margin:0}.stack-sm{display:grid;gap:10px}.timeline{display:grid;gap:12px;padding-left:18px;margin:0}.timeline-item{display:grid;gap:4px}.policy-item,.faq-item,.info-card{padding:12px;border-radius:14px;background:var(--md-sys-color-surface, #fff)}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.notice-block{border-left:4px solid var(--md-sys-color-primary, #6750a4)}\n"], dependencies: [{ kind: "
|
|
1490
|
+
`, isInline: true, styles: [":host{display:block}.block-card{display:grid;gap:12px;padding:18px;border-radius:18px;background:var(--md-sys-color-surface-container-low, #f7f2fa);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 65%,transparent)}.eyebrow{margin:0;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--md-sys-color-primary, #6750a4)}h3,p,ul,ol,dl{margin:0}.description,.content,.timeline-item span,.policy-item p,.info-card p,.faq-item p{color:var(--md-sys-color-on-surface-variant, #49454f)}.hero-block h3 span{color:var(--md-sys-color-primary, #6750a4)}.review-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.review-grid dt{margin-bottom:4px;font-size:.78rem;color:var(--md-sys-color-on-surface-variant, #49454f)}.review-grid dd{margin:0;font-weight:600}.list-reset{list-style:none;padding:0;margin:0}.stack-sm{display:grid;gap:10px}.timeline{display:grid;gap:12px;padding-left:18px;margin:0}.timeline-item{display:grid;gap:4px}.policy-item,.faq-item,.info-card{padding:12px;border-radius:14px;background:var(--md-sys-color-surface, #fff)}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.notice-block{border-left:4px solid var(--md-sys-color-primary, #6750a4)}\n"], dependencies: [{ kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: EditorialDataCollectionBlockOutletComponent, selector: "praxis-editorial-data-collection-block-outlet", inputs: ["block", "runtimeContext", "solution", "instance"], outputs: ["runtimeContextChange", "operationalEvent"] }, { kind: "component", type: EditorialIntroHeroBlockComponent, selector: "praxis-editorial-intro-hero-block", inputs: ["block"], outputs: ["actionTriggered"] }, { kind: "component", type: EditorialSelectionCardsBlockComponent, selector: "praxis-editorial-selection-cards-block", inputs: ["block", "runtimeContext"], outputs: ["runtimeContextChange", "valueChange"] }, { kind: "component", type: EditorialReviewSectionsBlockComponent, selector: "praxis-editorial-review-sections-block", inputs: ["block", "runtimeContext"] }, { kind: "component", type: EditorialSuccessPanelBlockComponent, selector: "praxis-editorial-success-panel-block", inputs: ["block"], outputs: ["actionTriggered"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1504
1491
|
}
|
|
1505
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1492
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialBlockRendererComponent, decorators: [{
|
|
1506
1493
|
type: Component,
|
|
1507
1494
|
args: [{ selector: 'praxis-editorial-block-renderer', standalone: true, imports: [
|
|
1508
|
-
CommonModule,
|
|
1509
1495
|
DynamicWidgetLoaderDirective,
|
|
1510
1496
|
EditorialDataCollectionBlockOutletComponent,
|
|
1511
1497
|
EditorialIntroHeroBlockComponent,
|
|
1512
1498
|
EditorialSelectionCardsBlockComponent,
|
|
1513
1499
|
EditorialReviewSectionsBlockComponent,
|
|
1514
|
-
EditorialSuccessPanelBlockComponent
|
|
1500
|
+
EditorialSuccessPanelBlockComponent
|
|
1515
1501
|
], template: `
|
|
1516
1502
|
@switch (block().kind) {
|
|
1517
1503
|
@case ('introHero') {
|
|
@@ -1731,16 +1717,16 @@ function getStepDisplayState(step, steps, activeStepId, isBlocked) {
|
|
|
1731
1717
|
|
|
1732
1718
|
class EditorialStepperComponent {
|
|
1733
1719
|
i18n = inject(PraxisI18nService);
|
|
1734
|
-
steps = input.required(...(ngDevMode ? [{ debugName: "steps" }] : []));
|
|
1735
|
-
activeStepId = input(null, ...(ngDevMode ? [{ debugName: "activeStepId" }] : []));
|
|
1736
|
-
config = input(null, ...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
1737
|
-
orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : []));
|
|
1738
|
-
progressionBlocked = input(false, ...(ngDevMode ? [{ debugName: "progressionBlocked" }] : []));
|
|
1739
|
-
isStepSelectionBlocked = input(() => false, ...(ngDevMode ? [{ debugName: "isStepSelectionBlocked" }] : []));
|
|
1720
|
+
steps = input.required(...(ngDevMode ? [{ debugName: "steps" }] : /* istanbul ignore next */ []));
|
|
1721
|
+
activeStepId = input(null, ...(ngDevMode ? [{ debugName: "activeStepId" }] : /* istanbul ignore next */ []));
|
|
1722
|
+
config = input(null, ...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
|
|
1723
|
+
orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
1724
|
+
progressionBlocked = input(false, ...(ngDevMode ? [{ debugName: "progressionBlocked" }] : /* istanbul ignore next */ []));
|
|
1725
|
+
isStepSelectionBlocked = input(() => false, ...(ngDevMode ? [{ debugName: "isStepSelectionBlocked" }] : /* istanbul ignore next */ []));
|
|
1740
1726
|
stepSelected = output();
|
|
1741
|
-
effectiveOrientation = computed(() => this.config()?.orientation ?? this.orientation(), ...(ngDevMode ? [{ debugName: "effectiveOrientation" }] : []));
|
|
1742
|
-
stepperVariant = computed(() => this.config()?.variant ?? 'icon-label', ...(ngDevMode ? [{ debugName: "stepperVariant" }] : []));
|
|
1743
|
-
stepperAriaLabel = computed(() => this.t('stepper.ariaLabel', 'Etapas da jornada'), ...(ngDevMode ? [{ debugName: "stepperAriaLabel" }] : []));
|
|
1727
|
+
effectiveOrientation = computed(() => this.config()?.orientation ?? this.orientation(), ...(ngDevMode ? [{ debugName: "effectiveOrientation" }] : /* istanbul ignore next */ []));
|
|
1728
|
+
stepperVariant = computed(() => this.config()?.variant ?? 'icon-label', ...(ngDevMode ? [{ debugName: "stepperVariant" }] : /* istanbul ignore next */ []));
|
|
1729
|
+
stepperAriaLabel = computed(() => this.t('stepper.ariaLabel', 'Etapas da jornada'), ...(ngDevMode ? [{ debugName: "stepperAriaLabel" }] : /* istanbul ignore next */ []));
|
|
1744
1730
|
stepState(step) {
|
|
1745
1731
|
return getStepDisplayState(step, this.steps(), this.activeStepId(), this.progressionBlocked());
|
|
1746
1732
|
}
|
|
@@ -1786,8 +1772,8 @@ class EditorialStepperComponent {
|
|
|
1786
1772
|
t(key, fallback) {
|
|
1787
1773
|
return this.i18n.t(`praxis.editorialForms.${key}`, undefined, fallback);
|
|
1788
1774
|
}
|
|
1789
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1790
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1775
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1776
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EditorialStepperComponent, isStandalone: true, selector: "praxis-editorial-stepper", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: true, transformFunction: null }, activeStepId: { classPropertyName: "activeStepId", publicName: "activeStepId", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, progressionBlocked: { classPropertyName: "progressionBlocked", publicName: "progressionBlocked", isSignal: true, isRequired: false, transformFunction: null }, isStepSelectionBlocked: { classPropertyName: "isStepSelectionBlocked", publicName: "isStepSelectionBlocked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { stepSelected: "stepSelected" }, ngImport: i0, template: `
|
|
1791
1777
|
<ol
|
|
1792
1778
|
class="steps-nav"
|
|
1793
1779
|
[class.vertical]="effectiveOrientation() === 'vertical'"
|
|
@@ -1844,11 +1830,11 @@ class EditorialStepperComponent {
|
|
|
1844
1830
|
</li>
|
|
1845
1831
|
}
|
|
1846
1832
|
</ol>
|
|
1847
|
-
`, isInline: true, styles: [":host{display:block}.steps-nav{--step-indicator-size: 42px;--step-copy-padding-block: 12px;--step-copy-padding-inline: 14px;--step-copy-width: minmax(0, 176px);--step-gap: 16px;--step-connector-offset: 26px;--step-connector-size: 4px;display:flex;align-items:flex-start;gap:var(--step-gap);list-style:none;padding:0;margin:0;width:100%}.steps-nav.horizontal[data-align=center]{justify-content:center}.steps-nav.horizontal[data-align=space-between]{justify-content:space-between}.steps-nav.horizontal[data-align=space-between] .stepper-item{flex:1 1 0}.steps-nav.horizontal[data-align=start] .stepper-item,.steps-nav.horizontal[data-align=center] .stepper-item{flex:0 1 196px}.steps-nav.vertical{flex-direction:column;gap:14px}.stepper-item{display:flex;align-items:flex-start;gap:var(--step-gap);min-width:0}.steps-nav.vertical .stepper-item{align-items:stretch;flex-direction:column;gap:10px}.step-chip{position:relative;display:inline-flex;flex-direction:column;align-items:center;gap:12px;width:100%;min-width:0;padding:0;border:0;background:transparent;color:var(--editorial-text-primary, #24324a);cursor:pointer;text-align:center;transition:transform .18s ease,opacity .18s ease}.step-chip:hover:not([disabled]){transform:translateY(-1px)}.step-chip:focus-visible{outline:3px solid var(--editorial-step-active, var(--editorial-accent, #264a8a));outline:3px solid color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 32%,white);outline-offset:6px;border-radius:calc(var(--editorial-card-radius, 22px) + 4px)}.steps-nav[data-size=sm]{--step-indicator-size: 34px;--step-copy-padding-block: 9px;--step-copy-padding-inline: 12px;--step-copy-width: minmax(0, 132px);--step-gap: 12px;--step-connector-offset: 21px}.steps-nav[data-size=lg]{--step-indicator-size: 52px;--step-copy-padding-block: 15px;--step-copy-padding-inline: 18px;--step-copy-width: minmax(0, 220px);--step-gap: 20px;--step-connector-offset: 32px}.step-chip[disabled]{opacity:.72;cursor:not-allowed;transform:none}.step-icon{display:inline-flex;align-items:center;justify-content:center;width:var(--step-indicator-size);height:var(--step-indicator-size);border-radius:999px;border:1px solid var(--editorial-border-color, #d9deea);border:1px solid color-mix(in srgb,var(--editorial-border-color, #d9deea) 74%,white);background:var(--editorial-step-pending, #eef1f7);background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--editorial-surface-primary, #fff) 86%,white),color-mix(in srgb,var(--editorial-step-pending, #eef1f7) 92%,white));color:var(--editorial-text-secondary, #7b8aa0);font-size:.82rem;font-weight:700;flex:0 0 auto;box-shadow:inset 0 1px #ffffffeb,0 10px 22px #14274414;transition:background .18s ease,color .18s ease,box-shadow .18s ease,border-color .18s ease}.step-icon mat-icon{width:18px;height:18px;font-size:18px;line-height:18px}.steps-nav[data-size=lg] .step-icon mat-icon{width:22px;height:22px;font-size:22px;line-height:22px}.step-chip.active .step-icon{border-color:var(--editorial-step-active, var(--editorial-accent, #264a8a));background:var(--editorial-step-active, var(--editorial-accent, #264a8a));border-color:color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 62%,white);color:var(--editorial-accent-contrast, #fff);box-shadow:0 0 0 var(--editorial-active-step-border-width, 2px) color-mix(in srgb,var(--editorial-accent, #264a8a) 20%,transparent),0 16px 28px color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 22%,transparent)}.step-chip.completed .step-icon{border-color:var(--editorial-step-completed, var(--editorial-success, #35b37e));background:var(--editorial-step-completed, var(--editorial-success, #35b37e));border-color:color-mix(in srgb,var(--editorial-step-completed, var(--editorial-success, #35b37e)) 66%,white);color:#fff;box-shadow:0 14px 24px color-mix(in srgb,var(--editorial-step-completed, var(--editorial-success, #35b37e)) 20%,transparent)}.step-chip.blocked .step-icon{border-color:var(--editorial-step-blocked, var(--editorial-warning, #f28c38));background:var(--editorial-step-blocked, var(--editorial-warning, #f28c38));border-color:color-mix(in srgb,var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 66%,white);color:#fff;box-shadow:0 14px 24px color-mix(in srgb,var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 18%,transparent)}.step-copy{display:grid;gap:4px;min-width:0;width:var(--step-copy-width);padding:var(--step-copy-padding-block) var(--step-copy-padding-inline);border-radius:calc(var(--editorial-card-radius, 22px) - 4px);border:1px solid var(--editorial-border-color, #d9deea);border:1px solid color-mix(in srgb,var(--editorial-border-color, #d9deea) 92%,white);background:var(--editorial-surface-primary, #fff);background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-surface-primary, #fff) 96%,white),color-mix(in srgb,var(--editorial-surface-secondary, #f6f8fc) 74%,white));box-shadow:0 16px 32px #14274414;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease}.step-chip.active .step-copy{border-color:var(--editorial-step-active, var(--editorial-accent, #264a8a));background:var(--editorial-surface-primary, #fff);border-color:color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 32%,var(--editorial-border-color, #d9deea));background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-surface-primary, #fff) 90%,white),color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 8%,var(--editorial-surface-primary, #fff)));box-shadow:0 18px 36px #1427441a,0 0 0 1px color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 12%,transparent)}.step-chip.completed .step-copy{border-color:var(--editorial-step-completed, var(--editorial-success, #35b37e));background:var(--editorial-surface-primary, #fff);border-color:color-mix(in srgb,var(--editorial-step-completed, var(--editorial-success, #35b37e)) 34%,var(--editorial-border-color, #d9deea));background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-surface-primary, #fff) 88%,white),color-mix(in srgb,var(--editorial-step-completed, var(--editorial-success, #35b37e)) 8%,var(--editorial-surface-primary, #fff)))}.step-chip.blocked .step-copy{border-color:var(--editorial-step-blocked, var(--editorial-warning, #f28c38));background:var(--editorial-surface-primary, #fff);border-color:color-mix(in srgb,var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 38%,var(--editorial-border-color, #d9deea));background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-surface-primary, #fff) 90%,white),color-mix(in srgb,var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 10%,var(--editorial-surface-primary, #fff)))}.step-label{font-weight:700;line-height:1.25;white-space:normal}.step-description{color:var(--editorial-text-secondary, #7b8aa0);font-size:.85rem;line-height:1.35}.step-connector{display:block;flex:1 1 auto;align-self:flex-start;min-width:40px;margin-top:var(--step-connector-offset);height:var(--step-connector-size);background:var(--editorial-connector, #8fd8c0);background:linear-gradient(90deg,color-mix(in srgb,var(--editorial-border-color, #d9deea) 58%,white),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 72%,white));border-radius:999px;opacity:.92}.steps-nav.vertical .step-connector{width:var(--step-connector-size);min-width:var(--step-connector-size);min-height:28px;margin-top:0;margin-left:calc((var(--step-indicator-size) / 2) - (var(--step-connector-size) / 2));height:32px}.step-connector[data-style=dashed]{background:repeating-linear-gradient(90deg,var(--editorial-connector, #8fd8c0) 0 8px,transparent 8px 14px)}.steps-nav.vertical .step-connector[data-style=dashed]{background:repeating-linear-gradient(180deg,var(--editorial-connector, #8fd8c0) 0 8px,transparent 8px 14px)}.step-connector[data-style=soft]{height:8px;background:var(--editorial-connector, #8fd8c0);background:linear-gradient(90deg,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 88%,white) 55%,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent))}.steps-nav.vertical .step-connector[data-style=soft]{width:8px;min-width:8px;height:32px;background:var(--editorial-connector, #8fd8c0);background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 88%,white) 55%,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent))}.step-connector[data-state=completed]{background:var(--editorial-step-completed, var(--editorial-success, #35b37e));background:linear-gradient(90deg,color-mix(in srgb,var(--editorial-step-completed, var(--editorial-success, #35b37e)) 92%,white),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 82%,white))}.step-connector[data-state=active]{background:var(--editorial-step-active, var(--editorial-accent, #264a8a));background:linear-gradient(90deg,color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 86%,white),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 84%,white) 60%,color-mix(in srgb,var(--editorial-border-color, #d9deea) 48%,white))}.step-connector[data-state=blocked]{background:var(--editorial-step-blocked, var(--editorial-warning, #f28c38));background:linear-gradient(90deg,color-mix(in srgb,var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 78%,white),color-mix(in srgb,var(--editorial-border-color, #d9deea) 48%,white))}.steps-nav[data-variant=simple] .step-copy,.steps-nav[data-variant=simple] .step-description,.steps-nav[data-variant=icon] .step-description{display:none}.steps-nav[data-variant=simple] .step-chip,.steps-nav[data-variant=icon] .step-chip{gap:8px}.steps-nav.horizontal[data-variant=simple] .stepper-item,.steps-nav.horizontal[data-variant=icon] .stepper-item{align-items:center}.steps-nav[data-variant=rich] .step-copy{border-radius:var(--editorial-card-radius, 22px);box-shadow:0 20px 36px #14274417,0 0 0 1px #ffffff8c}.steps-nav.horizontal[data-variant=rich] .step-chip{align-items:stretch}.steps-nav.horizontal[data-variant=rich] .step-copy{text-align:left}.steps-nav.vertical .step-chip{flex-direction:row;align-items:center;justify-content:flex-start;text-align:left;gap:14px}.steps-nav.vertical .step-copy{width:100%}@media(max-width:860px){.steps-nav.horizontal{flex-direction:column;gap:12px}.steps-nav.horizontal .stepper-item{flex:none}.steps-nav.horizontal .step-chip{flex-direction:row;align-items:center;justify-content:flex-start;text-align:left}.steps-nav.horizontal .step-copy{width:100%}.steps-nav.horizontal .step-connector{width:var(--step-connector-size);min-width:var(--step-connector-size);min-height:24px;margin-top:0;margin-left:calc((var(--step-indicator-size) / 2) - (var(--step-connector-size) / 2));height:24px}.steps-nav.horizontal .step-connector[data-style=dashed]{background:repeating-linear-gradient(180deg,var(--editorial-connector, #8fd8c0) 0 8px,transparent 8px 14px)}.steps-nav.horizontal .step-connector[data-style=soft]{width:8px;min-width:8px;height:24px;background:var(--editorial-connector, #8fd8c0);background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 88%,white) 55%,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent))}}@media(prefers-reduced-motion:reduce){.step-chip,.step-icon,.step-copy{transition:none}.step-chip:hover:not([disabled]){transform:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1833
|
+
`, isInline: true, styles: [":host{display:block}.steps-nav{--step-indicator-size: 42px;--step-copy-padding-block: 12px;--step-copy-padding-inline: 14px;--step-copy-width: minmax(0, 176px);--step-gap: 16px;--step-connector-offset: 26px;--step-connector-size: 4px;display:flex;align-items:flex-start;gap:var(--step-gap);list-style:none;padding:0;margin:0;width:100%}.steps-nav.horizontal[data-align=center]{justify-content:center}.steps-nav.horizontal[data-align=space-between]{justify-content:space-between}.steps-nav.horizontal[data-align=space-between] .stepper-item{flex:1 1 0}.steps-nav.horizontal[data-align=start] .stepper-item,.steps-nav.horizontal[data-align=center] .stepper-item{flex:0 1 196px}.steps-nav.vertical{flex-direction:column;gap:14px}.stepper-item{display:flex;align-items:flex-start;gap:var(--step-gap);min-width:0}.steps-nav.vertical .stepper-item{align-items:stretch;flex-direction:column;gap:10px}.step-chip{position:relative;display:inline-flex;flex-direction:column;align-items:center;gap:12px;width:100%;min-width:0;padding:0;border:0;background:transparent;color:var(--editorial-text-primary, #24324a);cursor:pointer;text-align:center;transition:transform .18s ease,opacity .18s ease}.step-chip:hover:not([disabled]){transform:translateY(-1px)}.step-chip:focus-visible{outline:3px solid var(--editorial-step-active, var(--editorial-accent, #264a8a));outline:3px solid color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 32%,white);outline-offset:6px;border-radius:calc(var(--editorial-card-radius, 22px) + 4px)}.steps-nav[data-size=sm]{--step-indicator-size: 34px;--step-copy-padding-block: 9px;--step-copy-padding-inline: 12px;--step-copy-width: minmax(0, 132px);--step-gap: 12px;--step-connector-offset: 21px}.steps-nav[data-size=lg]{--step-indicator-size: 52px;--step-copy-padding-block: 15px;--step-copy-padding-inline: 18px;--step-copy-width: minmax(0, 220px);--step-gap: 20px;--step-connector-offset: 32px}.step-chip[disabled]{opacity:.72;cursor:not-allowed;transform:none}.step-icon{display:inline-flex;align-items:center;justify-content:center;width:var(--step-indicator-size);height:var(--step-indicator-size);border-radius:999px;border:1px solid var(--editorial-border-color, #d9deea);border:1px solid color-mix(in srgb,var(--editorial-border-color, #d9deea) 74%,white);background:var(--editorial-step-pending, #eef1f7);background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--editorial-surface-primary, #fff) 86%,white),color-mix(in srgb,var(--editorial-step-pending, #eef1f7) 92%,white));color:var(--editorial-text-secondary, #7b8aa0);font-size:.82rem;font-weight:700;flex:0 0 auto;box-shadow:inset 0 1px #ffffffeb,0 10px 22px #14274414;transition:background .18s ease,color .18s ease,box-shadow .18s ease,border-color .18s ease}.step-icon mat-icon{width:18px;height:18px;font-size:18px;line-height:18px}.steps-nav[data-size=lg] .step-icon mat-icon{width:22px;height:22px;font-size:22px;line-height:22px}.step-chip.active .step-icon{border-color:var(--editorial-step-active, var(--editorial-accent, #264a8a));background:var(--editorial-step-active, var(--editorial-accent, #264a8a));border-color:color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 62%,white);color:var(--editorial-accent-contrast, #fff);box-shadow:0 0 0 var(--editorial-active-step-border-width, 2px) color-mix(in srgb,var(--editorial-accent, #264a8a) 20%,transparent),0 16px 28px color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 22%,transparent)}.step-chip.completed .step-icon{border-color:var(--editorial-step-completed, var(--editorial-success, #35b37e));background:var(--editorial-step-completed, var(--editorial-success, #35b37e));border-color:color-mix(in srgb,var(--editorial-step-completed, var(--editorial-success, #35b37e)) 66%,white);color:#fff;box-shadow:0 14px 24px color-mix(in srgb,var(--editorial-step-completed, var(--editorial-success, #35b37e)) 20%,transparent)}.step-chip.blocked .step-icon{border-color:var(--editorial-step-blocked, var(--editorial-warning, #f28c38));background:var(--editorial-step-blocked, var(--editorial-warning, #f28c38));border-color:color-mix(in srgb,var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 66%,white);color:#fff;box-shadow:0 14px 24px color-mix(in srgb,var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 18%,transparent)}.step-copy{display:grid;gap:4px;min-width:0;width:var(--step-copy-width);padding:var(--step-copy-padding-block) var(--step-copy-padding-inline);border-radius:calc(var(--editorial-card-radius, 22px) - 4px);border:1px solid var(--editorial-border-color, #d9deea);border:1px solid color-mix(in srgb,var(--editorial-border-color, #d9deea) 92%,white);background:var(--editorial-surface-primary, #fff);background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-surface-primary, #fff) 96%,white),color-mix(in srgb,var(--editorial-surface-secondary, #f6f8fc) 74%,white));box-shadow:0 16px 32px #14274414;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease}.step-chip.active .step-copy{border-color:var(--editorial-step-active, var(--editorial-accent, #264a8a));background:var(--editorial-surface-primary, #fff);border-color:color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 32%,var(--editorial-border-color, #d9deea));background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-surface-primary, #fff) 90%,white),color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 8%,var(--editorial-surface-primary, #fff)));box-shadow:0 18px 36px #1427441a,0 0 0 1px color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 12%,transparent)}.step-chip.completed .step-copy{border-color:var(--editorial-step-completed, var(--editorial-success, #35b37e));background:var(--editorial-surface-primary, #fff);border-color:color-mix(in srgb,var(--editorial-step-completed, var(--editorial-success, #35b37e)) 34%,var(--editorial-border-color, #d9deea));background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-surface-primary, #fff) 88%,white),color-mix(in srgb,var(--editorial-step-completed, var(--editorial-success, #35b37e)) 8%,var(--editorial-surface-primary, #fff)))}.step-chip.blocked .step-copy{border-color:var(--editorial-step-blocked, var(--editorial-warning, #f28c38));background:var(--editorial-surface-primary, #fff);border-color:color-mix(in srgb,var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 38%,var(--editorial-border-color, #d9deea));background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-surface-primary, #fff) 90%,white),color-mix(in srgb,var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 10%,var(--editorial-surface-primary, #fff)))}.step-label{font-weight:700;line-height:1.25;white-space:normal}.step-description{color:var(--editorial-text-secondary, #7b8aa0);font-size:.85rem;line-height:1.35}.step-connector{display:block;flex:1 1 auto;align-self:flex-start;min-width:40px;margin-top:var(--step-connector-offset);height:var(--step-connector-size);background:var(--editorial-connector, #8fd8c0);background:linear-gradient(90deg,color-mix(in srgb,var(--editorial-border-color, #d9deea) 58%,white),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 72%,white));border-radius:999px;opacity:.92}.steps-nav.vertical .step-connector{width:var(--step-connector-size);min-width:var(--step-connector-size);min-height:28px;margin-top:0;margin-left:calc((var(--step-indicator-size) / 2) - (var(--step-connector-size) / 2));height:32px}.step-connector[data-style=dashed]{background:repeating-linear-gradient(90deg,var(--editorial-connector, #8fd8c0) 0 8px,transparent 8px 14px)}.steps-nav.vertical .step-connector[data-style=dashed]{background:repeating-linear-gradient(180deg,var(--editorial-connector, #8fd8c0) 0 8px,transparent 8px 14px)}.step-connector[data-style=soft]{height:8px;background:var(--editorial-connector, #8fd8c0);background:linear-gradient(90deg,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 88%,white) 55%,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent))}.steps-nav.vertical .step-connector[data-style=soft]{width:8px;min-width:8px;height:32px;background:var(--editorial-connector, #8fd8c0);background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 88%,white) 55%,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent))}.step-connector[data-state=completed]{background:var(--editorial-step-completed, var(--editorial-success, #35b37e));background:linear-gradient(90deg,color-mix(in srgb,var(--editorial-step-completed, var(--editorial-success, #35b37e)) 92%,white),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 82%,white))}.step-connector[data-state=active]{background:var(--editorial-step-active, var(--editorial-accent, #264a8a));background:linear-gradient(90deg,color-mix(in srgb,var(--editorial-step-active, var(--editorial-accent, #264a8a)) 86%,white),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 84%,white) 60%,color-mix(in srgb,var(--editorial-border-color, #d9deea) 48%,white))}.step-connector[data-state=blocked]{background:var(--editorial-step-blocked, var(--editorial-warning, #f28c38));background:linear-gradient(90deg,color-mix(in srgb,var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 78%,white),color-mix(in srgb,var(--editorial-border-color, #d9deea) 48%,white))}.steps-nav[data-variant=simple] .step-copy,.steps-nav[data-variant=simple] .step-description,.steps-nav[data-variant=icon] .step-description{display:none}.steps-nav[data-variant=simple] .step-chip,.steps-nav[data-variant=icon] .step-chip{gap:8px}.steps-nav.horizontal[data-variant=simple] .stepper-item,.steps-nav.horizontal[data-variant=icon] .stepper-item{align-items:center}.steps-nav[data-variant=rich] .step-copy{border-radius:var(--editorial-card-radius, 22px);box-shadow:0 20px 36px #14274417,0 0 0 1px #ffffff8c}.steps-nav.horizontal[data-variant=rich] .step-chip{align-items:stretch}.steps-nav.horizontal[data-variant=rich] .step-copy{text-align:left}.steps-nav.vertical .step-chip{flex-direction:row;align-items:center;justify-content:flex-start;text-align:left;gap:14px}.steps-nav.vertical .step-copy{width:100%}@media(max-width:860px){.steps-nav.horizontal{flex-direction:column;gap:12px}.steps-nav.horizontal .stepper-item{flex:none}.steps-nav.horizontal .step-chip{flex-direction:row;align-items:center;justify-content:flex-start;text-align:left}.steps-nav.horizontal .step-copy{width:100%}.steps-nav.horizontal .step-connector{width:var(--step-connector-size);min-width:var(--step-connector-size);min-height:24px;margin-top:0;margin-left:calc((var(--step-indicator-size) / 2) - (var(--step-connector-size) / 2));height:24px}.steps-nav.horizontal .step-connector[data-style=dashed]{background:repeating-linear-gradient(180deg,var(--editorial-connector, #8fd8c0) 0 8px,transparent 8px 14px)}.steps-nav.horizontal .step-connector[data-style=soft]{width:8px;min-width:8px;height:24px;background:var(--editorial-connector, #8fd8c0);background:linear-gradient(180deg,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent),color-mix(in srgb,var(--editorial-connector, #8fd8c0) 88%,white) 55%,color-mix(in srgb,var(--editorial-connector, #8fd8c0) 24%,transparent))}}@media(prefers-reduced-motion:reduce){.step-chip,.step-icon,.step-copy{transition:none}.step-chip:hover:not([disabled]){transform:none}}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1848
1834
|
}
|
|
1849
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1835
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialStepperComponent, decorators: [{
|
|
1850
1836
|
type: Component,
|
|
1851
|
-
args: [{ selector: 'praxis-editorial-stepper', standalone: true, imports: [
|
|
1837
|
+
args: [{ selector: 'praxis-editorial-stepper', standalone: true, imports: [MatIconModule, PraxisIconDirective], template: `
|
|
1852
1838
|
<ol
|
|
1853
1839
|
class="steps-nav"
|
|
1854
1840
|
[class.vertical]="effectiveOrientation() === 'vertical'"
|
|
@@ -2640,8 +2626,8 @@ function isPlainObject(value) {
|
|
|
2640
2626
|
}
|
|
2641
2627
|
|
|
2642
2628
|
class EditorialRuntimeState {
|
|
2643
|
-
journeyId = signal(null, ...(ngDevMode ? [{ debugName: "journeyId" }] : []));
|
|
2644
|
-
stepId = signal(null, ...(ngDevMode ? [{ debugName: "stepId" }] : []));
|
|
2629
|
+
journeyId = signal(null, ...(ngDevMode ? [{ debugName: "journeyId" }] : /* istanbul ignore next */ []));
|
|
2630
|
+
stepId = signal(null, ...(ngDevMode ? [{ debugName: "stepId" }] : /* istanbul ignore next */ []));
|
|
2645
2631
|
activeJourneyId = this.journeyId.asReadonly();
|
|
2646
2632
|
activeStepId = this.stepId.asReadonly();
|
|
2647
2633
|
connect(solution, instance, runtimeContext) {
|
|
@@ -2649,10 +2635,10 @@ class EditorialRuntimeState {
|
|
|
2649
2635
|
solution: solution(),
|
|
2650
2636
|
instance: instance(),
|
|
2651
2637
|
runtimeContext: runtimeContext(),
|
|
2652
|
-
}), ...(ngDevMode ? [{ debugName: "snapshot" }] : []));
|
|
2653
|
-
const journeys = computed(() => snapshot().journeys, ...(ngDevMode ? [{ debugName: "journeys" }] : []));
|
|
2654
|
-
const activeJourney = computed(() => resolveActiveJourney(journeys(), this.journeyId()), ...(ngDevMode ? [{ debugName: "activeJourney" }] : []));
|
|
2655
|
-
const activeStep = computed(() => resolveActiveStep(activeJourney(), this.stepId()), ...(ngDevMode ? [{ debugName: "activeStep" }] : []));
|
|
2638
|
+
}), ...(ngDevMode ? [{ debugName: "snapshot" }] : /* istanbul ignore next */ []));
|
|
2639
|
+
const journeys = computed(() => snapshot().journeys, ...(ngDevMode ? [{ debugName: "journeys" }] : /* istanbul ignore next */ []));
|
|
2640
|
+
const activeJourney = computed(() => resolveActiveJourney(journeys(), this.journeyId()), ...(ngDevMode ? [{ debugName: "activeJourney" }] : /* istanbul ignore next */ []));
|
|
2641
|
+
const activeStep = computed(() => resolveActiveStep(activeJourney(), this.stepId()), ...(ngDevMode ? [{ debugName: "activeStep" }] : /* istanbul ignore next */ []));
|
|
2656
2642
|
return {
|
|
2657
2643
|
snapshot,
|
|
2658
2644
|
journeys,
|
|
@@ -2809,68 +2795,68 @@ function toRgbTuple(value) {
|
|
|
2809
2795
|
|
|
2810
2796
|
class EditorialFormRuntimeComponent {
|
|
2811
2797
|
i18n = inject(PraxisI18nService);
|
|
2812
|
-
solution = input(null, ...(ngDevMode ? [{ debugName: "solution" }] : []));
|
|
2813
|
-
instance = input(null, ...(ngDevMode ? [{ debugName: "instance" }] : []));
|
|
2814
|
-
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : []));
|
|
2815
|
-
hostConfig = input(null, ...(ngDevMode ? [{ debugName: "hostConfig" }] : []));
|
|
2798
|
+
solution = input(null, ...(ngDevMode ? [{ debugName: "solution" }] : /* istanbul ignore next */ []));
|
|
2799
|
+
instance = input(null, ...(ngDevMode ? [{ debugName: "instance" }] : /* istanbul ignore next */ []));
|
|
2800
|
+
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : /* istanbul ignore next */ []));
|
|
2801
|
+
hostConfig = input(null, ...(ngDevMode ? [{ debugName: "hostConfig" }] : /* istanbul ignore next */ []));
|
|
2816
2802
|
snapshotChange = output();
|
|
2817
2803
|
fallbackChange = output();
|
|
2818
2804
|
operationalEvent = output();
|
|
2819
2805
|
state = new EditorialRuntimeState();
|
|
2820
|
-
solutionState = signal(null, ...(ngDevMode ? [{ debugName: "solutionState" }] : []));
|
|
2821
|
-
instanceState = signal(null, ...(ngDevMode ? [{ debugName: "instanceState" }] : []));
|
|
2822
|
-
runtimeContextState = signal(null, ...(ngDevMode ? [{ debugName: "runtimeContextState" }] : []));
|
|
2823
|
-
compactViewport = signal(false, ...(ngDevMode ? [{ debugName: "compactViewport" }] : []));
|
|
2806
|
+
solutionState = signal(null, ...(ngDevMode ? [{ debugName: "solutionState" }] : /* istanbul ignore next */ []));
|
|
2807
|
+
instanceState = signal(null, ...(ngDevMode ? [{ debugName: "instanceState" }] : /* istanbul ignore next */ []));
|
|
2808
|
+
runtimeContextState = signal(null, ...(ngDevMode ? [{ debugName: "runtimeContextState" }] : /* istanbul ignore next */ []));
|
|
2809
|
+
compactViewport = signal(false, ...(ngDevMode ? [{ debugName: "compactViewport" }] : /* istanbul ignore next */ []));
|
|
2824
2810
|
lastSnapshotSignature = null;
|
|
2825
2811
|
lastDiagnosticsSignature = null;
|
|
2826
2812
|
lastFallbackSignature = null;
|
|
2827
2813
|
lastBlockingSignature = null;
|
|
2828
2814
|
lastOverrideConflictSignature = null;
|
|
2829
2815
|
runtime = this.state.connect(this.solutionState, this.instanceState, this.runtimeContextState);
|
|
2830
|
-
snapshot = computed(() => this.runtime.snapshot(), ...(ngDevMode ? [{ debugName: "snapshot" }] : []));
|
|
2816
|
+
snapshot = computed(() => this.runtime.snapshot(), ...(ngDevMode ? [{ debugName: "snapshot" }] : /* istanbul ignore next */ []));
|
|
2831
2817
|
resolvedHostConfig = computed(() => ({
|
|
2832
2818
|
...DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG,
|
|
2833
2819
|
...(this.hostConfig() ?? {}),
|
|
2834
|
-
}), ...(ngDevMode ? [{ debugName: "resolvedHostConfig" }] : []));
|
|
2835
|
-
journeys = computed(() => this.runtime.journeys(), ...(ngDevMode ? [{ debugName: "journeys" }] : []));
|
|
2836
|
-
activeJourney = computed(() => this.runtime.activeJourney(), ...(ngDevMode ? [{ debugName: "activeJourney" }] : []));
|
|
2837
|
-
activeStep = computed(() => this.runtime.activeStep(), ...(ngDevMode ? [{ debugName: "activeStep" }] : []));
|
|
2838
|
-
resolvedContext = computed(() => this.snapshot().context, ...(ngDevMode ? [{ debugName: "resolvedContext" }] : []));
|
|
2839
|
-
runtimeDiagnostics = computed(() => this.snapshot().diagnostics, ...(ngDevMode ? [{ debugName: "runtimeDiagnostics" }] : []));
|
|
2820
|
+
}), ...(ngDevMode ? [{ debugName: "resolvedHostConfig" }] : /* istanbul ignore next */ []));
|
|
2821
|
+
journeys = computed(() => this.runtime.journeys(), ...(ngDevMode ? [{ debugName: "journeys" }] : /* istanbul ignore next */ []));
|
|
2822
|
+
activeJourney = computed(() => this.runtime.activeJourney(), ...(ngDevMode ? [{ debugName: "activeJourney" }] : /* istanbul ignore next */ []));
|
|
2823
|
+
activeStep = computed(() => this.runtime.activeStep(), ...(ngDevMode ? [{ debugName: "activeStep" }] : /* istanbul ignore next */ []));
|
|
2824
|
+
resolvedContext = computed(() => this.snapshot().context, ...(ngDevMode ? [{ debugName: "resolvedContext" }] : /* istanbul ignore next */ []));
|
|
2825
|
+
runtimeDiagnostics = computed(() => this.snapshot().diagnostics, ...(ngDevMode ? [{ debugName: "runtimeDiagnostics" }] : /* istanbul ignore next */ []));
|
|
2840
2826
|
fallbackState = computed(() => deriveRuntimeFallbackState(this.snapshot(), {
|
|
2841
2827
|
journeyId: this.activeJourney()?.journeyId,
|
|
2842
2828
|
stepId: this.activeStep()?.stepId,
|
|
2843
|
-
}), ...(ngDevMode ? [{ debugName: "fallbackState" }] : []));
|
|
2844
|
-
diagnosticItems = computed(() => sortDiagnostics(dedupeDiagnostics(this.runtimeDiagnostics().items)), ...(ngDevMode ? [{ debugName: "diagnosticItems" }] : []));
|
|
2845
|
-
globalDiagnostics = computed(() => this.diagnosticItems().filter((item) => item.scopeKind === 'global'), ...(ngDevMode ? [{ debugName: "globalDiagnostics" }] : []));
|
|
2846
|
-
contextualDiagnostics = computed(() => this.diagnosticItems().filter((item) => item.scopeKind !== 'global'), ...(ngDevMode ? [{ debugName: "contextualDiagnostics" }] : []));
|
|
2847
|
-
diagnosticsErrorCount = computed(() => this.diagnosticItems().filter((item) => item.severity === 'error').length, ...(ngDevMode ? [{ debugName: "diagnosticsErrorCount" }] : []));
|
|
2848
|
-
diagnosticsWarningCount = computed(() => this.diagnosticItems().filter((item) => item.severity === 'warning').length, ...(ngDevMode ? [{ debugName: "diagnosticsWarningCount" }] : []));
|
|
2849
|
-
diagnosticsInfoCount = computed(() => this.diagnosticItems().filter((item) => item.severity === 'info').length, ...(ngDevMode ? [{ debugName: "diagnosticsInfoCount" }] : []));
|
|
2850
|
-
activeStepDiagnostics = computed(() => this.diagnosticItems().filter((item) => isDiagnosticInActiveStep(item, this.activeJourney()?.journeyId, this.activeStep()?.stepId)), ...(ngDevMode ? [{ debugName: "activeStepDiagnostics" }] : []));
|
|
2851
|
-
activeStepHasErrors = computed(() => this.activeStepDiagnostics().some((item) => item.severity === 'error'), ...(ngDevMode ? [{ debugName: "activeStepHasErrors" }] : []));
|
|
2852
|
-
activeStepHasWarnings = computed(() => this.activeStepDiagnostics().some((item) => item.severity === 'warning'), ...(ngDevMode ? [{ debugName: "activeStepHasWarnings" }] : []));
|
|
2829
|
+
}), ...(ngDevMode ? [{ debugName: "fallbackState" }] : /* istanbul ignore next */ []));
|
|
2830
|
+
diagnosticItems = computed(() => sortDiagnostics(dedupeDiagnostics(this.runtimeDiagnostics().items)), ...(ngDevMode ? [{ debugName: "diagnosticItems" }] : /* istanbul ignore next */ []));
|
|
2831
|
+
globalDiagnostics = computed(() => this.diagnosticItems().filter((item) => item.scopeKind === 'global'), ...(ngDevMode ? [{ debugName: "globalDiagnostics" }] : /* istanbul ignore next */ []));
|
|
2832
|
+
contextualDiagnostics = computed(() => this.diagnosticItems().filter((item) => item.scopeKind !== 'global'), ...(ngDevMode ? [{ debugName: "contextualDiagnostics" }] : /* istanbul ignore next */ []));
|
|
2833
|
+
diagnosticsErrorCount = computed(() => this.diagnosticItems().filter((item) => item.severity === 'error').length, ...(ngDevMode ? [{ debugName: "diagnosticsErrorCount" }] : /* istanbul ignore next */ []));
|
|
2834
|
+
diagnosticsWarningCount = computed(() => this.diagnosticItems().filter((item) => item.severity === 'warning').length, ...(ngDevMode ? [{ debugName: "diagnosticsWarningCount" }] : /* istanbul ignore next */ []));
|
|
2835
|
+
diagnosticsInfoCount = computed(() => this.diagnosticItems().filter((item) => item.severity === 'info').length, ...(ngDevMode ? [{ debugName: "diagnosticsInfoCount" }] : /* istanbul ignore next */ []));
|
|
2836
|
+
activeStepDiagnostics = computed(() => this.diagnosticItems().filter((item) => isDiagnosticInActiveStep(item, this.activeJourney()?.journeyId, this.activeStep()?.stepId)), ...(ngDevMode ? [{ debugName: "activeStepDiagnostics" }] : /* istanbul ignore next */ []));
|
|
2837
|
+
activeStepHasErrors = computed(() => this.activeStepDiagnostics().some((item) => item.severity === 'error'), ...(ngDevMode ? [{ debugName: "activeStepHasErrors" }] : /* istanbul ignore next */ []));
|
|
2838
|
+
activeStepHasWarnings = computed(() => this.activeStepDiagnostics().some((item) => item.severity === 'warning'), ...(ngDevMode ? [{ debugName: "activeStepHasWarnings" }] : /* istanbul ignore next */ []));
|
|
2853
2839
|
diagnosticsMessage = computed(() => this.fallbackState().mode === 'blocked'
|
|
2854
2840
|
? this.t('runtime.diagnostics.message.blocked', 'Existem inconsistencias bloqueadoras que impedem a progressao segura do fluxo editorial.')
|
|
2855
2841
|
: this.fallbackState().mode === 'degraded'
|
|
2856
2842
|
? this.t('runtime.diagnostics.message.degraded', 'O runtime esta operando de forma degradada e requer atencao operacional.')
|
|
2857
2843
|
: this.runtimeDiagnostics().hasErrors
|
|
2858
2844
|
? this.t('runtime.diagnostics.message.error', 'Existem inconsistencias que podem comprometer a experiencia editorial.')
|
|
2859
|
-
: this.t('runtime.diagnostics.message.warning', 'Existem avisos operacionais para revisar nesta instancia editorial.'), ...(ngDevMode ? [{ debugName: "diagnosticsMessage" }] : []));
|
|
2860
|
-
activeGlobalDiagnostics = computed(() => this.globalDiagnostics().filter((item) => item.severity === 'error'), ...(ngDevMode ? [{ debugName: "activeGlobalDiagnostics" }] : []));
|
|
2861
|
-
visibleBlocks = computed(() => getVisibleBlocks(this.activeStep()?.blocks, this.resolvedContext()), ...(ngDevMode ? [{ debugName: "visibleBlocks" }] : []));
|
|
2862
|
-
runtimeTitle = computed(() => this.snapshot().title, ...(ngDevMode ? [{ debugName: "runtimeTitle" }] : []));
|
|
2863
|
-
runtimeDescription = computed(() => this.snapshot().description, ...(ngDevMode ? [{ debugName: "runtimeDescription" }] : []));
|
|
2864
|
-
runtimeEyebrow = computed(() => this.snapshot().problemType, ...(ngDevMode ? [{ debugName: "runtimeEyebrow" }] : []));
|
|
2865
|
-
presentation = computed(() => this.snapshot().presentation, ...(ngDevMode ? [{ debugName: "presentation" }] : []));
|
|
2866
|
-
runtimeCssVars = computed(() => buildRuntimeCssVars(this.presentation()?.theme), ...(ngDevMode ? [{ debugName: "runtimeCssVars" }] : []));
|
|
2867
|
-
runtimeLayoutCss = computed(() => buildRuntimeLayoutCss(this.presentation()?.layout), ...(ngDevMode ? [{ debugName: "runtimeLayoutCss" }] : []));
|
|
2868
|
-
runtimeStyleAttr = computed(() => [this.runtimeCssVars(), this.runtimeLayoutCss()].filter(Boolean).join(';'), ...(ngDevMode ? [{ debugName: "runtimeStyleAttr" }] : []));
|
|
2869
|
-
effectiveOrientation = computed(() => resolveRuntimeOrientation(this.presentation()?.layout, this.presentation()?.stepper, this.compactViewport()), ...(ngDevMode ? [{ debugName: "effectiveOrientation" }] : []));
|
|
2870
|
-
shellVariant = computed(() => resolveShellVariant(this.presentation()?.layout), ...(ngDevMode ? [{ debugName: "shellVariant" }] : []));
|
|
2871
|
-
effectiveDensity = computed(() => resolveDensity(this.presentation()?.layout), ...(ngDevMode ? [{ debugName: "effectiveDensity" }] : []));
|
|
2872
|
-
stepperConfig = computed(() => this.presentation()?.stepper ?? null, ...(ngDevMode ? [{ debugName: "stepperConfig" }] : []));
|
|
2873
|
-
stepperVisible = computed(() => this.stepperConfig()?.visible !== false, ...(ngDevMode ? [{ debugName: "stepperVisible" }] : []));
|
|
2845
|
+
: this.t('runtime.diagnostics.message.warning', 'Existem avisos operacionais para revisar nesta instancia editorial.'), ...(ngDevMode ? [{ debugName: "diagnosticsMessage" }] : /* istanbul ignore next */ []));
|
|
2846
|
+
activeGlobalDiagnostics = computed(() => this.globalDiagnostics().filter((item) => item.severity === 'error'), ...(ngDevMode ? [{ debugName: "activeGlobalDiagnostics" }] : /* istanbul ignore next */ []));
|
|
2847
|
+
visibleBlocks = computed(() => getVisibleBlocks(this.activeStep()?.blocks, this.resolvedContext()), ...(ngDevMode ? [{ debugName: "visibleBlocks" }] : /* istanbul ignore next */ []));
|
|
2848
|
+
runtimeTitle = computed(() => this.snapshot().title, ...(ngDevMode ? [{ debugName: "runtimeTitle" }] : /* istanbul ignore next */ []));
|
|
2849
|
+
runtimeDescription = computed(() => this.snapshot().description, ...(ngDevMode ? [{ debugName: "runtimeDescription" }] : /* istanbul ignore next */ []));
|
|
2850
|
+
runtimeEyebrow = computed(() => this.snapshot().problemType, ...(ngDevMode ? [{ debugName: "runtimeEyebrow" }] : /* istanbul ignore next */ []));
|
|
2851
|
+
presentation = computed(() => this.snapshot().presentation, ...(ngDevMode ? [{ debugName: "presentation" }] : /* istanbul ignore next */ []));
|
|
2852
|
+
runtimeCssVars = computed(() => buildRuntimeCssVars(this.presentation()?.theme), ...(ngDevMode ? [{ debugName: "runtimeCssVars" }] : /* istanbul ignore next */ []));
|
|
2853
|
+
runtimeLayoutCss = computed(() => buildRuntimeLayoutCss(this.presentation()?.layout), ...(ngDevMode ? [{ debugName: "runtimeLayoutCss" }] : /* istanbul ignore next */ []));
|
|
2854
|
+
runtimeStyleAttr = computed(() => [this.runtimeCssVars(), this.runtimeLayoutCss()].filter(Boolean).join(';'), ...(ngDevMode ? [{ debugName: "runtimeStyleAttr" }] : /* istanbul ignore next */ []));
|
|
2855
|
+
effectiveOrientation = computed(() => resolveRuntimeOrientation(this.presentation()?.layout, this.presentation()?.stepper, this.compactViewport()), ...(ngDevMode ? [{ debugName: "effectiveOrientation" }] : /* istanbul ignore next */ []));
|
|
2856
|
+
shellVariant = computed(() => resolveShellVariant(this.presentation()?.layout), ...(ngDevMode ? [{ debugName: "shellVariant" }] : /* istanbul ignore next */ []));
|
|
2857
|
+
effectiveDensity = computed(() => resolveDensity(this.presentation()?.layout), ...(ngDevMode ? [{ debugName: "effectiveDensity" }] : /* istanbul ignore next */ []));
|
|
2858
|
+
stepperConfig = computed(() => this.presentation()?.stepper ?? null, ...(ngDevMode ? [{ debugName: "stepperConfig" }] : /* istanbul ignore next */ []));
|
|
2859
|
+
stepperVisible = computed(() => this.stepperConfig()?.visible !== false, ...(ngDevMode ? [{ debugName: "stepperVisible" }] : /* istanbul ignore next */ []));
|
|
2874
2860
|
stepSelectionBlocker = (stepId) => this.isStepSelectionBlocked(stepId);
|
|
2875
2861
|
fallbackLabel = computed(() => {
|
|
2876
2862
|
if (this.fallbackState().mode === 'blocked') {
|
|
@@ -2883,7 +2869,7 @@ class EditorialFormRuntimeComponent {
|
|
|
2883
2869
|
return this.t('runtime.fallback.warning', 'Runtime com aviso');
|
|
2884
2870
|
}
|
|
2885
2871
|
return this.t('runtime.fallback.healthy', 'Runtime saudavel');
|
|
2886
|
-
}, ...(ngDevMode ? [{ debugName: "fallbackLabel" }] : []));
|
|
2872
|
+
}, ...(ngDevMode ? [{ debugName: "fallbackLabel" }] : /* istanbul ignore next */ []));
|
|
2887
2873
|
currentStepIndex = computed(() => {
|
|
2888
2874
|
const journey = this.activeJourney();
|
|
2889
2875
|
const step = this.activeStep();
|
|
@@ -2891,12 +2877,12 @@ class EditorialFormRuntimeComponent {
|
|
|
2891
2877
|
return 0;
|
|
2892
2878
|
}
|
|
2893
2879
|
return Math.max(0, journey.steps.findIndex((candidate) => candidate.stepId === step.stepId));
|
|
2894
|
-
}, ...(ngDevMode ? [{ debugName: "currentStepIndex" }] : []));
|
|
2895
|
-
hasPreviousStep = computed(() => this.currentStepIndex() > 0, ...(ngDevMode ? [{ debugName: "hasPreviousStep" }] : []));
|
|
2880
|
+
}, ...(ngDevMode ? [{ debugName: "currentStepIndex" }] : /* istanbul ignore next */ []));
|
|
2881
|
+
hasPreviousStep = computed(() => this.currentStepIndex() > 0, ...(ngDevMode ? [{ debugName: "hasPreviousStep" }] : /* istanbul ignore next */ []));
|
|
2896
2882
|
hasNextStep = computed(() => {
|
|
2897
2883
|
const journey = this.activeJourney();
|
|
2898
2884
|
return !!journey && this.currentStepIndex() < journey.steps.length - 1;
|
|
2899
|
-
}, ...(ngDevMode ? [{ debugName: "hasNextStep" }] : []));
|
|
2885
|
+
}, ...(ngDevMode ? [{ debugName: "hasNextStep" }] : /* istanbul ignore next */ []));
|
|
2900
2886
|
constructor() {
|
|
2901
2887
|
effect(() => {
|
|
2902
2888
|
this.solutionState.set(this.solution());
|
|
@@ -3136,8 +3122,8 @@ class EditorialFormRuntimeComponent {
|
|
|
3136
3122
|
t(key, fallback, params) {
|
|
3137
3123
|
return this.i18n.t(`praxis.editorialForms.${key}`, params, fallback);
|
|
3138
3124
|
}
|
|
3139
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3140
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
3125
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialFormRuntimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3126
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EditorialFormRuntimeComponent, isStandalone: true, selector: "praxis-editorial-form-runtime", inputs: { solution: { classPropertyName: "solution", publicName: "solution", isSignal: true, isRequired: false, transformFunction: null }, instance: { classPropertyName: "instance", publicName: "instance", isSignal: true, isRequired: false, transformFunction: null }, runtimeContext: { classPropertyName: "runtimeContext", publicName: "runtimeContext", isSignal: true, isRequired: false, transformFunction: null }, hostConfig: { classPropertyName: "hostConfig", publicName: "hostConfig", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { snapshotChange: "snapshotChange", fallbackChange: "fallbackChange", operationalEvent: "operationalEvent" }, ngImport: i0, template: `
|
|
3141
3127
|
<section
|
|
3142
3128
|
class="editorial-runtime"
|
|
3143
3129
|
[class.orientation-horizontal]="effectiveOrientation() === 'horizontal'"
|
|
@@ -3408,11 +3394,11 @@ class EditorialFormRuntimeComponent {
|
|
|
3408
3394
|
</section>
|
|
3409
3395
|
}
|
|
3410
3396
|
</section>
|
|
3411
|
-
`, isInline: true, styles: [":host{display:block}.editorial-runtime{display:grid;gap:24px;padding:var(--editorial-page-padding, 24px);color:var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f));background:var(--editorial-page-background, var(--md-sys-color-surface, #fdf8fd));font-family:var(--editorial-body-font-family, inherit)}.runtime-header,.journey-card,.empty-state,.diagnostics-panel{border:var(--editorial-shell-border-width, 1px) solid color-mix(in srgb,var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 70%,transparent);border-radius:var(--editorial-shell-radius, 20px);background:var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa));padding:var(--editorial-shell-padding, 20px);box-shadow:var(--editorial-shell-shadow, none)}.diagnostics-panel{display:grid;gap:10px}.diagnostics-panel.warning{border-color:color-mix(in srgb,#b26a00 55%,var(--md-sys-color-outline-variant, #cac4d0));background:color-mix(in srgb,#fff4de 78%,var(--md-sys-color-surface-container-low, #f7f2fa))}.diagnostics-panel.error{border-color:color-mix(in srgb,#b3261e 60%,var(--md-sys-color-outline-variant, #cac4d0));background:color-mix(in srgb,#fde7e9 78%,var(--md-sys-color-surface-container-low, #f7f2fa))}.diagnostics-list{margin:0;padding-left:18px;display:grid;gap:8px}.diagnostics-summary{display:flex;flex-wrap:wrap;gap:8px}.summary-pill{display:inline-flex;align-items:center;min-height:32px;padding:6px 10px;border-radius:999px;font-size:.85rem;border:1px solid transparent;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 85%,transparent)}.summary-pill.error{border-color:color-mix(in srgb,#b3261e 45%,transparent)}.summary-pill.warning{border-color:color-mix(in srgb,#b26a00 45%,transparent)}.summary-pill.info{border-color:color-mix(in srgb,#00639b 45%,transparent)}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;min-height:22px;padding:0 6px;border-radius:999px;font-size:.75rem;font-weight:700;background:var(--md-sys-color-surface, #fff)}.status-badge.error{color:#8c1d18;background:#fde7e9}.status-badge.warning{color:#7a4b00;background:#fff4de}.diagnostics-details summary{cursor:pointer;font-weight:600}.diagnostic-group{display:grid;gap:8px;padding:12px 0}.diagnostic-group.global{border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 65%,transparent);margin-bottom:12px}.step-panel.error{border-left:4px solid #b3261e}.step-panel.warning{border-left:4px solid #b26a00}.step-diagnostics{display:grid;gap:8px;padding:14px 16px;border-radius:16px}.step-diagnostics.error{background:#fde7e9;color:#5b1210}.step-diagnostics.warning{background:#fff4de;color:#6b4300}.step-diagnostics.global{background:#fde7e9;color:#5b1210;border:1px solid color-mix(in srgb,#b3261e 35%,transparent)}.diagnostics-list.contextual{padding-left:16px}.diagnostic-location{display:block;margin-top:4px;font-size:.82rem;opacity:.85}.step-blocking-note{font-size:.9rem;color:#8c1d18}.eyebrow{margin:0 0 8px;text-transform:uppercase;letter-spacing:.08em;font-size:var(--editorial-caption-size, .75rem);color:var(--editorial-accent, var(--md-sys-color-primary, #6750a4));font-weight:700}.runtime-state-pill{justify-self:start;display:inline-flex;align-items:center;min-height:30px;padding:4px 10px;border-radius:999px;font-size:.8rem;font-weight:700;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,transparent);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 70%,transparent)}.runtime-state-pill[data-mode=warning]{color:#7a4b00;background:#fff4de}.runtime-state-pill[data-mode=degraded]{color:#8c1d18;background:#fde7e9}.runtime-state-pill[data-mode=blocked]{color:#8c1d18;background:#fde7e9;border-color:color-mix(in srgb,#b3261e 55%,transparent)}h1,h2,h3,p{margin:0}h1{font-size:var(--editorial-hero-title-size, 2rem);line-height:1.1}.step-header h3{font-size:var(--editorial-step-title-size, 1.25rem);line-height:1.2}.runtime-header,.journey-card,.journey-header,.step-panel{display:grid;gap:12px}.editorial-runtime[data-shell-variant=sidebar-journey] .journey-card,.orientation-vertical .journey-card{grid-template-columns:minmax(220px,280px) minmax(0,1fr);align-items:start}.description,.journey-header p,.step-header p,.step-counter,.empty-state p{font-size:var(--editorial-body-size, 1rem);color:var(--editorial-text-secondary, var(--md-sys-color-on-surface-variant, #49454f))}.journey-tabs,.step-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.journey-tab,.step-actions button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:10px 12px;border-radius:var(--editorial-button-radius, 999px);border:1px solid color-mix(in srgb,var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 75%,transparent);background:var(--editorial-surface-primary, var(--md-sys-color-surface, #fff));color:inherit;box-shadow:var(--editorial-card-shadow, none);cursor:pointer}.journey-tab.active,.step-actions button.primary{background:var(--editorial-cta-primary, var(--editorial-accent, var(--md-sys-color-primary, #6750a4)));color:var(--editorial-cta-primary-text, var(--editorial-accent-contrast, var(--md-sys-color-on-primary, #fff)));border-color:transparent}.step-actions button.secondary{color:var(--editorial-cta-primary, var(--editorial-accent, var(--md-sys-color-primary, #6750a4)))}.step-header{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}.block-stack{display:grid;gap:var(--editorial-block-gap, 16px)}.step-actions button[disabled]{opacity:.5;cursor:not-allowed}.density-compact{--editorial-page-padding: 16px;--editorial-shell-padding: 16px;--editorial-block-gap: 12px}.density-comfortable{--editorial-page-padding: 24px;--editorial-shell-padding: 20px;--editorial-block-gap: 16px}.density-relaxed{--editorial-page-padding: 32px;--editorial-shell-padding: 28px;--editorial-block-gap: 20px}\n"], dependencies: [{ kind: "
|
|
3397
|
+
`, isInline: true, styles: [":host{display:block}.editorial-runtime{display:grid;gap:24px;padding:var(--editorial-page-padding, 24px);color:var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f));background:var(--editorial-page-background, var(--md-sys-color-surface, #fdf8fd));font-family:var(--editorial-body-font-family, inherit)}.runtime-header,.journey-card,.empty-state,.diagnostics-panel{border:var(--editorial-shell-border-width, 1px) solid color-mix(in srgb,var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 70%,transparent);border-radius:var(--editorial-shell-radius, 20px);background:var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa));padding:var(--editorial-shell-padding, 20px);box-shadow:var(--editorial-shell-shadow, none)}.diagnostics-panel{display:grid;gap:10px}.diagnostics-panel.warning{border-color:color-mix(in srgb,#b26a00 55%,var(--md-sys-color-outline-variant, #cac4d0));background:color-mix(in srgb,#fff4de 78%,var(--md-sys-color-surface-container-low, #f7f2fa))}.diagnostics-panel.error{border-color:color-mix(in srgb,#b3261e 60%,var(--md-sys-color-outline-variant, #cac4d0));background:color-mix(in srgb,#fde7e9 78%,var(--md-sys-color-surface-container-low, #f7f2fa))}.diagnostics-list{margin:0;padding-left:18px;display:grid;gap:8px}.diagnostics-summary{display:flex;flex-wrap:wrap;gap:8px}.summary-pill{display:inline-flex;align-items:center;min-height:32px;padding:6px 10px;border-radius:999px;font-size:.85rem;border:1px solid transparent;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 85%,transparent)}.summary-pill.error{border-color:color-mix(in srgb,#b3261e 45%,transparent)}.summary-pill.warning{border-color:color-mix(in srgb,#b26a00 45%,transparent)}.summary-pill.info{border-color:color-mix(in srgb,#00639b 45%,transparent)}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;min-height:22px;padding:0 6px;border-radius:999px;font-size:.75rem;font-weight:700;background:var(--md-sys-color-surface, #fff)}.status-badge.error{color:#8c1d18;background:#fde7e9}.status-badge.warning{color:#7a4b00;background:#fff4de}.diagnostics-details summary{cursor:pointer;font-weight:600}.diagnostic-group{display:grid;gap:8px;padding:12px 0}.diagnostic-group.global{border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 65%,transparent);margin-bottom:12px}.step-panel.error{border-left:4px solid #b3261e}.step-panel.warning{border-left:4px solid #b26a00}.step-diagnostics{display:grid;gap:8px;padding:14px 16px;border-radius:16px}.step-diagnostics.error{background:#fde7e9;color:#5b1210}.step-diagnostics.warning{background:#fff4de;color:#6b4300}.step-diagnostics.global{background:#fde7e9;color:#5b1210;border:1px solid color-mix(in srgb,#b3261e 35%,transparent)}.diagnostics-list.contextual{padding-left:16px}.diagnostic-location{display:block;margin-top:4px;font-size:.82rem;opacity:.85}.step-blocking-note{font-size:.9rem;color:#8c1d18}.eyebrow{margin:0 0 8px;text-transform:uppercase;letter-spacing:.08em;font-size:var(--editorial-caption-size, .75rem);color:var(--editorial-accent, var(--md-sys-color-primary, #6750a4));font-weight:700}.runtime-state-pill{justify-self:start;display:inline-flex;align-items:center;min-height:30px;padding:4px 10px;border-radius:999px;font-size:.8rem;font-weight:700;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,transparent);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 70%,transparent)}.runtime-state-pill[data-mode=warning]{color:#7a4b00;background:#fff4de}.runtime-state-pill[data-mode=degraded]{color:#8c1d18;background:#fde7e9}.runtime-state-pill[data-mode=blocked]{color:#8c1d18;background:#fde7e9;border-color:color-mix(in srgb,#b3261e 55%,transparent)}h1,h2,h3,p{margin:0}h1{font-size:var(--editorial-hero-title-size, 2rem);line-height:1.1}.step-header h3{font-size:var(--editorial-step-title-size, 1.25rem);line-height:1.2}.runtime-header,.journey-card,.journey-header,.step-panel{display:grid;gap:12px}.editorial-runtime[data-shell-variant=sidebar-journey] .journey-card,.orientation-vertical .journey-card{grid-template-columns:minmax(220px,280px) minmax(0,1fr);align-items:start}.description,.journey-header p,.step-header p,.step-counter,.empty-state p{font-size:var(--editorial-body-size, 1rem);color:var(--editorial-text-secondary, var(--md-sys-color-on-surface-variant, #49454f))}.journey-tabs,.step-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.journey-tab,.step-actions button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:10px 12px;border-radius:var(--editorial-button-radius, 999px);border:1px solid color-mix(in srgb,var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 75%,transparent);background:var(--editorial-surface-primary, var(--md-sys-color-surface, #fff));color:inherit;box-shadow:var(--editorial-card-shadow, none);cursor:pointer}.journey-tab.active,.step-actions button.primary{background:var(--editorial-cta-primary, var(--editorial-accent, var(--md-sys-color-primary, #6750a4)));color:var(--editorial-cta-primary-text, var(--editorial-accent-contrast, var(--md-sys-color-on-primary, #fff)));border-color:transparent}.step-actions button.secondary{color:var(--editorial-cta-primary, var(--editorial-accent, var(--md-sys-color-primary, #6750a4)))}.step-header{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}.block-stack{display:grid;gap:var(--editorial-block-gap, 16px)}.step-actions button[disabled]{opacity:.5;cursor:not-allowed}.density-compact{--editorial-page-padding: 16px;--editorial-shell-padding: 16px;--editorial-block-gap: 12px}.density-comfortable{--editorial-page-padding: 24px;--editorial-shell-padding: 20px;--editorial-block-gap: 16px}.density-relaxed{--editorial-page-padding: 32px;--editorial-shell-padding: 28px;--editorial-block-gap: 20px}\n"], dependencies: [{ kind: "component", type: EditorialBlockRendererComponent, selector: "praxis-editorial-block-renderer", inputs: ["block", "runtimeContext", "solution", "instance"], outputs: ["runtimeContextChange", "operationalEvent", "blockAction"] }, { kind: "component", type: EditorialStepperComponent, selector: "praxis-editorial-stepper", inputs: ["steps", "activeStepId", "config", "orientation", "progressionBlocked", "isStepSelectionBlocked"], outputs: ["stepSelected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3412
3398
|
}
|
|
3413
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3399
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditorialFormRuntimeComponent, decorators: [{
|
|
3414
3400
|
type: Component,
|
|
3415
|
-
args: [{ selector: 'praxis-editorial-form-runtime', standalone: true, imports: [
|
|
3401
|
+
args: [{ selector: 'praxis-editorial-form-runtime', standalone: true, imports: [EditorialBlockRendererComponent, EditorialStepperComponent], template: `
|
|
3416
3402
|
<section
|
|
3417
3403
|
class="editorial-runtime"
|
|
3418
3404
|
[class.orientation-horizontal]="effectiveOrientation() === 'horizontal'"
|
|
@@ -3775,6 +3761,522 @@ function formatScopeLabel(labelName, label, id) {
|
|
|
3775
3761
|
return null;
|
|
3776
3762
|
}
|
|
3777
3763
|
|
|
3764
|
+
const EDITORIAL_FORM_RUNTIME_PORTS = [
|
|
3765
|
+
{
|
|
3766
|
+
id: 'solution',
|
|
3767
|
+
label: 'Editorial solution',
|
|
3768
|
+
direction: 'input',
|
|
3769
|
+
semanticKind: 'config-fragment',
|
|
3770
|
+
schema: {
|
|
3771
|
+
id: 'EditorialSolutionDefinition',
|
|
3772
|
+
kind: 'ts-type',
|
|
3773
|
+
ref: 'EditorialSolutionDefinition',
|
|
3774
|
+
},
|
|
3775
|
+
description: 'Canonical editorial solution definition consumed by the runtime.',
|
|
3776
|
+
exposure: { public: true, group: 'config' },
|
|
3777
|
+
},
|
|
3778
|
+
{
|
|
3779
|
+
id: 'instance',
|
|
3780
|
+
label: 'Editorial instance',
|
|
3781
|
+
direction: 'input',
|
|
3782
|
+
semanticKind: 'config-fragment',
|
|
3783
|
+
schema: {
|
|
3784
|
+
id: 'EditorialTemplateInstance',
|
|
3785
|
+
kind: 'ts-type',
|
|
3786
|
+
ref: 'EditorialTemplateInstance',
|
|
3787
|
+
},
|
|
3788
|
+
description: 'Runtime instance with persisted context, overrides and selected template reference.',
|
|
3789
|
+
exposure: { public: true, group: 'config' },
|
|
3790
|
+
},
|
|
3791
|
+
{
|
|
3792
|
+
id: 'runtimeContext',
|
|
3793
|
+
label: 'Runtime context',
|
|
3794
|
+
direction: 'input',
|
|
3795
|
+
semanticKind: 'view-context',
|
|
3796
|
+
schema: {
|
|
3797
|
+
id: 'Record<string, unknown>',
|
|
3798
|
+
kind: 'ts-type',
|
|
3799
|
+
ref: 'Record<string, unknown>',
|
|
3800
|
+
},
|
|
3801
|
+
description: 'Host-provided context merged with the editorial instance context.',
|
|
3802
|
+
exposure: { public: true, group: 'context' },
|
|
3803
|
+
},
|
|
3804
|
+
{
|
|
3805
|
+
id: 'snapshotChange',
|
|
3806
|
+
label: 'Snapshot change',
|
|
3807
|
+
direction: 'output',
|
|
3808
|
+
semanticKind: 'event',
|
|
3809
|
+
cardinality: 'stream',
|
|
3810
|
+
schema: {
|
|
3811
|
+
id: 'EditorialRuntimeSnapshot',
|
|
3812
|
+
kind: 'ts-type',
|
|
3813
|
+
ref: 'EditorialRuntimeSnapshot',
|
|
3814
|
+
},
|
|
3815
|
+
description: 'Resolved editorial runtime snapshot emitted when solution, instance or context changes.',
|
|
3816
|
+
exposure: { public: true, group: 'events' },
|
|
3817
|
+
},
|
|
3818
|
+
{
|
|
3819
|
+
id: 'fallbackChange',
|
|
3820
|
+
label: 'Fallback change',
|
|
3821
|
+
direction: 'output',
|
|
3822
|
+
semanticKind: 'status',
|
|
3823
|
+
cardinality: 'stream',
|
|
3824
|
+
schema: {
|
|
3825
|
+
id: 'EditorialRuntimeFallbackState',
|
|
3826
|
+
kind: 'ts-type',
|
|
3827
|
+
ref: 'EditorialRuntimeFallbackState',
|
|
3828
|
+
},
|
|
3829
|
+
description: 'Operational fallback state emitted when diagnostics affect runtime health.',
|
|
3830
|
+
exposure: { public: true, group: 'status' },
|
|
3831
|
+
},
|
|
3832
|
+
{
|
|
3833
|
+
id: 'operationalEvent',
|
|
3834
|
+
label: 'Operational event',
|
|
3835
|
+
direction: 'output',
|
|
3836
|
+
semanticKind: 'diagnostic',
|
|
3837
|
+
cardinality: 'stream',
|
|
3838
|
+
schema: {
|
|
3839
|
+
id: 'EditorialRuntimeOperationalEvent',
|
|
3840
|
+
kind: 'ts-type',
|
|
3841
|
+
ref: 'EditorialRuntimeOperationalEvent',
|
|
3842
|
+
},
|
|
3843
|
+
description: 'Technical event stream for diagnostics, blocking errors and adapter state.',
|
|
3844
|
+
exposure: { public: true, advanced: true, group: 'diagnostics' },
|
|
3845
|
+
},
|
|
3846
|
+
];
|
|
3847
|
+
const EDITORIAL_FORM_RUNTIME_COMPONENT_METADATA = {
|
|
3848
|
+
id: 'praxis-editorial-form-runtime',
|
|
3849
|
+
componentType: 'praxis-editorial-form-runtime',
|
|
3850
|
+
selector: 'praxis-editorial-form-runtime',
|
|
3851
|
+
component: EditorialFormRuntimeComponent,
|
|
3852
|
+
friendlyName: 'Praxis Editorial Form Runtime',
|
|
3853
|
+
displayName: 'Praxis Editorial Form Runtime',
|
|
3854
|
+
description: 'Guided editorial runtime for solution and instance driven form experiences.',
|
|
3855
|
+
icon: 'article',
|
|
3856
|
+
lib: '@praxisui/editorial-forms',
|
|
3857
|
+
tags: ['widget', 'editorial', 'forms', 'runtime', 'guided-flow'],
|
|
3858
|
+
inputs: [
|
|
3859
|
+
{
|
|
3860
|
+
name: 'solution',
|
|
3861
|
+
type: 'EditorialSolutionDefinition | null',
|
|
3862
|
+
description: 'Canonical editorial solution definition.',
|
|
3863
|
+
},
|
|
3864
|
+
{
|
|
3865
|
+
name: 'instance',
|
|
3866
|
+
type: 'EditorialTemplateInstance | null',
|
|
3867
|
+
description: 'Editorial instance with context and overrides.',
|
|
3868
|
+
},
|
|
3869
|
+
{
|
|
3870
|
+
name: 'runtimeContext',
|
|
3871
|
+
type: 'Record<string, unknown> | null',
|
|
3872
|
+
description: 'Host context merged into the resolved runtime context.',
|
|
3873
|
+
},
|
|
3874
|
+
{
|
|
3875
|
+
name: 'hostConfig',
|
|
3876
|
+
type: 'EditorialRuntimeHostConfig | null',
|
|
3877
|
+
description: 'Host controls for operational event forwarding.',
|
|
3878
|
+
},
|
|
3879
|
+
],
|
|
3880
|
+
outputs: [
|
|
3881
|
+
{
|
|
3882
|
+
name: 'snapshotChange',
|
|
3883
|
+
type: 'EditorialRuntimeSnapshot',
|
|
3884
|
+
description: 'Resolved snapshot emitted by the editorial runtime.',
|
|
3885
|
+
},
|
|
3886
|
+
{
|
|
3887
|
+
name: 'fallbackChange',
|
|
3888
|
+
type: 'EditorialRuntimeFallbackState',
|
|
3889
|
+
description: 'Fallback state emitted when diagnostics affect runtime health.',
|
|
3890
|
+
},
|
|
3891
|
+
{
|
|
3892
|
+
name: 'operationalEvent',
|
|
3893
|
+
type: 'EditorialRuntimeOperationalEvent',
|
|
3894
|
+
description: 'Operational diagnostics event stream.',
|
|
3895
|
+
},
|
|
3896
|
+
],
|
|
3897
|
+
ports: EDITORIAL_FORM_RUNTIME_PORTS,
|
|
3898
|
+
layoutHints: {
|
|
3899
|
+
recommendedCols: 6,
|
|
3900
|
+
recommendedRows: 6,
|
|
3901
|
+
minCols: 4,
|
|
3902
|
+
minRows: 4,
|
|
3903
|
+
},
|
|
3904
|
+
};
|
|
3905
|
+
function providePraxisEditorialFormRuntimeMetadata() {
|
|
3906
|
+
return {
|
|
3907
|
+
provide: ENVIRONMENT_INITIALIZER,
|
|
3908
|
+
multi: true,
|
|
3909
|
+
useFactory: (registry) => () => {
|
|
3910
|
+
registry.register(EDITORIAL_FORM_RUNTIME_COMPONENT_METADATA);
|
|
3911
|
+
},
|
|
3912
|
+
deps: [ComponentMetadataRegistry],
|
|
3913
|
+
};
|
|
3914
|
+
}
|
|
3915
|
+
|
|
3916
|
+
/**
|
|
3917
|
+
* Root provider entrypoint for the editorial runtime package.
|
|
3918
|
+
*
|
|
3919
|
+
* Registers the public DynamicWidgetLoader metadata for
|
|
3920
|
+
* praxis-editorial-form-runtime in ComponentMetadataRegistry. This is the
|
|
3921
|
+
* canonical setup hook for hosts that render editorial forms through dynamic
|
|
3922
|
+
* composition; it does not introduce a separate global runtime singleton graph.
|
|
3923
|
+
*/
|
|
3924
|
+
function providePraxisEditorialForms() {
|
|
3925
|
+
return makeEnvironmentProviders([
|
|
3926
|
+
providePraxisEditorialFormRuntimeMetadata(),
|
|
3927
|
+
]);
|
|
3928
|
+
}
|
|
3929
|
+
|
|
3930
|
+
const snapshotSetSchema = {
|
|
3931
|
+
type: 'object',
|
|
3932
|
+
required: ['solutionId'],
|
|
3933
|
+
properties: {
|
|
3934
|
+
solutionId: { type: 'string' },
|
|
3935
|
+
instanceId: { type: 'string' },
|
|
3936
|
+
journeyId: { type: 'string' },
|
|
3937
|
+
stepId: { type: 'string' },
|
|
3938
|
+
runtimeContextPatch: { type: 'object' },
|
|
3939
|
+
instanceContextPatch: { type: 'object' },
|
|
3940
|
+
preserveDiagnostics: { type: 'boolean' },
|
|
3941
|
+
},
|
|
3942
|
+
};
|
|
3943
|
+
const fallbackConfigureSchema = {
|
|
3944
|
+
type: 'object',
|
|
3945
|
+
required: ['mode'],
|
|
3946
|
+
properties: {
|
|
3947
|
+
mode: { enum: ['normal', 'warning', 'degraded', 'blocked'] },
|
|
3948
|
+
diagnosticCode: { type: 'string' },
|
|
3949
|
+
progressionBlocked: { type: 'boolean' },
|
|
3950
|
+
requiresEngineAttention: { type: 'boolean' },
|
|
3951
|
+
scope: {
|
|
3952
|
+
type: 'object',
|
|
3953
|
+
properties: {
|
|
3954
|
+
journeyId: { type: 'string' },
|
|
3955
|
+
stepId: { type: 'string' },
|
|
3956
|
+
blockId: { type: 'string' },
|
|
3957
|
+
},
|
|
3958
|
+
},
|
|
3959
|
+
},
|
|
3960
|
+
};
|
|
3961
|
+
const presentationConfigureSchema = {
|
|
3962
|
+
type: 'object',
|
|
3963
|
+
minProperties: 1,
|
|
3964
|
+
properties: {
|
|
3965
|
+
layout: {
|
|
3966
|
+
type: 'object',
|
|
3967
|
+
properties: {
|
|
3968
|
+
orientation: { enum: ['horizontal', 'vertical'] },
|
|
3969
|
+
density: { enum: ['compact', 'comfortable', 'relaxed'] },
|
|
3970
|
+
maxWidth: { type: 'string' },
|
|
3971
|
+
shellVariant: { type: 'string' },
|
|
3972
|
+
spacing: { type: 'object' },
|
|
3973
|
+
responsive: { type: 'object' },
|
|
3974
|
+
},
|
|
3975
|
+
},
|
|
3976
|
+
theme: { type: 'object' },
|
|
3977
|
+
stepper: {
|
|
3978
|
+
type: 'object',
|
|
3979
|
+
properties: {
|
|
3980
|
+
visible: { type: 'boolean' },
|
|
3981
|
+
orientation: { enum: ['horizontal', 'vertical'] },
|
|
3982
|
+
showLabels: { type: 'boolean' },
|
|
3983
|
+
showDescriptions: { type: 'boolean' },
|
|
3984
|
+
showConnectors: { type: 'boolean' },
|
|
3985
|
+
connectorStyle: { type: 'string' },
|
|
3986
|
+
allowStepJump: { type: 'boolean' },
|
|
3987
|
+
},
|
|
3988
|
+
},
|
|
3989
|
+
},
|
|
3990
|
+
};
|
|
3991
|
+
const adapterBindSchema = {
|
|
3992
|
+
type: 'object',
|
|
3993
|
+
required: ['adapterId', 'dataBlockType'],
|
|
3994
|
+
properties: {
|
|
3995
|
+
adapterId: { type: 'string' },
|
|
3996
|
+
dataBlockType: { enum: ['dataCollection'] },
|
|
3997
|
+
componentRef: { type: 'string' },
|
|
3998
|
+
requiredInputs: {
|
|
3999
|
+
type: 'array',
|
|
4000
|
+
items: { type: 'string' },
|
|
4001
|
+
},
|
|
4002
|
+
forwardOperationalEvents: { type: 'boolean' },
|
|
4003
|
+
fallbackModeWhenMissing: { enum: ['warning', 'degraded', 'blocked'] },
|
|
4004
|
+
},
|
|
4005
|
+
};
|
|
4006
|
+
const dataBlockAddSchema = {
|
|
4007
|
+
type: 'object',
|
|
4008
|
+
required: ['journeyId', 'stepId', 'block'],
|
|
4009
|
+
properties: {
|
|
4010
|
+
journeyId: { type: 'string' },
|
|
4011
|
+
stepId: { type: 'string' },
|
|
4012
|
+
insert: {
|
|
4013
|
+
type: 'object',
|
|
4014
|
+
properties: {
|
|
4015
|
+
mode: { enum: ['append', 'insertBefore', 'insertAfter'] },
|
|
4016
|
+
relativeToBlockId: { type: 'string' },
|
|
4017
|
+
},
|
|
4018
|
+
},
|
|
4019
|
+
block: {
|
|
4020
|
+
type: 'object',
|
|
4021
|
+
required: ['blockId', 'kind'],
|
|
4022
|
+
properties: {
|
|
4023
|
+
blockId: { type: 'string' },
|
|
4024
|
+
kind: { enum: ['dataCollection', 'introHero', 'selectionCards', 'reviewSections', 'successPanel'] },
|
|
4025
|
+
formBlockId: { type: 'string' },
|
|
4026
|
+
formConfigRef: { type: 'string' },
|
|
4027
|
+
title: { type: 'string' },
|
|
4028
|
+
description: { type: 'string' },
|
|
4029
|
+
visibility: { type: 'array' },
|
|
4030
|
+
},
|
|
4031
|
+
},
|
|
4032
|
+
},
|
|
4033
|
+
};
|
|
4034
|
+
const dataBlockRemoveSchema = {
|
|
4035
|
+
type: 'object',
|
|
4036
|
+
required: ['journeyId', 'stepId', 'blockId'],
|
|
4037
|
+
properties: {
|
|
4038
|
+
journeyId: { type: 'string' },
|
|
4039
|
+
stepId: { type: 'string' },
|
|
4040
|
+
blockId: { type: 'string' },
|
|
4041
|
+
requireNoFieldBindings: { type: 'boolean' },
|
|
4042
|
+
},
|
|
4043
|
+
};
|
|
4044
|
+
const fieldBindingSetSchema = {
|
|
4045
|
+
type: 'object',
|
|
4046
|
+
required: ['blockId', 'fieldName', 'contextPath'],
|
|
4047
|
+
properties: {
|
|
4048
|
+
blockId: { type: 'string' },
|
|
4049
|
+
fieldName: { type: 'string' },
|
|
4050
|
+
contextPath: { type: 'string' },
|
|
4051
|
+
mode: { enum: ['read', 'write', 'readWrite'] },
|
|
4052
|
+
valueMode: { enum: ['merge', 'replace'] },
|
|
4053
|
+
delegateFieldMetadataTo: { enum: ['praxis-metadata-editor'] },
|
|
4054
|
+
},
|
|
4055
|
+
};
|
|
4056
|
+
const PRAXIS_EDITORIAL_FORMS_AUTHORING_MANIFEST = {
|
|
4057
|
+
schemaVersion: '1.0.0',
|
|
4058
|
+
componentId: 'praxis-editorial-forms',
|
|
4059
|
+
ownerPackage: '@praxisui/editorial-forms',
|
|
4060
|
+
configSchemaId: 'EditorialRuntimeInput',
|
|
4061
|
+
manifestVersion: '1.0.0',
|
|
4062
|
+
runtimeInputs: [
|
|
4063
|
+
{ name: 'solution', type: 'EditorialSolutionDefinition | null', description: 'Canonical editorial solution definition with journeys, steps, blocks and presentation.' },
|
|
4064
|
+
{ name: 'instance', type: 'EditorialTemplateInstance | null', description: 'Runtime instance with selected journey, context, overrides and compatibility form configs.' },
|
|
4065
|
+
{ name: 'runtimeContext', type: 'Record<string, unknown> | null', description: 'Host-provided immutable context merged into the resolved editorial snapshot.' },
|
|
4066
|
+
{ name: 'hostConfig', type: 'EditorialRuntimeHostConfig | null', description: 'Host controls for operational event and adapter event forwarding.' },
|
|
4067
|
+
{ name: 'snapshotChange', type: 'EditorialRuntimeSnapshot', description: 'Resolved runtime snapshot emitted to hosts for product UX and audit derivation.' },
|
|
4068
|
+
{ name: 'fallbackChange', type: 'EditorialRuntimeFallbackState', description: 'Operational fallback state emitted when diagnostics affect runtime health.' },
|
|
4069
|
+
{ name: 'operationalEvent', type: 'EditorialRuntimeOperationalEvent', description: 'Technical diagnostics event stream for logs, monitoring and runbooks.' },
|
|
4070
|
+
],
|
|
4071
|
+
editableTargets: [
|
|
4072
|
+
{ kind: 'snapshot', resolver: 'editorial-runtime-snapshot', description: 'Resolved editorial state from solution, instance and runtime context.' },
|
|
4073
|
+
{ kind: 'fallback', resolver: 'editorial-runtime-fallback-state', description: 'Explicit operational fallback state derived from runtime diagnostics.' },
|
|
4074
|
+
{ kind: 'presentation', resolver: 'editorial-solution-presentation', description: 'Editorial presentation contract under solution.presentation.' },
|
|
4075
|
+
{ kind: 'adapter', resolver: 'editorial-data-block-adapter-registry', description: 'Optional dataCollection adapter binding and compatibility requirements.' },
|
|
4076
|
+
{ kind: 'dataBlock', resolver: 'editorial-journey-step-block-by-id', description: 'Editorial blocks inside journey steps, including dataCollection and presentational blocks.' },
|
|
4077
|
+
{ kind: 'fieldBinding', resolver: 'editorial-data-block-field-binding', description: 'Field-to-runtime-context binding for dataCollection blocks without redefining FieldMetadata.' },
|
|
4078
|
+
],
|
|
4079
|
+
operations: [
|
|
4080
|
+
{
|
|
4081
|
+
operationId: 'snapshot.set',
|
|
4082
|
+
title: 'Set editorial snapshot inputs',
|
|
4083
|
+
scope: 'global',
|
|
4084
|
+
targetKind: 'snapshot',
|
|
4085
|
+
target: { kind: 'snapshot', resolver: 'editorial-runtime-snapshot', ambiguityPolicy: 'fail', required: false },
|
|
4086
|
+
inputSchema: snapshotSetSchema,
|
|
4087
|
+
effects: [{ kind: 'compile-domain-patch', handler: 'editorial-snapshot-set', handlerContract: {
|
|
4088
|
+
reads: ['EditorialSolutionDefinition', 'EditorialTemplateInstance', 'runtimeContext', 'resolveEditorialRuntimeSnapshot'],
|
|
4089
|
+
writes: ['solution.solutionId', 'instance.instanceId', 'instance.context', 'runtimeContext'],
|
|
4090
|
+
identityKeys: ['solutionId', 'instanceId', 'journeyId'],
|
|
4091
|
+
inputSchema: snapshotSetSchema,
|
|
4092
|
+
failureModes: ['solution-not-found', 'journey-not-found', 'step-not-found', 'snapshot-shape-invalid', 'diagnostics-lost'],
|
|
4093
|
+
description: 'Compiles a deterministic patch to editorial runtime inputs, validates the requested journey/step against the resolved snapshot and requires diagnostics to be preserved.',
|
|
4094
|
+
} }],
|
|
4095
|
+
validators: ['snapshot-shape-canonical', 'journey-exists', 'step-exists', 'diagnostics-preserved', 'editorial-round-trip'],
|
|
4096
|
+
affectedPaths: ['solution.solutionId', 'instance.instanceId', 'instance.context', 'runtimeContext'],
|
|
4097
|
+
submissionImpact: 'config-only',
|
|
4098
|
+
preconditions: ['editorial-runtime-inputs-loaded'],
|
|
4099
|
+
destructive: false,
|
|
4100
|
+
requiresConfirmation: false,
|
|
4101
|
+
},
|
|
4102
|
+
{
|
|
4103
|
+
operationId: 'fallback.configure',
|
|
4104
|
+
title: 'Configure explicit fallback behavior',
|
|
4105
|
+
scope: 'meta',
|
|
4106
|
+
targetKind: 'fallback',
|
|
4107
|
+
target: { kind: 'fallback', resolver: 'editorial-runtime-fallback-state', ambiguityPolicy: 'fail', required: false },
|
|
4108
|
+
inputSchema: fallbackConfigureSchema,
|
|
4109
|
+
effects: [{ kind: 'compile-domain-patch', handler: 'editorial-fallback-configure', handlerContract: {
|
|
4110
|
+
reads: ['EditorialRuntimeDiagnostics', 'deriveRuntimeFallbackState', 'EditorialRuntimeFallbackScope'],
|
|
4111
|
+
writes: ['hostConfig.emitOperationalEvents', 'snapshot.diagnostics.items'],
|
|
4112
|
+
identityKeys: ['mode', 'diagnosticCode', 'scope.journeyId', 'scope.stepId'],
|
|
4113
|
+
inputSchema: fallbackConfigureSchema,
|
|
4114
|
+
failureModes: ['fallback-mode-invalid', 'blocking-diagnostic-missing', 'scope-not-found', 'implicit-degradation-not-allowed'],
|
|
4115
|
+
description: 'Requires fallback policy to be explicit and tied to snapshot diagnostics, because fallback state is derived by deriveRuntimeFallbackState instead of persisted as domain data.',
|
|
4116
|
+
} }],
|
|
4117
|
+
validators: ['fallback-explicit', 'fallback-diagnostic-backed', 'fallback-scope-exists', 'editorial-round-trip'],
|
|
4118
|
+
affectedPaths: ['hostConfig.emitOperationalEvents', 'snapshot.diagnostics.items'],
|
|
4119
|
+
submissionImpact: 'config-only',
|
|
4120
|
+
preconditions: ['snapshot-resolved'],
|
|
4121
|
+
destructive: false,
|
|
4122
|
+
requiresConfirmation: false,
|
|
4123
|
+
},
|
|
4124
|
+
{
|
|
4125
|
+
operationId: 'presentation.configure',
|
|
4126
|
+
title: 'Configure editorial presentation',
|
|
4127
|
+
scope: 'skin',
|
|
4128
|
+
targetKind: 'presentation',
|
|
4129
|
+
target: { kind: 'presentation', resolver: 'editorial-solution-presentation', ambiguityPolicy: 'fail', required: false },
|
|
4130
|
+
inputSchema: presentationConfigureSchema,
|
|
4131
|
+
effects: [{ kind: 'compile-domain-patch', handler: 'editorial-presentation-configure', handlerContract: {
|
|
4132
|
+
reads: ['solution.presentation', 'buildRuntimeLayoutCss', 'buildRuntimeCssVars', 'resolveRuntimeOrientation'],
|
|
4133
|
+
writes: ['solution.presentation.layout', 'solution.presentation.theme', 'solution.presentation.stepper'],
|
|
4134
|
+
identityKeys: ['solutionId', 'presentation.layout.orientation', 'presentation.stepper.orientation'],
|
|
4135
|
+
inputSchema: presentationConfigureSchema,
|
|
4136
|
+
failureModes: ['presentation-key-unsupported', 'theme-token-invalid', 'domain-data-mutation-detected', 'renderer-coverage-missing'],
|
|
4137
|
+
description: 'Applies presentation-only changes under solution.presentation and rejects changes that mutate editorial domain data.',
|
|
4138
|
+
} }],
|
|
4139
|
+
validators: ['presentation-supported-by-runtime', 'presentation-does-not-mutate-domain-data', 'theme-tokens-valid', 'editorial-round-trip'],
|
|
4140
|
+
affectedPaths: ['solution.presentation.layout', 'solution.presentation.theme', 'solution.presentation.stepper'],
|
|
4141
|
+
submissionImpact: 'visual-only',
|
|
4142
|
+
preconditions: ['solution-loaded'],
|
|
4143
|
+
destructive: false,
|
|
4144
|
+
requiresConfirmation: false,
|
|
4145
|
+
},
|
|
4146
|
+
{
|
|
4147
|
+
operationId: 'adapter.bind',
|
|
4148
|
+
title: 'Bind data block adapter',
|
|
4149
|
+
scope: 'dataBinding',
|
|
4150
|
+
targetKind: 'adapter',
|
|
4151
|
+
target: { kind: 'adapter', resolver: 'editorial-data-block-adapter-registry', ambiguityPolicy: 'fail', required: true },
|
|
4152
|
+
inputSchema: adapterBindSchema,
|
|
4153
|
+
effects: [{ kind: 'compile-domain-patch', handler: 'editorial-adapter-bind', handlerContract: {
|
|
4154
|
+
reads: ['EDITORIAL_DATA_BLOCK_ADAPTER', 'EditorialDataBlockAdapterRegistry', 'EditorialDataBlockContext', 'ComponentDocMeta'],
|
|
4155
|
+
writes: ['hostConfig.forwardAdapterOperationalEvents', 'snapshot.diagnostics.items'],
|
|
4156
|
+
identityKeys: ['adapterId', 'dataBlockType'],
|
|
4157
|
+
inputSchema: adapterBindSchema,
|
|
4158
|
+
failureModes: ['adapter-not-registered', 'adapter-does-not-support-data-block', 'adapter-component-invalid', 'fallback-policy-missing'],
|
|
4159
|
+
description: 'Validates the external provider binding for a dataCollection adapter and records the host operational-event policy required when the adapter is missing or incompatible.',
|
|
4160
|
+
} }],
|
|
4161
|
+
validators: ['adapter-exists', 'adapter-supports-data-block', 'adapter-component-valid', 'fallback-explicit', 'editorial-round-trip'],
|
|
4162
|
+
affectedPaths: ['hostConfig.forwardAdapterOperationalEvents', 'snapshot.diagnostics.items'],
|
|
4163
|
+
submissionImpact: 'config-only',
|
|
4164
|
+
preconditions: ['adapter-registry-loaded'],
|
|
4165
|
+
destructive: false,
|
|
4166
|
+
requiresConfirmation: false,
|
|
4167
|
+
},
|
|
4168
|
+
{
|
|
4169
|
+
operationId: 'dataBlock.add',
|
|
4170
|
+
title: 'Add editorial data block',
|
|
4171
|
+
scope: 'section',
|
|
4172
|
+
targetKind: 'dataBlock',
|
|
4173
|
+
target: { kind: 'dataBlock', resolver: 'editorial-journey-step-block-by-id', ambiguityPolicy: 'fail', required: true },
|
|
4174
|
+
inputSchema: dataBlockAddSchema,
|
|
4175
|
+
effects: [{ kind: 'compile-domain-patch', handler: 'editorial-data-block-add', handlerContract: {
|
|
4176
|
+
reads: ['EditorialSolutionDefinition.journeys', 'EditorialResolvedStep.blocks', 'EditorialDataBlockAdapterRegistry'],
|
|
4177
|
+
writes: ['solution.journeys[].steps[].blocks'],
|
|
4178
|
+
identityKeys: ['journeyId', 'stepId', 'block.blockId'],
|
|
4179
|
+
inputSchema: dataBlockAddSchema,
|
|
4180
|
+
failureModes: ['journey-not-found', 'step-not-found', 'duplicate-block-id', 'data-collection-config-unresolved', 'adapter-not-registered'],
|
|
4181
|
+
description: 'Adds a canonical editorial block to a step and validates dataCollection readiness without redefining Dynamic Form config semantics.',
|
|
4182
|
+
} }],
|
|
4183
|
+
validators: ['data-block-id-unique', 'journey-exists', 'step-exists', 'adapter-supports-data-block', 'editorial-round-trip'],
|
|
4184
|
+
affectedPaths: ['solution.journeys[].steps[].blocks'],
|
|
4185
|
+
submissionImpact: 'config-only',
|
|
4186
|
+
preconditions: ['solution-loaded'],
|
|
4187
|
+
destructive: false,
|
|
4188
|
+
requiresConfirmation: false,
|
|
4189
|
+
},
|
|
4190
|
+
{
|
|
4191
|
+
operationId: 'dataBlock.remove',
|
|
4192
|
+
title: 'Remove editorial data block',
|
|
4193
|
+
scope: 'section',
|
|
4194
|
+
targetKind: 'dataBlock',
|
|
4195
|
+
target: { kind: 'dataBlock', resolver: 'editorial-journey-step-block-by-id', ambiguityPolicy: 'fail', required: true },
|
|
4196
|
+
inputSchema: dataBlockRemoveSchema,
|
|
4197
|
+
effects: [{ kind: 'compile-domain-patch', handler: 'editorial-data-block-remove', handlerContract: {
|
|
4198
|
+
reads: ['EditorialSolutionDefinition.journeys', 'EditorialResolvedStep.blocks', 'fieldBinding'],
|
|
4199
|
+
writes: ['solution.journeys[].steps[].blocks'],
|
|
4200
|
+
identityKeys: ['journeyId', 'stepId', 'blockId'],
|
|
4201
|
+
inputSchema: dataBlockRemoveSchema,
|
|
4202
|
+
failureModes: ['journey-not-found', 'step-not-found', 'block-not-found', 'field-bindings-still-reference-block'],
|
|
4203
|
+
description: 'Removes a block by stable id and rejects removal when governed field bindings still reference the block.',
|
|
4204
|
+
} }],
|
|
4205
|
+
destructive: true,
|
|
4206
|
+
requiresConfirmation: true,
|
|
4207
|
+
validators: ['data-block-exists', 'field-binding-target-exists', 'editorial-round-trip'],
|
|
4208
|
+
affectedPaths: ['solution.journeys[].steps[].blocks'],
|
|
4209
|
+
submissionImpact: 'config-only',
|
|
4210
|
+
preconditions: ['solution-loaded', 'explicit-confirmation-provided'],
|
|
4211
|
+
},
|
|
4212
|
+
{
|
|
4213
|
+
operationId: 'fieldBinding.set',
|
|
4214
|
+
title: 'Set editorial field binding',
|
|
4215
|
+
scope: 'fieldMetadataPath',
|
|
4216
|
+
targetKind: 'fieldBinding',
|
|
4217
|
+
target: { kind: 'fieldBinding', resolver: 'editorial-data-block-field-binding', ambiguityPolicy: 'fail', required: true },
|
|
4218
|
+
inputSchema: fieldBindingSetSchema,
|
|
4219
|
+
effects: [{ kind: 'compile-domain-patch', handler: 'editorial-field-binding-set', handlerContract: {
|
|
4220
|
+
reads: ['EditorialDataCollectionBlock', 'resolvedFormConfig.fieldMetadata', 'runtimeContext.formData', 'PRAXIS_METADATA_EDITOR_AUTHORING_MANIFEST'],
|
|
4221
|
+
writes: ['runtimeContext.formData'],
|
|
4222
|
+
identityKeys: ['blockId', 'fieldName', 'contextPath'],
|
|
4223
|
+
inputSchema: fieldBindingSetSchema,
|
|
4224
|
+
failureModes: ['block-not-found', 'field-not-found', 'context-path-invalid', 'field-metadata-delegation-required', 'domain-data-mutation-detected'],
|
|
4225
|
+
description: 'Sets the governed runtimeContext.formData path used by dataCollection adapters and delegates FieldMetadata shape changes to the metadata-editor manifest.',
|
|
4226
|
+
} }],
|
|
4227
|
+
validators: ['field-binding-target-exists', 'field-binding-path-valid', 'delegates-field-metadata', 'editorial-round-trip'],
|
|
4228
|
+
affectedPaths: ['runtimeContext.formData'],
|
|
4229
|
+
submissionImpact: 'affects-schema-backed-data',
|
|
4230
|
+
preconditions: ['data-block-resolved', 'field-metadata-loaded'],
|
|
4231
|
+
destructive: false,
|
|
4232
|
+
requiresConfirmation: false,
|
|
4233
|
+
},
|
|
4234
|
+
],
|
|
4235
|
+
validators: [
|
|
4236
|
+
{ validatorId: 'snapshot-shape-canonical', level: 'error', code: 'EDITORIAL_SNAPSHOT_SHAPE_CANONICAL', description: 'Resolved snapshot must remain compatible with EditorialRuntimeSnapshot.' },
|
|
4237
|
+
{ validatorId: 'journey-exists', level: 'error', code: 'EDITORIAL_JOURNEY_EXISTS', description: 'Target journey must exist in the editorial solution.' },
|
|
4238
|
+
{ validatorId: 'step-exists', level: 'error', code: 'EDITORIAL_STEP_EXISTS', description: 'Target step must exist in the selected journey.' },
|
|
4239
|
+
{ validatorId: 'diagnostics-preserved', level: 'error', code: 'EDITORIAL_DIAGNOSTICS_PRESERVED', description: 'Patch compilation must not drop runtime diagnostics.' },
|
|
4240
|
+
{ validatorId: 'fallback-explicit', level: 'error', code: 'EDITORIAL_FALLBACK_EXPLICIT', description: 'Fallback behavior must be explicit instead of implied by missing adapter or hidden diagnostics.' },
|
|
4241
|
+
{ validatorId: 'fallback-diagnostic-backed', level: 'error', code: 'EDITORIAL_FALLBACK_DIAGNOSTIC_BACKED', description: 'Warning, degraded and blocked fallback states must be backed by diagnostics.' },
|
|
4242
|
+
{ validatorId: 'fallback-scope-exists', level: 'error', code: 'EDITORIAL_FALLBACK_SCOPE_EXISTS', description: 'Fallback scope must resolve to an existing journey, step or block.' },
|
|
4243
|
+
{ validatorId: 'presentation-supported-by-runtime', level: 'error', code: 'EDITORIAL_PRESENTATION_SUPPORTED', description: 'Presentation keys must be supported by the runtime or intentionally diagnosed as unsupported.' },
|
|
4244
|
+
{ validatorId: 'presentation-does-not-mutate-domain-data', level: 'error', code: 'EDITORIAL_PRESENTATION_DOMAIN_SAFE', description: 'Presentation changes must not mutate solution journeys, blocks, field metadata or runtime context data.' },
|
|
4245
|
+
{ validatorId: 'theme-tokens-valid', level: 'error', code: 'EDITORIAL_THEME_TOKENS_VALID', description: 'Theme tokens must be valid runtime CSS variable inputs.' },
|
|
4246
|
+
{ validatorId: 'adapter-exists', level: 'error', code: 'EDITORIAL_ADAPTER_EXISTS', description: 'Requested adapter must exist in EditorialDataBlockAdapterRegistry.' },
|
|
4247
|
+
{ validatorId: 'adapter-supports-data-block', level: 'error', code: 'EDITORIAL_ADAPTER_SUPPORTS_DATA_BLOCK', description: 'Requested adapter must support the target data block context.' },
|
|
4248
|
+
{ validatorId: 'adapter-component-valid', level: 'error', code: 'EDITORIAL_ADAPTER_COMPONENT_VALID', description: 'Adapter component must expose the inputs required by the adapter contract.' },
|
|
4249
|
+
{ validatorId: 'data-block-id-unique', level: 'error', code: 'EDITORIAL_DATA_BLOCK_ID_UNIQUE', description: 'Block ids must be unique within the resolved editorial step.' },
|
|
4250
|
+
{ validatorId: 'data-block-exists', level: 'error', code: 'EDITORIAL_DATA_BLOCK_EXISTS', description: 'Target data block must exist before destructive or binding operations.' },
|
|
4251
|
+
{ validatorId: 'field-binding-target-exists', level: 'error', code: 'EDITORIAL_FIELD_BINDING_TARGET_EXISTS', description: 'Field binding must target an existing dataCollection block and field.' },
|
|
4252
|
+
{ validatorId: 'field-binding-path-valid', level: 'error', code: 'EDITORIAL_FIELD_BINDING_PATH_VALID', description: 'Field binding context path must be deterministic and inside governed runtime context data.' },
|
|
4253
|
+
{ validatorId: 'delegates-field-metadata', level: 'error', code: 'EDITORIAL_DELEGATES_FIELD_METADATA', description: 'FieldMetadata shape changes must be delegated to the metadata-editor manifest instead of duplicated here.' },
|
|
4254
|
+
{ validatorId: 'editorial-round-trip', level: 'error', code: 'EDITORIAL_ROUND_TRIP', description: 'Open, edit, apply/save, reopen and runtime consume must preserve the editorial document.' },
|
|
4255
|
+
],
|
|
4256
|
+
roundTripRequirements: [
|
|
4257
|
+
'EditorialRuntimeInput is the package-level authoring document; solution, instance and runtimeContext must resolve into EditorialRuntimeSnapshot without drift.',
|
|
4258
|
+
'Fallback behavior must be explicit and backed by diagnostics; missing adapters cannot be hidden as successful rendering.',
|
|
4259
|
+
'Presentation changes are constrained to solution.presentation and must not mutate journeys, blocks, FormConfig, FieldMetadata or runtimeContext domain data.',
|
|
4260
|
+
'dataCollection blocks require an adapter that exists and supports the requested context, while Dynamic Form config semantics remain owned by @praxisui/dynamic-form.',
|
|
4261
|
+
'FieldMetadata authoring is delegated to praxis-metadata-editor and dynamic-fields discovery; this manifest only governs editorial binding and orchestration.',
|
|
4262
|
+
'Destructive block removal requires confirmation and must reject references from existing field bindings.',
|
|
4263
|
+
],
|
|
4264
|
+
examples: [
|
|
4265
|
+
{ id: 'select-journey', request: 'Set the onboarding journey as the active editorial path.', operationId: 'snapshot.set', params: { solutionId: 'customer-onboarding', journeyId: 'onboarding' }, isPositive: true },
|
|
4266
|
+
{ id: 'merge-runtime-context', request: 'Prefill the runtime context with the selected plan.', operationId: 'snapshot.set', params: { solutionId: 'plan-signup', runtimeContextPatch: { selectedPlan: 'pro' } }, isPositive: true },
|
|
4267
|
+
{ id: 'configure-blocked-fallback', request: 'Block progression when the required dataCollection adapter is missing.', operationId: 'fallback.configure', params: { mode: 'blocked', diagnosticCode: 'data-collection-adapter-missing', progressionBlocked: true }, isPositive: true },
|
|
4268
|
+
{ id: 'configure-stepper', request: 'Use a vertical compact stepper with hidden descriptions.', operationId: 'presentation.configure', params: { layout: { orientation: 'vertical', density: 'compact' }, stepper: { showDescriptions: false } }, isPositive: true },
|
|
4269
|
+
{ id: 'bind-dynamic-form-adapter', request: 'Bind the dynamic-form adapter for dataCollection blocks.', operationId: 'adapter.bind', params: { adapterId: 'dynamic-form', dataBlockType: 'dataCollection', requiredInputs: ['config', 'formId', 'editorialContext'], fallbackModeWhenMissing: 'blocked' }, isPositive: true },
|
|
4270
|
+
{ id: 'add-data-block', request: 'Add a consent form block to the review step.', operationId: 'dataBlock.add', params: { journeyId: 'privacy', stepId: 'review', block: { blockId: 'consent-form', kind: 'dataCollection', formBlockId: 'consent-form' } }, isPositive: true },
|
|
4271
|
+
{ id: 'remove-block', request: 'Remove the unused legacy consent block.', operationId: 'dataBlock.remove', params: { journeyId: 'privacy', stepId: 'review', blockId: 'legacy-consent', requireNoFieldBindings: true }, isPositive: true },
|
|
4272
|
+
{ id: 'set-field-binding', request: 'Bind the email field into runtimeContext.formData.email.', operationId: 'fieldBinding.set', params: { blockId: 'contact-form', fieldName: 'email', contextPath: 'formData.email', mode: 'readWrite', delegateFieldMetadataTo: 'praxis-metadata-editor' }, isPositive: true },
|
|
4273
|
+
{ id: 'reject-presentation-domain-mutation', request: 'Change presentation and also rewrite the collected email value.', operationId: 'presentation.configure', params: { layout: { density: 'relaxed' }, runtimeContextPatch: { formData: { email: 'changed@example.com' } } }, isPositive: false },
|
|
4274
|
+
{ id: 'reject-missing-adapter', request: 'Render a dataCollection block with an adapter that is not registered.', operationId: 'adapter.bind', params: { adapterId: 'unknown-form-engine', dataBlockType: 'dataCollection' }, isPositive: false },
|
|
4275
|
+
{ id: 'reject-duplicate-block', request: 'Add another block using the existing consent-form id.', operationId: 'dataBlock.add', params: { journeyId: 'privacy', stepId: 'review', block: { blockId: 'consent-form', kind: 'dataCollection', formBlockId: 'consent-form-copy' } }, isPositive: false },
|
|
4276
|
+
{ id: 'reject-field-metadata-duplication', request: 'Change the control type inside editorial forms instead of metadata editor.', operationId: 'fieldBinding.set', params: { blockId: 'contact-form', fieldName: 'email', contextPath: 'formData.email', controlType: 'select' }, isPositive: false },
|
|
4277
|
+
],
|
|
4278
|
+
};
|
|
4279
|
+
|
|
3778
4280
|
const REQUIRED_DYNAMIC_FORM_INPUTS = ['config', 'formId', 'editorialContext'];
|
|
3779
4281
|
function readRuntimeFormData(runtimeContext) {
|
|
3780
4282
|
const formData = runtimeContext?.['formData'];
|
|
@@ -4060,10 +4562,10 @@ class HarnessDataEngineComponent {
|
|
|
4060
4562
|
solution = null;
|
|
4061
4563
|
instance = null;
|
|
4062
4564
|
resolvedFormConfig = null;
|
|
4063
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
4064
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
4565
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: HarnessDataEngineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4566
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: HarnessDataEngineComponent, isStandalone: true, selector: "praxis-editorial-harness-data-engine", inputs: { config: "config", formId: "formId", editorialContext: "editorialContext", block: "block", runtimeContext: "runtimeContext", solution: "solution", instance: "instance", resolvedFormConfig: "resolvedFormConfig" }, ngImport: i0, template: '<p>Harness data engine</p>', isInline: true });
|
|
4065
4567
|
}
|
|
4066
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4568
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: HarnessDataEngineComponent, decorators: [{
|
|
4067
4569
|
type: Component,
|
|
4068
4570
|
args: [{
|
|
4069
4571
|
standalone: true,
|
|
@@ -4301,4 +4803,4 @@ function getHarnessDataEngineComponent() {
|
|
|
4301
4803
|
* Generated bundle index. Do not edit.
|
|
4302
4804
|
*/
|
|
4303
4805
|
|
|
4304
|
-
export { DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG, EDITORIAL_DATA_BLOCK_ADAPTER, EditorialBlockRendererComponent, EditorialDataBlockAdapterRegistry, EditorialDataCollectionBlockOutletComponent, EditorialFormRuntimeComponent, EditorialIntroHeroBlockComponent, EditorialReviewSectionsBlockComponent, EditorialRuntimeState, EditorialSelectionCardsBlockComponent, EditorialStepperComponent, EditorialSuccessPanelBlockComponent, HarnessDataEngineComponent, PRAXIS_EDITORIAL_FORMS_EN_US, PRAXIS_EDITORIAL_FORMS_PT_BR, buildRuntimeCssVars, buildRuntimeLayoutCss, createEditorialDynamicFormAdapter, createEditorialRuntimeHarnessCatalog, createPraxisEditorialFormsI18nConfig, deriveRuntimeFallbackState, getHarnessDataEngineComponent, getStepDisplayState, getValueAtPath, getVisibleBlocks, isBlockVisible, matchesVisibilityRule, provideEditorialDataBlockAdapter, provideEditorialDynamicFormAdapter, providePraxisEditorialForms, providePraxisEditorialFormsI18n, resolveActiveJourney, resolveActiveStep, resolveDensity, resolveEditorialDataBlockAdapter, resolveEditorialDataBlockFormConfig, resolveEditorialDataBlockFormConfigDetails, resolveEditorialRuntimeSnapshot, resolveRuntimeOrientation, resolveShellVariant };
|
|
4806
|
+
export { DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG, EDITORIAL_DATA_BLOCK_ADAPTER, EDITORIAL_FORM_RUNTIME_COMPONENT_METADATA, EditorialBlockRendererComponent, EditorialDataBlockAdapterRegistry, EditorialDataCollectionBlockOutletComponent, EditorialFormRuntimeComponent, EditorialIntroHeroBlockComponent, EditorialReviewSectionsBlockComponent, EditorialRuntimeState, EditorialSelectionCardsBlockComponent, EditorialStepperComponent, EditorialSuccessPanelBlockComponent, HarnessDataEngineComponent, PRAXIS_EDITORIAL_FORMS_AUTHORING_MANIFEST, PRAXIS_EDITORIAL_FORMS_EN_US, PRAXIS_EDITORIAL_FORMS_PT_BR, buildRuntimeCssVars, buildRuntimeLayoutCss, createEditorialDynamicFormAdapter, createEditorialRuntimeHarnessCatalog, createPraxisEditorialFormsI18nConfig, deriveRuntimeFallbackState, getHarnessDataEngineComponent, getStepDisplayState, getValueAtPath, getVisibleBlocks, isBlockVisible, matchesVisibilityRule, provideEditorialDataBlockAdapter, provideEditorialDynamicFormAdapter, providePraxisEditorialFormRuntimeMetadata, providePraxisEditorialForms, providePraxisEditorialFormsI18n, resolveActiveJourney, resolveActiveStep, resolveDensity, resolveEditorialDataBlockAdapter, resolveEditorialDataBlockFormConfig, resolveEditorialDataBlockFormConfigDetails, resolveEditorialRuntimeSnapshot, resolveRuntimeOrientation, resolveShellVariant };
|