@memberjunction/ng-dashboards 5.36.0 → 5.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +14 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +450 -292
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +73 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +512 -127
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-resource.component.d.ts +22 -0
- package/dist/ComponentStudio/component-studio-resource.component.d.ts.map +1 -0
- package/dist/ComponentStudio/component-studio-resource.component.js +55 -0
- package/dist/ComponentStudio/component-studio-resource.component.js.map +1 -0
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +104 -45
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +234 -331
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts +54 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js +339 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js.map +1 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts +65 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js +492 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js.map +1 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts +88 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js +457 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js.map +1 -0
- package/dist/ComponentStudio/components/form-override-dialog.component.d.ts +106 -0
- package/dist/ComponentStudio/components/form-override-dialog.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/form-override-dialog.component.js +478 -0
- package/dist/ComponentStudio/components/form-override-dialog.component.js.map +1 -0
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +54 -0
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.js +361 -50
- package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts +10 -0
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +114 -45
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
- package/dist/ComponentStudio/services/canvas-to-code.d.ts +32 -0
- package/dist/ComponentStudio/services/canvas-to-code.d.ts.map +1 -0
- package/dist/ComponentStudio/services/canvas-to-code.js +347 -0
- package/dist/ComponentStudio/services/canvas-to-code.js.map +1 -0
- package/dist/ComponentStudio/services/code-to-canvas.d.ts +32 -0
- package/dist/ComponentStudio/services/code-to-canvas.d.ts.map +1 -0
- package/dist/ComponentStudio/services/code-to-canvas.js +92 -0
- package/dist/ComponentStudio/services/code-to-canvas.js.map +1 -0
- package/dist/ComponentStudio/services/component-studio-state.service.d.ts +29 -0
- package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
- package/dist/ComponentStudio/services/component-studio-state.service.js +76 -0
- package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
- package/dist/ComponentStudio/services/entity-form-override.service.d.ts +86 -0
- package/dist/ComponentStudio/services/entity-form-override.service.d.ts.map +1 -0
- package/dist/ComponentStudio/services/entity-form-override.service.js +246 -0
- package/dist/ComponentStudio/services/entity-form-override.service.js.map +1 -0
- package/dist/ComponentStudio/services/field-binding-scanner.d.ts +29 -0
- package/dist/ComponentStudio/services/field-binding-scanner.d.ts.map +1 -0
- package/dist/ComponentStudio/services/field-binding-scanner.js +110 -0
- package/dist/ComponentStudio/services/field-binding-scanner.js.map +1 -0
- package/dist/ComponentStudio/services/form-canvas-model.d.ts +56 -0
- package/dist/ComponentStudio/services/form-canvas-model.d.ts.map +1 -0
- package/dist/ComponentStudio/services/form-canvas-model.js +35 -0
- package/dist/ComponentStudio/services/form-canvas-model.js.map +1 -0
- package/dist/ComponentStudio/services/form-host-props-fixture.d.ts +10 -0
- package/dist/ComponentStudio/services/form-host-props-fixture.d.ts.map +1 -0
- package/dist/ComponentStudio/services/form-host-props-fixture.js +10 -0
- package/dist/ComponentStudio/services/form-host-props-fixture.js.map +1 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.js +2 -2
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/FormBuilder/form-builder-resource.component.d.ts +964 -0
- package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -0
- package/dist/FormBuilder/form-builder-resource.component.js +4487 -0
- package/dist/FormBuilder/form-builder-resource.component.js.map +1 -0
- package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts +55 -0
- package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts.map +1 -0
- package/dist/FormBuilder/form-builder-version-rail.helpers.js +73 -0
- package/dist/FormBuilder/form-builder-version-rail.helpers.js.map +1 -0
- package/dist/Home/home-application.d.ts +21 -1
- package/dist/Home/home-application.d.ts.map +1 -1
- package/dist/Home/home-application.js +60 -8
- package/dist/Home/home-application.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +14 -14
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +11 -10
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/component-studio-dashboards.module.d.ts +34 -22
- package/dist/component-studio-dashboards.module.d.ts.map +1 -1
- package/dist/component-studio-dashboards.module.js +65 -9
- package/dist/component-studio-dashboards.module.js.map +1 -1
- package/package.json +54 -53
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-override-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/form-override-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnInit,\n OnChanges,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { RoleInfo } from '@memberjunction/core';\n\n/**\n * Scope of an EntityFormOverride row. Mirrors the DB CHECK constraint\n * (see migrations/v5/V202605161430_*_Interactive_Forms.sql).\n */\nexport type OverrideScope = 'User' | 'Role' | 'Global';\n\n/**\n * Override row status. Active = runtime serves this; Pending = AI / user\n * draft awaiting activation; Inactive = historical, never served.\n */\nexport type OverrideStatus = 'Active' | 'Inactive' | 'Pending';\n\n/** Payload emitted by {@link FormOverrideDialogComponent} on confirm. */\nexport interface FormOverrideDialogResult {\n Name: string;\n Description: string | null;\n Notes: string | null;\n EntityName: string;\n Scope: OverrideScope;\n RoleID: string | null;\n Priority: number;\n Status: OverrideStatus;\n}\n\n/**\n * Modal shown after a form-role Component is saved. Lets the author create\n * an `EntityFormOverride` row pointing the just-saved Component at an\n * entity for User / Role / Global scope. Skip exits without persisting —\n * useful when authoring a Component that isn't ready to be activated.\n *\n * The dialog only collects intent. The dashboard wires the confirm event\n * to the write call (currently blocked on the EntityFormOverrideEntity\n * generated class; see Tasks 3 + 15).\n */\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'mj-form-override-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n@if (Visible) {\n<div class=\"modal-backdrop\" (click)=\"OnCancelClick()\">\n <div class=\"modal\" (click)=\"$event.stopPropagation()\">\n <header class=\"modal-header\">\n <h3>{{ EditMode ? 'Edit form details' : 'Activate this form' }}</h3>\n <button class=\"close-btn\" (click)=\"OnCancelClick()\" aria-label=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </header>\n <div class=\"modal-body\">\n <p class=\"hint\">\n @if (EditMode) {\n Update the override's name, description, scope, priority, or status.\n Component code is edited from the cockpit's main editor — this dialog\n covers the override-row metadata only.\n } @else {\n Create an Entity Form Override so MemberJunction renders this\n Component instead of the default form for matching users.\n Skip to keep the Component saved but inactive.\n }\n </p>\n\n <div class=\"field\">\n <label>Override Name</label>\n <input type=\"text\" [value]=\"Name\" (input)=\"OnNameInput($event)\" placeholder=\"e.g. Compact Application Form\" />\n </div>\n\n <div class=\"field\">\n <label>Description</label>\n <textarea [value]=\"Description ?? ''\" (input)=\"OnDescriptionInput($event)\" rows=\"2\"\n placeholder=\"Optional — what's special about this variant?\"></textarea>\n </div>\n\n <div class=\"field\">\n <label>Notes</label>\n <textarea [value]=\"Notes ?? ''\" (input)=\"OnNotesInput($event)\" rows=\"2\"\n placeholder=\"Optional — private notes about this version, e.g. why you forked, what changed.\"></textarea>\n </div>\n\n <div class=\"field\">\n <label>Entity</label>\n <input type=\"text\" [value]=\"EntityName\" disabled />\n <small class=\"muted\">Set in the Field Binding inspector.</small>\n </div>\n\n <div class=\"field\">\n <label>Scope</label>\n <div class=\"scope-options\">\n <label class=\"radio\">\n <input type=\"radio\" name=\"scope\" [checked]=\"Scope === 'User'\" (change)=\"OnScopeChange('User')\" />\n Me only (User)\n </label>\n <label class=\"radio\">\n <input type=\"radio\" name=\"scope\" [checked]=\"Scope === 'Role'\" (change)=\"OnScopeChange('Role')\" />\n A role\n </label>\n @if (Scope === 'Role') {\n <select [value]=\"RoleID ?? ''\" (change)=\"OnRoleChanged($event)\" class=\"role-picker\">\n <option value=\"\">— pick a role —</option>\n @for (r of availableRoles; track r.ID) {\n <option [value]=\"r.ID\">{{ r.Name }}</option>\n }\n </select>\n }\n <label class=\"radio\">\n <input type=\"radio\" name=\"scope\" [checked]=\"Scope === 'Global'\" (change)=\"OnScopeChange('Global')\" />\n Everyone (Global)\n </label>\n </div>\n </div>\n\n <div class=\"field-row\">\n <div class=\"field\">\n <label>Priority</label>\n <input type=\"number\" [value]=\"Priority\" (input)=\"OnPriorityInput($event)\" min=\"0\" step=\"1\" />\n </div>\n\n <div class=\"field\">\n <label>Status</label>\n <div class=\"status-options\">\n <label class=\"radio\">\n <input type=\"radio\" name=\"status\" [checked]=\"Status === 'Pending'\" (change)=\"Status = 'Pending'\" />\n Pending <span class=\"muted\">(draft)</span>\n </label>\n <label class=\"radio\">\n <input type=\"radio\" name=\"status\" [checked]=\"Status === 'Active'\" (change)=\"Status = 'Active'\" />\n Active <span class=\"muted\">(live)</span>\n </label>\n <label class=\"radio\">\n <input type=\"radio\" name=\"status\" [checked]=\"Status === 'Inactive'\" (change)=\"Status = 'Inactive'\" />\n Inactive\n </label>\n </div>\n </div>\n </div>\n\n @if (validationError) {\n <div class=\"error\">{{ validationError }}</div>\n }\n </div>\n <footer class=\"modal-footer\">\n <button class=\"btn btn-primary\" (click)=\"OnConfirmClick()\">{{ EditMode ? 'Save changes' : 'Create Override' }}</button>\n <button class=\"btn\" (click)=\"OnCancelClick()\">{{ EditMode ? 'Cancel' : 'Skip' }}</button>\n </footer>\n </div>\n</div>\n}\n`,\n styles: [`\n .modal-backdrop { position: fixed; inset: 0; background: var(--mj-bg-overlay, rgba(0,0,0,0.5)); display: flex; align-items: center; justify-content: center; z-index: 1000; }\n .modal { background: var(--mj-bg-surface, #fff); border-radius: 8px; width: 520px; max-width: 90vw; max-height: 90vh; display: flex; flex-direction: column; box-shadow: 0 8px 32px rgba(0,0,0,0.12); }\n .modal-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--mj-border-default, #e0e0e0); }\n .modal-header h3 { margin: 0; font-size: 16px; font-weight: 600; }\n .close-btn { background: transparent; border: 0; cursor: pointer; font-size: 16px; color: var(--mj-text-muted, #64748b); padding: 4px; }\n .modal-body { padding: 16px 20px; overflow-y: auto; }\n .modal-footer { display: flex; gap: 8px; padding: 12px 20px; border-top: 1px solid var(--mj-border-default, #e0e0e0); }\n .hint { margin: 0 0 16px; color: var(--mj-text-muted, #64748b); font-size: 13px; line-height: 1.5; }\n .field { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }\n .field label { font-size: 11px; color: var(--mj-text-muted, #64748b); text-transform: uppercase; letter-spacing: 0.5px; }\n .field input[type=\"text\"], .field input[type=\"number\"], .field textarea, .field select { padding: 8px 10px; border: 1px solid var(--mj-border-default, #e0e0e0); border-radius: 4px; font-size: 14px; background: var(--mj-bg-surface, #fff); color: var(--mj-text-primary, #111); font-family: inherit; }\n .field input:disabled { background: var(--mj-bg-surface-sunken, #f1f5f9); color: var(--mj-text-muted, #64748b); }\n .field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }\n .muted { font-size: 11px; color: var(--mj-text-muted, #64748b); }\n .scope-options { display: flex; flex-direction: column; gap: 8px; }\n .status-options { display: flex; gap: 16px; padding-top: 6px; }\n .radio { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; cursor: pointer; }\n .role-picker { margin-left: 24px; }\n .error { color: var(--mj-status-error-text, #b91c1c); background: var(--mj-status-error-bg, #fee2e2); padding: 8px 12px; border-radius: 4px; font-size: 13px; margin-top: 8px; }\n .btn { padding: 8px 16px; border: 1px solid var(--mj-border-default, #e0e0e0); border-radius: 4px; background: var(--mj-bg-surface, #fff); color: var(--mj-text-primary, #111); font-size: 14px; cursor: pointer; }\n .btn-primary { background: var(--mj-brand-primary, #5B4FE9); color: #fff; border-color: var(--mj-brand-primary, #5B4FE9); font-weight: 500; }\n `],\n})\nexport class FormOverrideDialogComponent extends BaseAngularComponent implements OnInit, OnChanges {\n\n /**\n * Plain `@Input()`. Per-open re-sync of editable state happens in\n * `ngOnChanges` — that's the only Angular hook that fires AFTER all\n * inputs in a single change-detection cycle are bound. The earlier\n * setter-based approach fired BEFORE peer inputs (`InitialName`,\n * `InitialDescription`, etc.) were set, so the dialog rendered with\n * stale or empty pre-fill values.\n */\n @Input() Visible = false;\n\n @Input() ComponentName = '';\n @Input() EntityName = '';\n /** Pre-fill for the Description textarea (cockpit's input value). */\n @Input() InitialDescription: string | null = null;\n /** Pre-fill for the Name input (defaults to ComponentName). */\n @Input() InitialName: string | null = null;\n /** Pre-fill for the Notes textarea (when present in the cockpit). */\n @Input() InitialNotes: string | null = null;\n /** Pre-fill for the Status radio group. Default: 'Pending'. */\n @Input() InitialStatus: OverrideStatus | null = null;\n /** Pre-fill for the Scope radio group. Default: 'User'. */\n @Input() InitialScope: OverrideScope | null = null;\n /** Pre-fill for the Role select (when Scope='Role'). */\n @Input() InitialRoleID: string | null | undefined = undefined;\n /** Pre-fill for the Priority numeric input. Default: 0. */\n @Input() InitialPriority: number | undefined = undefined;\n /**\n * When true, render the dialog as \"Edit form details\" instead of\n * \"Activate this form\" — same fields, different framing. The\n * confirm button reads \"Save changes\" and the explanatory hint adapts.\n */\n @Input() EditMode = false;\n\n @Output() confirmed = new EventEmitter<FormOverrideDialogResult>();\n @Output() dismissed = new EventEmitter<void>();\n\n public Name = '';\n public Description: string | null = null;\n public Notes: string | null = null;\n public Scope: OverrideScope = 'User';\n public RoleID: string | null = null;\n public Priority = 0;\n public Status: OverrideStatus = 'Pending';\n public validationError: string | null = null;\n\n public availableRoles: RoleInfo[] = [];\n\n private readonly cd = inject(ChangeDetectorRef);\n\n ngOnInit(): void {\n // Load roles eagerly — small list, used only when Scope='Role'.\n const provider = this.ProviderToUse;\n this.availableRoles = provider?.Roles ?? [];\n }\n\n /**\n * Re-sync editable state every time `Visible` flips false→true, AFTER\n * Angular has bound all the peer `@Input()`s for the same change-\n * detection cycle. The previous setter-based approach fired BEFORE\n * sibling inputs (`InitialName`, etc.) had landed, leaving the dialog\n * pre-fill empty.\n */\n ngOnChanges(changes: SimpleChanges): void {\n const visChange = changes['Visible'];\n if (!visChange) return;\n const becameVisible = !visChange.previousValue && visChange.currentValue;\n if (becameVisible) {\n this.resetFromInputs();\n }\n }\n\n /**\n * Sync editable state from `@Input()`s. Called on first open AND on\n * every subsequent Visible: false → true transition so the dialog\n * doesn't show stale data from a previous invocation.\n */\n private resetFromInputs(): void {\n this.Name = (this.InitialName?.trim() || this.ComponentName || '').trim();\n this.Description = this.InitialDescription?.trim() || null;\n this.Notes = this.InitialNotes?.trim() || null;\n this.validationError = null;\n // Default Status to Pending — matches the new \"create as draft,\n // activate later\" workflow. Edit-mode callers will override via\n // InitialStatus.\n if (this.InitialStatus) this.Status = this.InitialStatus;\n if (this.InitialScope) this.Scope = this.InitialScope;\n if (this.InitialRoleID !== undefined) this.RoleID = this.InitialRoleID;\n if (this.InitialPriority !== undefined) this.Priority = this.InitialPriority;\n this.cd.markForCheck();\n }\n\n public OnNameInput(e: Event): void {\n this.Name = (e.target as HTMLInputElement).value;\n }\n\n public OnDescriptionInput(e: Event): void {\n const v = (e.target as HTMLTextAreaElement).value;\n this.Description = v.trim().length > 0 ? v : null;\n }\n\n public OnNotesInput(e: Event): void {\n const v = (e.target as HTMLTextAreaElement).value;\n this.Notes = v.trim().length > 0 ? v : null;\n }\n\n public OnScopeChange(scope: OverrideScope): void {\n this.Scope = scope;\n if (scope !== 'Role') {\n this.RoleID = null;\n }\n }\n\n public OnRoleChanged(e: Event): void {\n const v = (e.target as HTMLSelectElement).value;\n this.RoleID = v.length > 0 ? v : null;\n }\n\n public OnPriorityInput(e: Event): void {\n const parsed = parseInt((e.target as HTMLInputElement).value, 10);\n this.Priority = isNaN(parsed) ? 0 : parsed;\n }\n\n public OnConfirmClick(): void {\n if (!this.Name?.trim()) {\n this.validationError = 'Name is required.';\n return;\n }\n if (!this.EntityName) {\n this.validationError = 'No entity selected. Pick one in the Field Binding inspector before activating.';\n return;\n }\n if (this.Scope === 'Role' && !this.RoleID) {\n this.validationError = 'Pick a role when Scope = Role.';\n return;\n }\n this.validationError = null;\n this.confirmed.emit({\n Name: this.Name.trim(),\n Description: this.Description,\n Notes: this.Notes,\n EntityName: this.EntityName,\n Scope: this.Scope,\n RoleID: this.RoleID,\n Priority: this.Priority,\n Status: this.Status,\n });\n }\n\n public OnCancelClick(): void {\n this.dismissed.emit();\n }\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
2
2
|
import { ComponentSpec } from '@memberjunction/interactive-component-types';
|
|
3
|
+
import { FormHostProps, FormMode } from '@memberjunction/interactive-component-types/forms';
|
|
3
4
|
import { ReactComponentEvent, MJReactComponent } from '@memberjunction/ng-react';
|
|
4
5
|
import { CompositeKey } from '@memberjunction/core';
|
|
5
6
|
import { ComponentStudioStateService, ComponentError } from '../../services/component-studio-state.service';
|
|
@@ -26,7 +27,23 @@ export declare class ComponentPreviewComponent implements OnInit, OnDestroy {
|
|
|
26
27
|
ActiveViewport: ViewportSize;
|
|
27
28
|
readonly ViewportPresets: ViewportPreset[];
|
|
28
29
|
LocalComponentSpec: ComponentSpec | null;
|
|
30
|
+
/** Recent records of the target entity for the optional real-record picker. */
|
|
31
|
+
RecentRecords: Array<{
|
|
32
|
+
ID: string;
|
|
33
|
+
Display: string;
|
|
34
|
+
}>;
|
|
35
|
+
SelectedRecordID: string | null;
|
|
36
|
+
/** When a real record is loaded, this holds its fields keyed by name. */
|
|
37
|
+
LoadedRecordValues: Record<string, unknown> | null;
|
|
38
|
+
IsLoadingRecord: boolean;
|
|
39
|
+
/** Last 20 events emitted by the previewed component, newest first. */
|
|
40
|
+
EventLog: Array<{
|
|
41
|
+
Timestamp: Date;
|
|
42
|
+
Type: string;
|
|
43
|
+
Payload: string;
|
|
44
|
+
}>;
|
|
29
45
|
private destroy$;
|
|
46
|
+
private lastLoadedEntity;
|
|
30
47
|
constructor(State: ComponentStudioStateService, cdr: ChangeDetectorRef);
|
|
31
48
|
ngOnInit(): void;
|
|
32
49
|
ngOnDestroy(): void;
|
|
@@ -38,6 +55,30 @@ export declare class ComponentPreviewComponent implements OnInit, OnDestroy {
|
|
|
38
55
|
GetActivePreset(): ViewportPreset;
|
|
39
56
|
GetPreviewContainerMaxWidth(): string;
|
|
40
57
|
OnComponentEvent(event: ReactComponentEvent): void;
|
|
58
|
+
/** True when the current spec is form-role (drives the sandbox UI). */
|
|
59
|
+
get IsFormRolePreview(): boolean;
|
|
60
|
+
/** Convenience for the template — the entity name the form binds to. */
|
|
61
|
+
get FormTargetEntity(): string | null;
|
|
62
|
+
/** Selected preview mode (delegates to the shared state). */
|
|
63
|
+
get FormPreviewMode(): FormMode;
|
|
64
|
+
SetFormPreviewMode(mode: FormMode): void;
|
|
65
|
+
/** Add an entry to the event log; keep the log bounded to 20 entries. */
|
|
66
|
+
private logEvent;
|
|
67
|
+
private summarisePayload;
|
|
68
|
+
ClearEventLog(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Load the top 10 most-recent records for the target entity so the
|
|
71
|
+
* preview can swap from fixture to real-record mode. Re-runs whenever
|
|
72
|
+
* the target entity changes; quiet no-op if entity isn't set yet.
|
|
73
|
+
*/
|
|
74
|
+
private maybeRefreshRecentRecords;
|
|
75
|
+
/**
|
|
76
|
+
* Load a real record for preview. We pull the full entity object then
|
|
77
|
+
* extract its field values into a plain object for FormHostProps.
|
|
78
|
+
* Sandboxed — any BeforeSave/BeforeDelete events emitted by the previewed
|
|
79
|
+
* component are logged, never applied.
|
|
80
|
+
*/
|
|
81
|
+
OnPickRecord(event: Event): Promise<void>;
|
|
41
82
|
/**
|
|
42
83
|
* Fires once the React bridge has resolved the full component hierarchy from the
|
|
43
84
|
* registry. The bridge stores the resolved spec (with real dependency code, not
|
|
@@ -52,6 +93,19 @@ export declare class ComponentPreviewComponent implements OnInit, OnDestroy {
|
|
|
52
93
|
GetComponentName(): string;
|
|
53
94
|
GetComponentDescription(): string | undefined;
|
|
54
95
|
private syncSpecFromState;
|
|
96
|
+
/**
|
|
97
|
+
* Fixture `FormHostProps` for form-role component previews. Built from
|
|
98
|
+
* the curated schema of `State.FormTargetEntityName` — the entity the
|
|
99
|
+
* user picked in the Field Binding Inspector. Returns an empty object
|
|
100
|
+
* when (a) the current spec isn't a form, (b) no target entity is
|
|
101
|
+
* selected, or (c) the entity isn't registered with the provider — in
|
|
102
|
+
* which case the previewed component sees `record === undefined` and
|
|
103
|
+
* should handle that gracefully (the Studio skeleton does).
|
|
104
|
+
*
|
|
105
|
+
* The mode toggles to 'edit' so authors can see how inputs render
|
|
106
|
+
* without manually flipping mode each refresh.
|
|
107
|
+
*/
|
|
108
|
+
get FixtureFormHostProps(): Partial<FormHostProps> | object;
|
|
55
109
|
/**
|
|
56
110
|
* Refresh the preview by nulling the spec, detecting changes,
|
|
57
111
|
* then restoring the spec after a short delay. The bridge's own
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-preview.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/workspace/component-preview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,MAAM,EACN,SAAS,EAET,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,
|
|
1
|
+
{"version":3,"file":"component-preview.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/workspace/component-preview.component.ts"],"names":[],"mappings":"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"}
|