@memberjunction/ng-dashboards 5.8.0 → 5.9.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/dist/AI/components/models/model-management.component.d.ts +2 -0
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +44 -2
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +5 -2
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +10 -7
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts +96 -0
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -0
- package/dist/Integration/components/activity/activity.component.js +961 -0
- package/dist/Integration/components/activity/activity.component.js.map +1 -0
- package/dist/Integration/components/connections/connections.component.d.ts +194 -0
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -0
- package/dist/Integration/components/connections/connections.component.js +2368 -0
- package/dist/Integration/components/connections/connections.component.js.map +1 -0
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts +211 -13
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +2093 -187
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.d.ts +60 -0
- package/dist/Integration/components/overview/overview.component.d.ts.map +1 -0
- package/dist/Integration/components/overview/overview.component.js +628 -0
- package/dist/Integration/components/overview/overview.component.js.map +1 -0
- package/dist/Integration/components/pipelines/pipelines.component.d.ts +203 -0
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -0
- package/dist/Integration/components/pipelines/pipelines.component.js +2057 -0
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -0
- package/dist/Integration/components/schedules/schedules.component.d.ts +110 -0
- package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -0
- package/dist/Integration/components/schedules/schedules.component.js +842 -0
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -0
- package/dist/Integration/components/visual-editor/visual-editor.component.d.ts +141 -0
- package/dist/Integration/components/visual-editor/visual-editor.component.d.ts.map +1 -0
- package/dist/Integration/components/visual-editor/visual-editor.component.js +1538 -0
- package/dist/Integration/components/visual-editor/visual-editor.component.js.map +1 -0
- package/dist/Integration/components/widgets/run-history-panel.component.js +3 -2
- package/dist/Integration/components/widgets/run-history-panel.component.js.map +1 -1
- package/dist/Integration/index.d.ts +5 -3
- package/dist/Integration/index.d.ts.map +1 -1
- package/dist/Integration/index.js +11 -7
- package/dist/Integration/index.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +20 -16
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +40 -21
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/Integration/services/integration-data.service.d.ts +117 -3
- package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
- package/dist/Integration/services/integration-data.service.js +415 -10
- package/dist/Integration/services/integration-data.service.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +27 -4
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +338 -144
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/__tests__/mapping-validation.test.d.ts +2 -0
- package/dist/__tests__/mapping-validation.test.d.ts.map +1 -0
- package/dist/__tests__/mapping-validation.test.js +170 -0
- package/dist/__tests__/mapping-validation.test.js.map +1 -0
- package/package.json +40 -38
- package/dist/Integration/components/connection-studio/connection-studio.component.d.ts +0 -81
- package/dist/Integration/components/connection-studio/connection-studio.component.d.ts.map +0 -1
- package/dist/Integration/components/connection-studio/connection-studio.component.js +0 -960
- package/dist/Integration/components/connection-studio/connection-studio.component.js.map +0 -1
- package/dist/Integration/components/control-tower/control-tower.component.d.ts +0 -43
- package/dist/Integration/components/control-tower/control-tower.component.d.ts.map +0 -1
- package/dist/Integration/components/control-tower/control-tower.component.js +0 -446
- package/dist/Integration/components/control-tower/control-tower.component.js.map +0 -1
- package/dist/Integration/components/sync-activity/sync-activity.component.d.ts +0 -65
- package/dist/Integration/components/sync-activity/sync-activity.component.d.ts.map +0 -1
- package/dist/Integration/components/sync-activity/sync-activity.component.js +0 -671
- package/dist/Integration/components/sync-activity/sync-activity.component.js.map +0 -1
- package/dist/__tests__/connection-studio.test.d.ts +0 -2
- package/dist/__tests__/connection-studio.test.d.ts.map +0 -1
- package/dist/__tests__/connection-studio.test.js +0 -186
- package/dist/__tests__/connection-studio.test.js.map +0 -1
|
@@ -1,960 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { Component, ChangeDetectorRef, inject } from '@angular/core';
|
|
8
|
-
import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
|
|
9
|
-
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
10
|
-
import { Metadata, RunView } from '@memberjunction/core';
|
|
11
|
-
import { IntegrationDataService } from '../../services/integration-data.service';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/forms";
|
|
14
|
-
import * as i2 from "@progress/kendo-angular-buttons";
|
|
15
|
-
import * as i3 from "@progress/kendo-angular-dropdowns";
|
|
16
|
-
import * as i4 from "@progress/kendo-angular-inputs";
|
|
17
|
-
import * as i5 from "@memberjunction/ng-shared-generic";
|
|
18
|
-
import * as i6 from "@memberjunction/ng-credentials";
|
|
19
|
-
const _c0 = () => ({ ID: null, Name: "Select a company..." });
|
|
20
|
-
const _forTrack0 = ($index, $item) => $item.Index;
|
|
21
|
-
const _forTrack1 = ($index, $item) => $item.ID;
|
|
22
|
-
function ConnectionStudioComponent_For_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
-
i0.ɵɵelement(0, "i", 9);
|
|
24
|
-
} }
|
|
25
|
-
function ConnectionStudioComponent_For_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
-
i0.ɵɵtext(0);
|
|
27
|
-
} if (rf & 2) {
|
|
28
|
-
const step_r1 = i0.ɵɵnextContext().$implicit;
|
|
29
|
-
i0.ɵɵtextInterpolate1(" ", step_r1.Index + 1, " ");
|
|
30
|
-
} }
|
|
31
|
-
function ConnectionStudioComponent_For_7_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
-
i0.ɵɵelement(0, "div", 12);
|
|
33
|
-
} if (rf & 2) {
|
|
34
|
-
const step_r1 = i0.ɵɵnextContext().$implicit;
|
|
35
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
36
|
-
i0.ɵɵclassProp("completed", ctx_r1.CurrentStep > step_r1.Index);
|
|
37
|
-
} }
|
|
38
|
-
function ConnectionStudioComponent_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
-
i0.ɵɵelementStart(0, "div", 7)(1, "div", 8);
|
|
40
|
-
i0.ɵɵconditionalCreate(2, ConnectionStudioComponent_For_7_Conditional_2_Template, 1, 0, "i", 9)(3, ConnectionStudioComponent_For_7_Conditional_3_Template, 1, 1);
|
|
41
|
-
i0.ɵɵelementEnd();
|
|
42
|
-
i0.ɵɵelementStart(4, "span", 10);
|
|
43
|
-
i0.ɵɵtext(5);
|
|
44
|
-
i0.ɵɵelementEnd()();
|
|
45
|
-
i0.ɵɵconditionalCreate(6, ConnectionStudioComponent_For_7_Conditional_6_Template, 1, 2, "div", 11);
|
|
46
|
-
} if (rf & 2) {
|
|
47
|
-
const step_r1 = ctx.$implicit;
|
|
48
|
-
const ɵ$index_12_r3 = ctx.$index;
|
|
49
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
50
|
-
i0.ɵɵclassProp("active", ctx_r1.CurrentStep === step_r1.Index)("completed", ctx_r1.CurrentStep > step_r1.Index);
|
|
51
|
-
i0.ɵɵadvance(2);
|
|
52
|
-
i0.ɵɵconditional(ctx_r1.CurrentStep > step_r1.Index ? 2 : 3);
|
|
53
|
-
i0.ɵɵadvance(3);
|
|
54
|
-
i0.ɵɵtextInterpolate(step_r1.Label);
|
|
55
|
-
i0.ɵɵadvance();
|
|
56
|
-
i0.ɵɵconditional(ɵ$index_12_r3 < ctx_r1.Steps.length - 1 ? 6 : -1);
|
|
57
|
-
} }
|
|
58
|
-
function ConnectionStudioComponent_Conditional_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
-
i0.ɵɵelement(0, "mj-loading", 14);
|
|
60
|
-
} }
|
|
61
|
-
function ConnectionStudioComponent_Conditional_8_Conditional_6_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
62
|
-
i0.ɵɵelementStart(0, "span", 20);
|
|
63
|
-
i0.ɵɵtext(1);
|
|
64
|
-
i0.ɵɵelementEnd();
|
|
65
|
-
} if (rf & 2) {
|
|
66
|
-
const integration_r6 = i0.ɵɵnextContext().$implicit;
|
|
67
|
-
i0.ɵɵadvance();
|
|
68
|
-
i0.ɵɵtextInterpolate(integration_r6.Description);
|
|
69
|
-
} }
|
|
70
|
-
function ConnectionStudioComponent_Conditional_8_Conditional_6_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
-
const _r5 = i0.ɵɵgetCurrentView();
|
|
72
|
-
i0.ɵɵelementStart(0, "div", 25);
|
|
73
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_8_Conditional_6_For_2_Template_div_click_0_listener() { const integration_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SelectIntegration(integration_r6)); });
|
|
74
|
-
i0.ɵɵelement(1, "i", 26);
|
|
75
|
-
i0.ɵɵelementStart(2, "span", 19);
|
|
76
|
-
i0.ɵɵtext(3);
|
|
77
|
-
i0.ɵɵelementEnd();
|
|
78
|
-
i0.ɵɵconditionalCreate(4, ConnectionStudioComponent_Conditional_8_Conditional_6_For_2_Conditional_4_Template, 2, 1, "span", 20);
|
|
79
|
-
i0.ɵɵelementEnd();
|
|
80
|
-
} if (rf & 2) {
|
|
81
|
-
const integration_r6 = ctx.$implicit;
|
|
82
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
83
|
-
i0.ɵɵclassProp("selected", ctx_r1.IsSelectedIntegration(integration_r6.ID));
|
|
84
|
-
i0.ɵɵadvance();
|
|
85
|
-
i0.ɵɵclassMap(ctx_r1.IntegrationIcon(integration_r6));
|
|
86
|
-
i0.ɵɵadvance(2);
|
|
87
|
-
i0.ɵɵtextInterpolate(integration_r6.Name);
|
|
88
|
-
i0.ɵɵadvance();
|
|
89
|
-
i0.ɵɵconditional(integration_r6.Description ? 4 : -1);
|
|
90
|
-
} }
|
|
91
|
-
function ConnectionStudioComponent_Conditional_8_Conditional_6_Conditional_9_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
92
|
-
const _r7 = i0.ɵɵgetCurrentView();
|
|
93
|
-
i0.ɵɵelementStart(0, "div", 30);
|
|
94
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_8_Conditional_6_Conditional_9_For_5_Template_div_click_0_listener() { const st_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectCustomSourceType(st_r8)); });
|
|
95
|
-
i0.ɵɵelement(1, "i");
|
|
96
|
-
i0.ɵɵtext(2);
|
|
97
|
-
i0.ɵɵelementEnd();
|
|
98
|
-
} if (rf & 2) {
|
|
99
|
-
const st_r8 = ctx.$implicit;
|
|
100
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
101
|
-
i0.ɵɵclassProp("selected", ctx_r1.IsSelectedCustomSourceType(st_r8.ID));
|
|
102
|
-
i0.ɵɵadvance();
|
|
103
|
-
i0.ɵɵclassMap(st_r8.IconClass ?? "fa-solid fa-plug");
|
|
104
|
-
i0.ɵɵadvance();
|
|
105
|
-
i0.ɵɵtextInterpolate1(" ", st_r8.Name, " ");
|
|
106
|
-
} }
|
|
107
|
-
function ConnectionStudioComponent_Conditional_8_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
108
|
-
i0.ɵɵelementStart(0, "div", 21)(1, "div", 27);
|
|
109
|
-
i0.ɵɵtext(2, "Select a connection type:");
|
|
110
|
-
i0.ɵɵelementEnd();
|
|
111
|
-
i0.ɵɵelementStart(3, "div", 28);
|
|
112
|
-
i0.ɵɵrepeaterCreate(4, ConnectionStudioComponent_Conditional_8_Conditional_6_Conditional_9_For_5_Template, 3, 5, "div", 29, _forTrack1);
|
|
113
|
-
i0.ɵɵelementEnd()();
|
|
114
|
-
} if (rf & 2) {
|
|
115
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
116
|
-
i0.ɵɵadvance(4);
|
|
117
|
-
i0.ɵɵrepeater(ctx_r1.SourceTypes);
|
|
118
|
-
} }
|
|
119
|
-
function ConnectionStudioComponent_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
120
|
-
const _r4 = i0.ɵɵgetCurrentView();
|
|
121
|
-
i0.ɵɵelementStart(0, "div", 15);
|
|
122
|
-
i0.ɵɵrepeaterCreate(1, ConnectionStudioComponent_Conditional_8_Conditional_6_For_2_Template, 5, 6, "div", 16, _forTrack1);
|
|
123
|
-
i0.ɵɵelementStart(3, "div", 17);
|
|
124
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_8_Conditional_6_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SelectCustomMode()); });
|
|
125
|
-
i0.ɵɵelement(4, "i", 18);
|
|
126
|
-
i0.ɵɵelementStart(5, "span", 19);
|
|
127
|
-
i0.ɵɵtext(6, "Custom");
|
|
128
|
-
i0.ɵɵelementEnd();
|
|
129
|
-
i0.ɵɵelementStart(7, "span", 20);
|
|
130
|
-
i0.ɵɵtext(8, "Manual configuration with any source type");
|
|
131
|
-
i0.ɵɵelementEnd()()();
|
|
132
|
-
i0.ɵɵconditionalCreate(9, ConnectionStudioComponent_Conditional_8_Conditional_6_Conditional_9_Template, 6, 0, "div", 21);
|
|
133
|
-
i0.ɵɵelementStart(10, "div", 22)(11, "button", 23);
|
|
134
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_8_Conditional_6_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.NextStep()); });
|
|
135
|
-
i0.ɵɵtext(12, " Next ");
|
|
136
|
-
i0.ɵɵelement(13, "i", 24);
|
|
137
|
-
i0.ɵɵelementEnd()();
|
|
138
|
-
} if (rf & 2) {
|
|
139
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
140
|
-
i0.ɵɵadvance();
|
|
141
|
-
i0.ɵɵrepeater(ctx_r1.Integrations);
|
|
142
|
-
i0.ɵɵadvance(2);
|
|
143
|
-
i0.ɵɵclassProp("selected", ctx_r1.UseCustomMode);
|
|
144
|
-
i0.ɵɵadvance(6);
|
|
145
|
-
i0.ɵɵconditional(ctx_r1.UseCustomMode ? 9 : -1);
|
|
146
|
-
i0.ɵɵadvance(2);
|
|
147
|
-
i0.ɵɵproperty("themeColor", "primary")("disabled", !ctx_r1.IsStep1Valid);
|
|
148
|
-
} }
|
|
149
|
-
function ConnectionStudioComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
150
|
-
i0.ɵɵelementStart(0, "div", 5)(1, "h3");
|
|
151
|
-
i0.ɵɵtext(2, "Choose Integration");
|
|
152
|
-
i0.ɵɵelementEnd();
|
|
153
|
-
i0.ɵɵelementStart(3, "p", 13);
|
|
154
|
-
i0.ɵɵtext(4, "Select the system you want to connect to, or set up a custom connection.");
|
|
155
|
-
i0.ɵɵelementEnd();
|
|
156
|
-
i0.ɵɵconditionalCreate(5, ConnectionStudioComponent_Conditional_8_Conditional_5_Template, 1, 0, "mj-loading", 14)(6, ConnectionStudioComponent_Conditional_8_Conditional_6_Template, 14, 5);
|
|
157
|
-
i0.ɵɵelementEnd();
|
|
158
|
-
} if (rf & 2) {
|
|
159
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
160
|
-
i0.ɵɵadvance(5);
|
|
161
|
-
i0.ɵɵconditional(ctx_r1.IsLoadingIntegrations ? 5 : 6);
|
|
162
|
-
} }
|
|
163
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
164
|
-
i0.ɵɵelement(0, "i", 50);
|
|
165
|
-
} }
|
|
166
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_8_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
-
i0.ɵɵelement(0, "i", 51);
|
|
168
|
-
i0.ɵɵtext(1, " Create ");
|
|
169
|
-
} }
|
|
170
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
171
|
-
const _r10 = i0.ɵɵgetCurrentView();
|
|
172
|
-
i0.ɵɵelementStart(0, "div", 31)(1, "div", 43);
|
|
173
|
-
i0.ɵɵelement(2, "i", 44);
|
|
174
|
-
i0.ɵɵelementEnd();
|
|
175
|
-
i0.ɵɵelementStart(3, "div", 45)(4, "div", 46);
|
|
176
|
-
i0.ɵɵtext(5, "Set Up Your Organization");
|
|
177
|
-
i0.ɵɵelementEnd();
|
|
178
|
-
i0.ɵɵelementStart(6, "div", 47);
|
|
179
|
-
i0.ɵɵtext(7, " Integrations are scoped to a company. Create one to get started. ");
|
|
180
|
-
i0.ɵɵelementEnd();
|
|
181
|
-
i0.ɵɵelementStart(8, "div", 48)(9, "input", 49);
|
|
182
|
-
i0.ɵɵtwoWayListener("ngModelChange", function ConnectionStudioComponent_Conditional_9_Conditional_8_Template_input_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.NewCompanyName, $event) || (ctx_r1.NewCompanyName = $event); return i0.ɵɵresetView($event); });
|
|
183
|
-
i0.ɵɵelementEnd();
|
|
184
|
-
i0.ɵɵelementStart(10, "button", 23);
|
|
185
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_9_Conditional_8_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CreateCompany()); });
|
|
186
|
-
i0.ɵɵconditionalCreate(11, ConnectionStudioComponent_Conditional_9_Conditional_8_Conditional_11_Template, 1, 0, "i", 50)(12, ConnectionStudioComponent_Conditional_9_Conditional_8_Conditional_12_Template, 2, 0);
|
|
187
|
-
i0.ɵɵelementEnd()()()();
|
|
188
|
-
} if (rf & 2) {
|
|
189
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
190
|
-
i0.ɵɵadvance(9);
|
|
191
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.NewCompanyName);
|
|
192
|
-
i0.ɵɵadvance();
|
|
193
|
-
i0.ɵɵproperty("themeColor", "primary")("disabled", !ctx_r1.NewCompanyName.trim() || ctx_r1.IsCreatingCompany);
|
|
194
|
-
i0.ɵɵadvance();
|
|
195
|
-
i0.ɵɵconditional(ctx_r1.IsCreatingCompany ? 11 : 12);
|
|
196
|
-
} }
|
|
197
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
198
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
|
199
|
-
i0.ɵɵelementStart(0, "div", 33)(1, "label");
|
|
200
|
-
i0.ɵɵtext(2, "Company");
|
|
201
|
-
i0.ɵɵelementEnd();
|
|
202
|
-
i0.ɵɵelementStart(3, "kendo-dropdownlist", 52);
|
|
203
|
-
i0.ɵɵtwoWayListener("ngModelChange", function ConnectionStudioComponent_Conditional_9_Conditional_10_Template_kendo_dropdownlist_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.SelectedCompanyID, $event) || (ctx_r1.SelectedCompanyID = $event); return i0.ɵɵresetView($event); });
|
|
204
|
-
i0.ɵɵelementEnd()();
|
|
205
|
-
} if (rf & 2) {
|
|
206
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
207
|
-
i0.ɵɵadvance(3);
|
|
208
|
-
i0.ɵɵproperty("data", ctx_r1.Companies)("textField", "Name")("valueField", "ID")("valuePrimitive", true);
|
|
209
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedCompanyID);
|
|
210
|
-
i0.ɵɵproperty("defaultItem", i0.ɵɵpureFunction0(6, _c0));
|
|
211
|
-
} }
|
|
212
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_22_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
213
|
-
i0.ɵɵelementStart(0, "div", 57);
|
|
214
|
-
i0.ɵɵtext(1);
|
|
215
|
-
i0.ɵɵelementEnd();
|
|
216
|
-
} if (rf & 2) {
|
|
217
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
218
|
-
i0.ɵɵadvance();
|
|
219
|
-
i0.ɵɵtextInterpolate(ctx_r1.CredentialTypeName);
|
|
220
|
-
} }
|
|
221
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
222
|
-
const _r12 = i0.ɵɵgetCurrentView();
|
|
223
|
-
i0.ɵɵelementStart(0, "div", 38)(1, "div", 53);
|
|
224
|
-
i0.ɵɵelement(2, "i", 54);
|
|
225
|
-
i0.ɵɵelementStart(3, "div", 55)(4, "div", 56);
|
|
226
|
-
i0.ɵɵtext(5);
|
|
227
|
-
i0.ɵɵelementEnd();
|
|
228
|
-
i0.ɵɵconditionalCreate(6, ConnectionStudioComponent_Conditional_9_Conditional_22_Conditional_6_Template, 2, 1, "div", 57);
|
|
229
|
-
i0.ɵɵelementEnd()();
|
|
230
|
-
i0.ɵɵelementStart(7, "div", 58)(8, "button", 59);
|
|
231
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_9_Conditional_22_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ClearCredential()); });
|
|
232
|
-
i0.ɵɵelement(9, "i", 60);
|
|
233
|
-
i0.ɵɵelementEnd();
|
|
234
|
-
i0.ɵɵelementStart(10, "button", 61);
|
|
235
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_9_Conditional_22_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ClearCredential()); });
|
|
236
|
-
i0.ɵɵelement(11, "i", 62);
|
|
237
|
-
i0.ɵɵelementEnd()()();
|
|
238
|
-
} if (rf & 2) {
|
|
239
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
240
|
-
i0.ɵɵadvance(5);
|
|
241
|
-
i0.ɵɵtextInterpolate(ctx_r1.SelectedCredential.Name);
|
|
242
|
-
i0.ɵɵadvance();
|
|
243
|
-
i0.ɵɵconditional(ctx_r1.CredentialTypeName ? 6 : -1);
|
|
244
|
-
i0.ɵɵadvance(2);
|
|
245
|
-
i0.ɵɵproperty("look", "flat");
|
|
246
|
-
i0.ɵɵadvance(2);
|
|
247
|
-
i0.ɵɵproperty("look", "flat");
|
|
248
|
-
} }
|
|
249
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
250
|
-
const _r13 = i0.ɵɵgetCurrentView();
|
|
251
|
-
i0.ɵɵelementStart(0, "div", 39)(1, "button", 63);
|
|
252
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_9_Conditional_23_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ShowExistingCredentials()); });
|
|
253
|
-
i0.ɵɵelement(2, "i", 64);
|
|
254
|
-
i0.ɵɵtext(3, " Use Existing Credential ");
|
|
255
|
-
i0.ɵɵelementEnd();
|
|
256
|
-
i0.ɵɵelementStart(4, "span", 65);
|
|
257
|
-
i0.ɵɵtext(5, "or");
|
|
258
|
-
i0.ɵɵelementEnd();
|
|
259
|
-
i0.ɵɵelementStart(6, "button", 63);
|
|
260
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_9_Conditional_23_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenCredentialDialog()); });
|
|
261
|
-
i0.ɵɵelement(7, "i", 51);
|
|
262
|
-
i0.ɵɵtext(8, " Create New Credential ");
|
|
263
|
-
i0.ɵɵelementEnd()();
|
|
264
|
-
} if (rf & 2) {
|
|
265
|
-
i0.ɵɵadvance();
|
|
266
|
-
i0.ɵɵproperty("look", "outline");
|
|
267
|
-
i0.ɵɵadvance(5);
|
|
268
|
-
i0.ɵɵproperty("look", "outline");
|
|
269
|
-
} }
|
|
270
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
271
|
-
i0.ɵɵelement(0, "mj-loading", 68);
|
|
272
|
-
} }
|
|
273
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
274
|
-
const _r15 = i0.ɵɵgetCurrentView();
|
|
275
|
-
i0.ɵɵelementStart(0, "div", 69);
|
|
276
|
-
i0.ɵɵelement(1, "i", 71);
|
|
277
|
-
i0.ɵɵelementStart(2, "span");
|
|
278
|
-
i0.ɵɵtext(3, "No matching credentials found.");
|
|
279
|
-
i0.ɵɵelementEnd();
|
|
280
|
-
i0.ɵɵelementStart(4, "button", 63);
|
|
281
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_8_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenCredentialDialog()); });
|
|
282
|
-
i0.ɵɵelement(5, "i", 51);
|
|
283
|
-
i0.ɵɵtext(6, " Create One ");
|
|
284
|
-
i0.ɵɵelementEnd()();
|
|
285
|
-
} if (rf & 2) {
|
|
286
|
-
i0.ɵɵadvance(4);
|
|
287
|
-
i0.ɵɵproperty("look", "outline");
|
|
288
|
-
} }
|
|
289
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_9_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
290
|
-
i0.ɵɵelementStart(0, "div", 77);
|
|
291
|
-
i0.ɵɵtext(1);
|
|
292
|
-
i0.ɵɵelementEnd();
|
|
293
|
-
} if (rf & 2) {
|
|
294
|
-
const cred_r17 = i0.ɵɵnextContext().$implicit;
|
|
295
|
-
i0.ɵɵadvance();
|
|
296
|
-
i0.ɵɵtextInterpolate(cred_r17.Description);
|
|
297
|
-
} }
|
|
298
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
299
|
-
const _r16 = i0.ɵɵgetCurrentView();
|
|
300
|
-
i0.ɵɵelementStart(0, "div", 73);
|
|
301
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_9_For_2_Template_div_click_0_listener() { const cred_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectExistingCredential(cred_r17)); });
|
|
302
|
-
i0.ɵɵelement(1, "i", 74);
|
|
303
|
-
i0.ɵɵelementStart(2, "div", 75)(3, "div", 76);
|
|
304
|
-
i0.ɵɵtext(4);
|
|
305
|
-
i0.ɵɵelementEnd();
|
|
306
|
-
i0.ɵɵconditionalCreate(5, ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_9_For_2_Conditional_5_Template, 2, 1, "div", 77);
|
|
307
|
-
i0.ɵɵelementEnd();
|
|
308
|
-
i0.ɵɵelement(6, "i", 78);
|
|
309
|
-
i0.ɵɵelementEnd();
|
|
310
|
-
} if (rf & 2) {
|
|
311
|
-
const cred_r17 = ctx.$implicit;
|
|
312
|
-
i0.ɵɵadvance(4);
|
|
313
|
-
i0.ɵɵtextInterpolate(cred_r17.Name);
|
|
314
|
-
i0.ɵɵadvance();
|
|
315
|
-
i0.ɵɵconditional(cred_r17.Description ? 5 : -1);
|
|
316
|
-
} }
|
|
317
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
318
|
-
i0.ɵɵelementStart(0, "div", 70);
|
|
319
|
-
i0.ɵɵrepeaterCreate(1, ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_9_For_2_Template, 7, 2, "div", 72, _forTrack1);
|
|
320
|
-
i0.ɵɵelementEnd();
|
|
321
|
-
} if (rf & 2) {
|
|
322
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
323
|
-
i0.ɵɵadvance();
|
|
324
|
-
i0.ɵɵrepeater(ctx_r1.ExistingCredentials);
|
|
325
|
-
} }
|
|
326
|
-
function ConnectionStudioComponent_Conditional_9_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
327
|
-
const _r14 = i0.ɵɵgetCurrentView();
|
|
328
|
-
i0.ɵɵelementStart(0, "div", 40)(1, "div", 66)(2, "button", 63);
|
|
329
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_9_Conditional_24_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.BackToCredentialChoice()); });
|
|
330
|
-
i0.ɵɵelement(3, "i", 42);
|
|
331
|
-
i0.ɵɵtext(4, " Back ");
|
|
332
|
-
i0.ɵɵelementEnd();
|
|
333
|
-
i0.ɵɵelementStart(5, "span", 67);
|
|
334
|
-
i0.ɵɵtext(6, "Select a Credential");
|
|
335
|
-
i0.ɵɵelementEnd()();
|
|
336
|
-
i0.ɵɵconditionalCreate(7, ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_7_Template, 1, 0, "mj-loading", 68)(8, ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_8_Template, 7, 1, "div", 69)(9, ConnectionStudioComponent_Conditional_9_Conditional_24_Conditional_9_Template, 3, 0, "div", 70);
|
|
337
|
-
i0.ɵɵelementEnd();
|
|
338
|
-
} if (rf & 2) {
|
|
339
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
340
|
-
i0.ɵɵadvance(2);
|
|
341
|
-
i0.ɵɵproperty("look", "flat");
|
|
342
|
-
i0.ɵɵadvance(5);
|
|
343
|
-
i0.ɵɵconditional(ctx_r1.IsLoadingCredentials ? 7 : ctx_r1.ExistingCredentials.length === 0 ? 8 : 9);
|
|
344
|
-
} }
|
|
345
|
-
function ConnectionStudioComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
346
|
-
const _r9 = i0.ɵɵgetCurrentView();
|
|
347
|
-
i0.ɵɵelementStart(0, "div", 5)(1, "h3");
|
|
348
|
-
i0.ɵɵtext(2, "Configure Connection");
|
|
349
|
-
i0.ɵɵelementEnd();
|
|
350
|
-
i0.ɵɵelementStart(3, "p", 13);
|
|
351
|
-
i0.ɵɵtext(4, " Name your connection and attach credentials for ");
|
|
352
|
-
i0.ɵɵelementStart(5, "strong");
|
|
353
|
-
i0.ɵɵtext(6);
|
|
354
|
-
i0.ɵɵelementEnd();
|
|
355
|
-
i0.ɵɵtext(7, ". ");
|
|
356
|
-
i0.ɵɵelementEnd();
|
|
357
|
-
i0.ɵɵconditionalCreate(8, ConnectionStudioComponent_Conditional_9_Conditional_8_Template, 13, 4, "div", 31);
|
|
358
|
-
i0.ɵɵelementStart(9, "div", 32);
|
|
359
|
-
i0.ɵɵconditionalCreate(10, ConnectionStudioComponent_Conditional_9_Conditional_10_Template, 4, 7, "div", 33);
|
|
360
|
-
i0.ɵɵelementStart(11, "div", 33)(12, "label");
|
|
361
|
-
i0.ɵɵtext(13, "Connection Name");
|
|
362
|
-
i0.ɵɵelementEnd();
|
|
363
|
-
i0.ɵɵelementStart(14, "input", 34);
|
|
364
|
-
i0.ɵɵtwoWayListener("ngModelChange", function ConnectionStudioComponent_Conditional_9_Template_input_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionName, $event) || (ctx_r1.ConnectionName = $event); return i0.ɵɵresetView($event); });
|
|
365
|
-
i0.ɵɵelementEnd()();
|
|
366
|
-
i0.ɵɵelementStart(15, "div", 33)(16, "label");
|
|
367
|
-
i0.ɵɵtext(17, "Description");
|
|
368
|
-
i0.ɵɵelementEnd();
|
|
369
|
-
i0.ɵɵelementStart(18, "textarea", 35);
|
|
370
|
-
i0.ɵɵtwoWayListener("ngModelChange", function ConnectionStudioComponent_Conditional_9_Template_textarea_ngModelChange_18_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionDescription, $event) || (ctx_r1.ConnectionDescription = $event); return i0.ɵɵresetView($event); });
|
|
371
|
-
i0.ɵɵelementEnd()()();
|
|
372
|
-
i0.ɵɵelementStart(19, "div", 36)(20, "div", 37);
|
|
373
|
-
i0.ɵɵtext(21, "Credentials");
|
|
374
|
-
i0.ɵɵelementEnd();
|
|
375
|
-
i0.ɵɵconditionalCreate(22, ConnectionStudioComponent_Conditional_9_Conditional_22_Template, 12, 4, "div", 38)(23, ConnectionStudioComponent_Conditional_9_Conditional_23_Template, 9, 2, "div", 39)(24, ConnectionStudioComponent_Conditional_9_Conditional_24_Template, 10, 2, "div", 40);
|
|
376
|
-
i0.ɵɵelementEnd();
|
|
377
|
-
i0.ɵɵelementStart(25, "div", 22)(26, "button", 41);
|
|
378
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_9_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.PrevStep()); });
|
|
379
|
-
i0.ɵɵelement(27, "i", 42);
|
|
380
|
-
i0.ɵɵtext(28, " Back ");
|
|
381
|
-
i0.ɵɵelementEnd();
|
|
382
|
-
i0.ɵɵelementStart(29, "button", 23);
|
|
383
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_9_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.NextStep()); });
|
|
384
|
-
i0.ɵɵtext(30, " Next ");
|
|
385
|
-
i0.ɵɵelement(31, "i", 24);
|
|
386
|
-
i0.ɵɵelementEnd()()();
|
|
387
|
-
} if (rf & 2) {
|
|
388
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
389
|
-
i0.ɵɵadvance(6);
|
|
390
|
-
i0.ɵɵtextInterpolate(ctx_r1.SelectedIntegrationName);
|
|
391
|
-
i0.ɵɵadvance(2);
|
|
392
|
-
i0.ɵɵconditional(!ctx_r1.HasCompanies ? 8 : -1);
|
|
393
|
-
i0.ɵɵadvance(2);
|
|
394
|
-
i0.ɵɵconditional(ctx_r1.NeedsCompanyPicker ? 10 : -1);
|
|
395
|
-
i0.ɵɵadvance(4);
|
|
396
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ConnectionName);
|
|
397
|
-
i0.ɵɵadvance(4);
|
|
398
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ConnectionDescription);
|
|
399
|
-
i0.ɵɵadvance(4);
|
|
400
|
-
i0.ɵɵconditional(ctx_r1.SelectedCredential ? 22 : ctx_r1.CredentialPickerMode === "choose" ? 23 : ctx_r1.CredentialPickerMode === "existing" ? 24 : -1);
|
|
401
|
-
i0.ɵɵadvance(7);
|
|
402
|
-
i0.ɵɵproperty("themeColor", "primary")("disabled", !ctx_r1.IsStep2Valid);
|
|
403
|
-
} }
|
|
404
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
405
|
-
const _r18 = i0.ɵɵgetCurrentView();
|
|
406
|
-
i0.ɵɵelementStart(0, "div", 79)(1, "div", 80);
|
|
407
|
-
i0.ɵɵelement(2, "i", 81);
|
|
408
|
-
i0.ɵɵelementEnd();
|
|
409
|
-
i0.ɵɵelementStart(3, "h3");
|
|
410
|
-
i0.ɵɵtext(4, "Connection Saved");
|
|
411
|
-
i0.ɵɵelementEnd();
|
|
412
|
-
i0.ɵɵelementStart(5, "p", 13)(6, "strong");
|
|
413
|
-
i0.ɵɵtext(7);
|
|
414
|
-
i0.ɵɵelementEnd();
|
|
415
|
-
i0.ɵɵtext(8, " has been created and is ready for use. ");
|
|
416
|
-
i0.ɵɵelementEnd();
|
|
417
|
-
i0.ɵɵelementStart(9, "div", 82)(10, "button", 83);
|
|
418
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_10_Conditional_1_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ResetWizard()); });
|
|
419
|
-
i0.ɵɵelement(11, "i", 51);
|
|
420
|
-
i0.ɵɵtext(12, " Create Another Connection ");
|
|
421
|
-
i0.ɵɵelementEnd()()();
|
|
422
|
-
} if (rf & 2) {
|
|
423
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
424
|
-
i0.ɵɵadvance(7);
|
|
425
|
-
i0.ɵɵtextInterpolate(ctx_r1.ConnectionName);
|
|
426
|
-
i0.ɵɵadvance(3);
|
|
427
|
-
i0.ɵɵproperty("themeColor", "primary");
|
|
428
|
-
} }
|
|
429
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
430
|
-
i0.ɵɵelementStart(0, "div", 86)(1, "span", 87);
|
|
431
|
-
i0.ɵɵtext(2, "Source Type:");
|
|
432
|
-
i0.ɵɵelementEnd();
|
|
433
|
-
i0.ɵɵelementStart(3, "span", 88);
|
|
434
|
-
i0.ɵɵtext(4);
|
|
435
|
-
i0.ɵɵelementEnd()();
|
|
436
|
-
} if (rf & 2) {
|
|
437
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
438
|
-
i0.ɵɵadvance(4);
|
|
439
|
-
i0.ɵɵtextInterpolate(ctx_r1.CustomSourceTypeName);
|
|
440
|
-
} }
|
|
441
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
442
|
-
i0.ɵɵelementStart(0, "div", 86)(1, "span", 87);
|
|
443
|
-
i0.ɵɵtext(2, "Company:");
|
|
444
|
-
i0.ɵɵelementEnd();
|
|
445
|
-
i0.ɵɵelementStart(3, "span", 88);
|
|
446
|
-
i0.ɵɵelement(4, "i", 44);
|
|
447
|
-
i0.ɵɵtext(5);
|
|
448
|
-
i0.ɵɵelementEnd()();
|
|
449
|
-
} if (rf & 2) {
|
|
450
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
451
|
-
i0.ɵɵadvance(5);
|
|
452
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.SelectedCompanyName, " ");
|
|
453
|
-
} }
|
|
454
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
455
|
-
i0.ɵɵelement(0, "i", 74);
|
|
456
|
-
i0.ɵɵtext(1);
|
|
457
|
-
} if (rf & 2) {
|
|
458
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
459
|
-
i0.ɵɵadvance();
|
|
460
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.SelectedCredential.Name, " ");
|
|
461
|
-
} }
|
|
462
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
463
|
-
i0.ɵɵelementStart(0, "span", 89);
|
|
464
|
-
i0.ɵɵtext(1, "None attached");
|
|
465
|
-
i0.ɵɵelementEnd();
|
|
466
|
-
} }
|
|
467
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
468
|
-
i0.ɵɵelementStart(0, "p", 90);
|
|
469
|
-
i0.ɵɵtext(1, "Click \"Test Connection\" to verify the configuration.");
|
|
470
|
-
i0.ɵɵelementEnd();
|
|
471
|
-
} }
|
|
472
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
473
|
-
i0.ɵɵelement(0, "mj-loading", 91);
|
|
474
|
-
} }
|
|
475
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
476
|
-
i0.ɵɵelementStart(0, "div", 92);
|
|
477
|
-
i0.ɵɵelement(1, "i", 81);
|
|
478
|
-
i0.ɵɵtext(2);
|
|
479
|
-
i0.ɵɵelementEnd();
|
|
480
|
-
} if (rf & 2) {
|
|
481
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
482
|
-
i0.ɵɵadvance(2);
|
|
483
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.TestMessage, " ");
|
|
484
|
-
} }
|
|
485
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
486
|
-
i0.ɵɵelementStart(0, "div", 93);
|
|
487
|
-
i0.ɵɵelement(1, "i", 98);
|
|
488
|
-
i0.ɵɵtext(2);
|
|
489
|
-
i0.ɵɵelementEnd();
|
|
490
|
-
} if (rf & 2) {
|
|
491
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
492
|
-
i0.ɵɵadvance(2);
|
|
493
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.TestMessage, " ");
|
|
494
|
-
} }
|
|
495
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
496
|
-
i0.ɵɵelementStart(0, "div", 94);
|
|
497
|
-
i0.ɵɵelement(1, "i", 98);
|
|
498
|
-
i0.ɵɵtext(2);
|
|
499
|
-
i0.ɵɵelementEnd();
|
|
500
|
-
} if (rf & 2) {
|
|
501
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
502
|
-
i0.ɵɵadvance(2);
|
|
503
|
-
i0.ɵɵtextInterpolate1(" Save failed: ", ctx_r1.SaveError, " ");
|
|
504
|
-
} }
|
|
505
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
506
|
-
i0.ɵɵelement(0, "i", 50);
|
|
507
|
-
i0.ɵɵtext(1, " Saving... ");
|
|
508
|
-
} }
|
|
509
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
510
|
-
i0.ɵɵelement(0, "i", 99);
|
|
511
|
-
i0.ɵɵtext(1, " Save ");
|
|
512
|
-
} }
|
|
513
|
-
function ConnectionStudioComponent_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
514
|
-
const _r19 = i0.ɵɵgetCurrentView();
|
|
515
|
-
i0.ɵɵelementStart(0, "h3");
|
|
516
|
-
i0.ɵɵtext(1, "Test & Save");
|
|
517
|
-
i0.ɵɵelementEnd();
|
|
518
|
-
i0.ɵɵelementStart(2, "p", 13);
|
|
519
|
-
i0.ɵɵtext(3, "Review your configuration, test the connection, and save.");
|
|
520
|
-
i0.ɵɵelementEnd();
|
|
521
|
-
i0.ɵɵelementStart(4, "div", 84)(5, "div", 85)(6, "div", 86)(7, "span", 87);
|
|
522
|
-
i0.ɵɵtext(8, "Integration:");
|
|
523
|
-
i0.ɵɵelementEnd();
|
|
524
|
-
i0.ɵɵelementStart(9, "span", 88);
|
|
525
|
-
i0.ɵɵelement(10, "i");
|
|
526
|
-
i0.ɵɵtext(11);
|
|
527
|
-
i0.ɵɵelementEnd()();
|
|
528
|
-
i0.ɵɵconditionalCreate(12, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_12_Template, 5, 1, "div", 86);
|
|
529
|
-
i0.ɵɵconditionalCreate(13, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_13_Template, 6, 1, "div", 86);
|
|
530
|
-
i0.ɵɵelementStart(14, "div", 86)(15, "span", 87);
|
|
531
|
-
i0.ɵɵtext(16, "Connection Name:");
|
|
532
|
-
i0.ɵɵelementEnd();
|
|
533
|
-
i0.ɵɵelementStart(17, "span", 88);
|
|
534
|
-
i0.ɵɵtext(18);
|
|
535
|
-
i0.ɵɵelementEnd()();
|
|
536
|
-
i0.ɵɵelementStart(19, "div", 86)(20, "span", 87);
|
|
537
|
-
i0.ɵɵtext(21, "Credential:");
|
|
538
|
-
i0.ɵɵelementEnd();
|
|
539
|
-
i0.ɵɵelementStart(22, "span", 88);
|
|
540
|
-
i0.ɵɵconditionalCreate(23, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_23_Template, 2, 1)(24, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_24_Template, 2, 0, "span", 89);
|
|
541
|
-
i0.ɵɵelementEnd()()();
|
|
542
|
-
i0.ɵɵconditionalCreate(25, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_25_Template, 2, 0, "p", 90);
|
|
543
|
-
i0.ɵɵconditionalCreate(26, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_26_Template, 1, 0, "mj-loading", 91);
|
|
544
|
-
i0.ɵɵconditionalCreate(27, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_27_Template, 3, 1, "div", 92);
|
|
545
|
-
i0.ɵɵconditionalCreate(28, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_28_Template, 3, 1, "div", 93);
|
|
546
|
-
i0.ɵɵelementEnd();
|
|
547
|
-
i0.ɵɵconditionalCreate(29, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_29_Template, 3, 1, "div", 94);
|
|
548
|
-
i0.ɵɵelementStart(30, "div", 22)(31, "button", 95);
|
|
549
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_10_Conditional_2_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.PrevStep()); });
|
|
550
|
-
i0.ɵɵelement(32, "i", 42);
|
|
551
|
-
i0.ɵɵtext(33, " Back ");
|
|
552
|
-
i0.ɵɵelementEnd();
|
|
553
|
-
i0.ɵɵelementStart(34, "button", 96);
|
|
554
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_10_Conditional_2_Template_button_click_34_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.TestConnection()); });
|
|
555
|
-
i0.ɵɵelement(35, "i", 97);
|
|
556
|
-
i0.ɵɵtext(36, " Test Connection ");
|
|
557
|
-
i0.ɵɵelementEnd();
|
|
558
|
-
i0.ɵɵelementStart(37, "button", 23);
|
|
559
|
-
i0.ɵɵlistener("click", function ConnectionStudioComponent_Conditional_10_Conditional_2_Template_button_click_37_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SaveIntegration()); });
|
|
560
|
-
i0.ɵɵconditionalCreate(38, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_38_Template, 2, 0)(39, ConnectionStudioComponent_Conditional_10_Conditional_2_Conditional_39_Template, 2, 0);
|
|
561
|
-
i0.ɵɵelementEnd()();
|
|
562
|
-
} if (rf & 2) {
|
|
563
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
564
|
-
i0.ɵɵadvance(10);
|
|
565
|
-
i0.ɵɵclassMap(ctx_r1.SelectedIntegrationIcon);
|
|
566
|
-
i0.ɵɵadvance();
|
|
567
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.SelectedIntegrationName, " ");
|
|
568
|
-
i0.ɵɵadvance();
|
|
569
|
-
i0.ɵɵconditional(ctx_r1.UseCustomMode && ctx_r1.CustomSourceTypeName ? 12 : -1);
|
|
570
|
-
i0.ɵɵadvance();
|
|
571
|
-
i0.ɵɵconditional(ctx_r1.SelectedCompanyName ? 13 : -1);
|
|
572
|
-
i0.ɵɵadvance(5);
|
|
573
|
-
i0.ɵɵtextInterpolate(ctx_r1.ConnectionName);
|
|
574
|
-
i0.ɵɵadvance(5);
|
|
575
|
-
i0.ɵɵconditional(ctx_r1.SelectedCredential ? 23 : 24);
|
|
576
|
-
i0.ɵɵadvance(2);
|
|
577
|
-
i0.ɵɵconditional(ctx_r1.TestStatus === "idle" ? 25 : -1);
|
|
578
|
-
i0.ɵɵadvance();
|
|
579
|
-
i0.ɵɵconditional(ctx_r1.TestStatus === "testing" ? 26 : -1);
|
|
580
|
-
i0.ɵɵadvance();
|
|
581
|
-
i0.ɵɵconditional(ctx_r1.TestStatus === "success" ? 27 : -1);
|
|
582
|
-
i0.ɵɵadvance();
|
|
583
|
-
i0.ɵɵconditional(ctx_r1.TestStatus === "failed" ? 28 : -1);
|
|
584
|
-
i0.ɵɵadvance();
|
|
585
|
-
i0.ɵɵconditional(ctx_r1.SaveError ? 29 : -1);
|
|
586
|
-
i0.ɵɵadvance(2);
|
|
587
|
-
i0.ɵɵproperty("disabled", ctx_r1.IsSaving);
|
|
588
|
-
i0.ɵɵadvance(3);
|
|
589
|
-
i0.ɵɵproperty("look", "outline")("disabled", ctx_r1.IsSaving);
|
|
590
|
-
i0.ɵɵadvance(3);
|
|
591
|
-
i0.ɵɵproperty("themeColor", "primary")("disabled", ctx_r1.IsSaving);
|
|
592
|
-
i0.ɵɵadvance();
|
|
593
|
-
i0.ɵɵconditional(ctx_r1.IsSaving ? 38 : 39);
|
|
594
|
-
} }
|
|
595
|
-
function ConnectionStudioComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
596
|
-
i0.ɵɵelementStart(0, "div", 5);
|
|
597
|
-
i0.ɵɵconditionalCreate(1, ConnectionStudioComponent_Conditional_10_Conditional_1_Template, 13, 2, "div", 79)(2, ConnectionStudioComponent_Conditional_10_Conditional_2_Template, 40, 18);
|
|
598
|
-
i0.ɵɵelementEnd();
|
|
599
|
-
} if (rf & 2) {
|
|
600
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
601
|
-
i0.ɵɵadvance();
|
|
602
|
-
i0.ɵɵconditional(ctx_r1.SaveCompleted ? 1 : 2);
|
|
603
|
-
} }
|
|
604
|
-
function ConnectionStudioComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
605
|
-
const _r20 = i0.ɵɵgetCurrentView();
|
|
606
|
-
i0.ɵɵelementStart(0, "mj-credential-dialog", 100, 0);
|
|
607
|
-
i0.ɵɵlistener("close", function ConnectionStudioComponent_Conditional_11_Template_mj_credential_dialog_close_0_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnCredentialDialogClose($event)); });
|
|
608
|
-
i0.ɵɵelementEnd();
|
|
609
|
-
} if (rf & 2) {
|
|
610
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
611
|
-
i0.ɵɵproperty("Visible", ctx_r1.ShowCredentialDialog)("PreselectedTypeId", ctx_r1.PreselectedCredentialTypeId);
|
|
612
|
-
} }
|
|
613
|
-
/** Icon mapping for known integrations by name pattern */
|
|
614
|
-
const INTEGRATION_ICONS = {
|
|
615
|
-
hubspot: 'fa-brands fa-hubspot',
|
|
616
|
-
salesforce: 'fa-brands fa-salesforce',
|
|
617
|
-
yourmembership: 'fa-solid fa-id-card-clip',
|
|
618
|
-
csv: 'fa-solid fa-file-csv',
|
|
619
|
-
excel: 'fa-solid fa-file-excel',
|
|
620
|
-
file: 'fa-solid fa-file-import',
|
|
621
|
-
};
|
|
622
|
-
function resolveIntegrationIcon(name) {
|
|
623
|
-
const lower = name.toLowerCase();
|
|
624
|
-
for (const [pattern, icon] of Object.entries(INTEGRATION_ICONS)) {
|
|
625
|
-
if (lower.includes(pattern))
|
|
626
|
-
return icon;
|
|
627
|
-
}
|
|
628
|
-
return 'fa-solid fa-plug';
|
|
629
|
-
}
|
|
630
|
-
let ConnectionStudioComponent = class ConnectionStudioComponent extends BaseResourceComponent {
|
|
631
|
-
Steps = [
|
|
632
|
-
{ Index: 0, Label: 'Integration' },
|
|
633
|
-
{ Index: 1, Label: 'Configure' },
|
|
634
|
-
{ Index: 2, Label: 'Test & Save' }
|
|
635
|
-
];
|
|
636
|
-
CurrentStep = 0;
|
|
637
|
-
// Step 1: Integration selection
|
|
638
|
-
Integrations = [];
|
|
639
|
-
SourceTypes = [];
|
|
640
|
-
IsLoadingIntegrations = false;
|
|
641
|
-
SelectedIntegrationID = null;
|
|
642
|
-
UseCustomMode = false;
|
|
643
|
-
CustomSourceTypeID = null;
|
|
644
|
-
// Company selection
|
|
645
|
-
Companies = [];
|
|
646
|
-
SelectedCompanyID = null;
|
|
647
|
-
NewCompanyName = '';
|
|
648
|
-
IsCreatingCompany = false;
|
|
649
|
-
// Step 2: Configuration
|
|
650
|
-
ConnectionName = '';
|
|
651
|
-
ConnectionDescription = '';
|
|
652
|
-
SelectedCredential = null;
|
|
653
|
-
CredentialTypeName = '';
|
|
654
|
-
ShowCredentialDialog = false;
|
|
655
|
-
PreselectedCredentialTypeId;
|
|
656
|
-
CredentialPickerMode = 'choose';
|
|
657
|
-
ExistingCredentials = [];
|
|
658
|
-
IsLoadingCredentials = false;
|
|
659
|
-
// Step 3: Test & Save
|
|
660
|
-
TestStatus = 'idle';
|
|
661
|
-
TestMessage = '';
|
|
662
|
-
IsSaving = false;
|
|
663
|
-
SaveCompleted = false;
|
|
664
|
-
SaveError = '';
|
|
665
|
-
dataService = inject(IntegrationDataService);
|
|
666
|
-
cdr = inject(ChangeDetectorRef);
|
|
667
|
-
async ngOnInit() {
|
|
668
|
-
await this.LoadIntegrations();
|
|
669
|
-
}
|
|
670
|
-
// --- Computed properties ---
|
|
671
|
-
get SelectedIntegration() {
|
|
672
|
-
if (!this.SelectedIntegrationID)
|
|
673
|
-
return null;
|
|
674
|
-
return this.Integrations.find(i => UUIDsEqual(i.ID, this.SelectedIntegrationID)) ?? null;
|
|
675
|
-
}
|
|
676
|
-
get SelectedIntegrationName() {
|
|
677
|
-
if (this.UseCustomMode)
|
|
678
|
-
return 'Custom Integration';
|
|
679
|
-
return this.SelectedIntegration?.Name ?? '';
|
|
680
|
-
}
|
|
681
|
-
get SelectedIntegrationIcon() {
|
|
682
|
-
if (this.UseCustomMode) {
|
|
683
|
-
const st = this.SourceTypes.find(s => UUIDsEqual(s.ID, this.CustomSourceTypeID));
|
|
684
|
-
return st?.IconClass ?? 'fa-solid fa-gear';
|
|
685
|
-
}
|
|
686
|
-
return this.SelectedIntegration ? resolveIntegrationIcon(this.SelectedIntegration.Name) : 'fa-solid fa-plug';
|
|
687
|
-
}
|
|
688
|
-
get CustomSourceTypeName() {
|
|
689
|
-
if (!this.CustomSourceTypeID)
|
|
690
|
-
return '';
|
|
691
|
-
return this.SourceTypes.find(s => UUIDsEqual(s.ID, this.CustomSourceTypeID))?.Name ?? '';
|
|
692
|
-
}
|
|
693
|
-
get IsStep1Valid() {
|
|
694
|
-
if (this.UseCustomMode)
|
|
695
|
-
return !!this.CustomSourceTypeID;
|
|
696
|
-
return !!this.SelectedIntegrationID;
|
|
697
|
-
}
|
|
698
|
-
get IsStep2Valid() {
|
|
699
|
-
return !!this.ConnectionName.trim() && !!this.SelectedCompanyID;
|
|
700
|
-
}
|
|
701
|
-
// --- Data loading ---
|
|
702
|
-
async LoadIntegrations() {
|
|
703
|
-
this.IsLoadingIntegrations = true;
|
|
704
|
-
this.cdr.detectChanges();
|
|
705
|
-
try {
|
|
706
|
-
const rv = new RunView();
|
|
707
|
-
const [integrations, sourceTypes, companyResult] = await Promise.all([
|
|
708
|
-
this.dataService.LoadIntegrationDefinitions(this.RunViewToUse),
|
|
709
|
-
this.dataService.LoadSourceTypes(this.RunViewToUse),
|
|
710
|
-
rv.RunView({
|
|
711
|
-
EntityName: 'MJ: Companies',
|
|
712
|
-
Fields: ['ID', 'Name'],
|
|
713
|
-
OrderBy: 'Name',
|
|
714
|
-
ResultType: 'simple'
|
|
715
|
-
})
|
|
716
|
-
]);
|
|
717
|
-
this.Integrations = integrations;
|
|
718
|
-
this.SourceTypes = sourceTypes;
|
|
719
|
-
this.Companies = companyResult.Success ? companyResult.Results : [];
|
|
720
|
-
// Auto-select if only one company
|
|
721
|
-
if (this.Companies.length === 1) {
|
|
722
|
-
this.SelectedCompanyID = this.Companies[0].ID;
|
|
723
|
-
}
|
|
724
|
-
}
|
|
725
|
-
finally {
|
|
726
|
-
this.IsLoadingIntegrations = false;
|
|
727
|
-
this.cdr.detectChanges();
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
get HasCompanies() {
|
|
731
|
-
return this.Companies.length > 0;
|
|
732
|
-
}
|
|
733
|
-
get NeedsCompanyPicker() {
|
|
734
|
-
return this.Companies.length > 1;
|
|
735
|
-
}
|
|
736
|
-
get SelectedCompanyName() {
|
|
737
|
-
if (!this.SelectedCompanyID)
|
|
738
|
-
return '';
|
|
739
|
-
return this.Companies.find(c => UUIDsEqual(c.ID, this.SelectedCompanyID))?.Name ?? '';
|
|
740
|
-
}
|
|
741
|
-
async CreateCompany() {
|
|
742
|
-
const name = this.NewCompanyName.trim();
|
|
743
|
-
if (!name)
|
|
744
|
-
return;
|
|
745
|
-
this.IsCreatingCompany = true;
|
|
746
|
-
this.cdr.detectChanges();
|
|
747
|
-
const md = new Metadata();
|
|
748
|
-
const company = await md.GetEntityObject('MJ: Companies');
|
|
749
|
-
company.NewRecord();
|
|
750
|
-
company.Name = name;
|
|
751
|
-
company.Description = name;
|
|
752
|
-
const saved = await company.Save();
|
|
753
|
-
if (saved) {
|
|
754
|
-
this.Companies.push({ ID: company.ID, Name: company.Name });
|
|
755
|
-
this.SelectedCompanyID = company.ID;
|
|
756
|
-
this.NewCompanyName = '';
|
|
757
|
-
}
|
|
758
|
-
else {
|
|
759
|
-
const errorMessage = company.LatestResult?.CompleteMessage || company.LatestResult?.Message || 'Unknown error';
|
|
760
|
-
console.error('[ConnectionStudio] Failed to create company:', errorMessage);
|
|
761
|
-
}
|
|
762
|
-
this.IsCreatingCompany = false;
|
|
763
|
-
this.cdr.detectChanges();
|
|
764
|
-
}
|
|
765
|
-
// --- Step 1: Integration selection ---
|
|
766
|
-
SelectIntegration(integration) {
|
|
767
|
-
this.UseCustomMode = false;
|
|
768
|
-
this.SelectedIntegrationID = integration.ID;
|
|
769
|
-
this.CustomSourceTypeID = null;
|
|
770
|
-
this.ConnectionName = integration.Name;
|
|
771
|
-
}
|
|
772
|
-
SelectCustomMode() {
|
|
773
|
-
this.UseCustomMode = true;
|
|
774
|
-
this.SelectedIntegrationID = null;
|
|
775
|
-
this.ConnectionName = '';
|
|
776
|
-
}
|
|
777
|
-
SelectCustomSourceType(st) {
|
|
778
|
-
this.CustomSourceTypeID = st.ID;
|
|
779
|
-
}
|
|
780
|
-
IsSelectedIntegration(id) {
|
|
781
|
-
return !this.UseCustomMode && UUIDsEqual(this.SelectedIntegrationID, id);
|
|
782
|
-
}
|
|
783
|
-
IsSelectedCustomSourceType(id) {
|
|
784
|
-
return UUIDsEqual(this.CustomSourceTypeID, id);
|
|
785
|
-
}
|
|
786
|
-
IntegrationIcon(integration) {
|
|
787
|
-
return resolveIntegrationIcon(integration.Name);
|
|
788
|
-
}
|
|
789
|
-
// --- Step 2: Credential management ---
|
|
790
|
-
get IntegrationCredentialTypeID() {
|
|
791
|
-
return this.SelectedIntegration?.CredentialTypeID ?? null;
|
|
792
|
-
}
|
|
793
|
-
async ShowExistingCredentials() {
|
|
794
|
-
this.CredentialPickerMode = 'existing';
|
|
795
|
-
this.IsLoadingCredentials = true;
|
|
796
|
-
this.cdr.detectChanges();
|
|
797
|
-
const rv = new RunView();
|
|
798
|
-
const filter = this.IntegrationCredentialTypeID
|
|
799
|
-
? `CredentialTypeID='${this.IntegrationCredentialTypeID}' AND IsActive=1`
|
|
800
|
-
: 'IsActive=1';
|
|
801
|
-
const result = await rv.RunView({
|
|
802
|
-
EntityName: 'MJ: Credentials',
|
|
803
|
-
ExtraFilter: filter,
|
|
804
|
-
OrderBy: 'Name',
|
|
805
|
-
ResultType: 'entity_object'
|
|
806
|
-
});
|
|
807
|
-
this.ExistingCredentials = result.Results;
|
|
808
|
-
this.IsLoadingCredentials = false;
|
|
809
|
-
this.cdr.detectChanges();
|
|
810
|
-
}
|
|
811
|
-
SelectExistingCredential(credential) {
|
|
812
|
-
this.SelectedCredential = credential;
|
|
813
|
-
this.CredentialTypeName = credential.Get('CredentialType') ?? '';
|
|
814
|
-
this.CredentialPickerMode = 'choose';
|
|
815
|
-
}
|
|
816
|
-
OpenCredentialDialog() {
|
|
817
|
-
this.PreselectedCredentialTypeId = this.IntegrationCredentialTypeID ?? undefined;
|
|
818
|
-
this.ShowCredentialDialog = true;
|
|
819
|
-
this.CredentialPickerMode = 'choose';
|
|
820
|
-
this.cdr.detectChanges();
|
|
821
|
-
}
|
|
822
|
-
OnCredentialDialogClose(result) {
|
|
823
|
-
this.ShowCredentialDialog = false;
|
|
824
|
-
if (result.success && result.credential) {
|
|
825
|
-
this.SelectedCredential = result.credential;
|
|
826
|
-
this.CredentialTypeName = '';
|
|
827
|
-
}
|
|
828
|
-
this.cdr.detectChanges();
|
|
829
|
-
}
|
|
830
|
-
ClearCredential() {
|
|
831
|
-
this.SelectedCredential = null;
|
|
832
|
-
this.CredentialTypeName = '';
|
|
833
|
-
this.CredentialPickerMode = 'choose';
|
|
834
|
-
}
|
|
835
|
-
BackToCredentialChoice() {
|
|
836
|
-
this.CredentialPickerMode = 'choose';
|
|
837
|
-
}
|
|
838
|
-
// --- Navigation ---
|
|
839
|
-
NextStep() {
|
|
840
|
-
if (this.CurrentStep < this.Steps.length - 1) {
|
|
841
|
-
this.CurrentStep++;
|
|
842
|
-
}
|
|
843
|
-
}
|
|
844
|
-
PrevStep() {
|
|
845
|
-
if (this.CurrentStep > 0) {
|
|
846
|
-
this.CurrentStep--;
|
|
847
|
-
this.TestStatus = 'idle';
|
|
848
|
-
this.TestMessage = '';
|
|
849
|
-
}
|
|
850
|
-
}
|
|
851
|
-
// --- Step 3: Test & Save ---
|
|
852
|
-
TestConnection() {
|
|
853
|
-
this.TestStatus = 'testing';
|
|
854
|
-
this.TestMessage = '';
|
|
855
|
-
this.cdr.detectChanges();
|
|
856
|
-
// TODO: Wire up to actual connector.TestConnection() via GraphQL
|
|
857
|
-
console.log('[ConnectionStudio] Testing connection:', {
|
|
858
|
-
integration: this.SelectedIntegrationName,
|
|
859
|
-
credentialId: this.SelectedCredential?.ID
|
|
860
|
-
});
|
|
861
|
-
setTimeout(() => {
|
|
862
|
-
this.TestStatus = 'success';
|
|
863
|
-
this.TestMessage = 'Connection verified successfully.';
|
|
864
|
-
this.cdr.detectChanges();
|
|
865
|
-
}, 1500);
|
|
866
|
-
}
|
|
867
|
-
async SaveIntegration() {
|
|
868
|
-
if (!this.SelectedCompanyID) {
|
|
869
|
-
console.error('[ConnectionStudio] No company selected');
|
|
870
|
-
return;
|
|
871
|
-
}
|
|
872
|
-
this.IsSaving = true;
|
|
873
|
-
this.SaveError = '';
|
|
874
|
-
this.cdr.detectChanges();
|
|
875
|
-
const md = new Metadata();
|
|
876
|
-
const companyIntegration = await md.GetEntityObject('MJ: Company Integrations');
|
|
877
|
-
companyIntegration.NewRecord();
|
|
878
|
-
companyIntegration.CompanyID = this.SelectedCompanyID;
|
|
879
|
-
if (this.SelectedIntegration) {
|
|
880
|
-
companyIntegration.IntegrationID = this.SelectedIntegration.ID;
|
|
881
|
-
}
|
|
882
|
-
companyIntegration.Name = this.ConnectionName;
|
|
883
|
-
companyIntegration.IsActive = true;
|
|
884
|
-
if (this.SelectedCredential) {
|
|
885
|
-
companyIntegration.CredentialID = this.SelectedCredential.ID;
|
|
886
|
-
}
|
|
887
|
-
const saved = await companyIntegration.Save();
|
|
888
|
-
this.IsSaving = false;
|
|
889
|
-
if (saved) {
|
|
890
|
-
this.SaveCompleted = true;
|
|
891
|
-
}
|
|
892
|
-
else {
|
|
893
|
-
this.SaveError = companyIntegration.LatestResult?.CompleteMessage || companyIntegration.LatestResult?.Message || 'Unknown error';
|
|
894
|
-
console.error('[ConnectionStudio] Failed to save:', this.SaveError);
|
|
895
|
-
}
|
|
896
|
-
this.cdr.detectChanges();
|
|
897
|
-
}
|
|
898
|
-
ResetWizard() {
|
|
899
|
-
this.CurrentStep = 0;
|
|
900
|
-
this.SelectedIntegrationID = null;
|
|
901
|
-
this.UseCustomMode = false;
|
|
902
|
-
this.CustomSourceTypeID = null;
|
|
903
|
-
this.ConnectionName = '';
|
|
904
|
-
this.ConnectionDescription = '';
|
|
905
|
-
this.SelectedCredential = null;
|
|
906
|
-
this.CredentialTypeName = '';
|
|
907
|
-
this.CredentialPickerMode = 'choose';
|
|
908
|
-
this.TestStatus = 'idle';
|
|
909
|
-
this.TestMessage = '';
|
|
910
|
-
this.IsSaving = false;
|
|
911
|
-
this.SaveCompleted = false;
|
|
912
|
-
this.SaveError = '';
|
|
913
|
-
}
|
|
914
|
-
// --- Resource interface ---
|
|
915
|
-
async GetResourceDisplayName(_data) {
|
|
916
|
-
return 'Connection Studio';
|
|
917
|
-
}
|
|
918
|
-
async GetResourceIconClass(_data) {
|
|
919
|
-
return 'fa-solid fa-wand-magic-sparkles';
|
|
920
|
-
}
|
|
921
|
-
static ɵfac = /*@__PURE__*/ (() => { let ɵConnectionStudioComponent_BaseFactory; return function ConnectionStudioComponent_Factory(__ngFactoryType__) { return (ɵConnectionStudioComponent_BaseFactory || (ɵConnectionStudioComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ConnectionStudioComponent)))(__ngFactoryType__ || ConnectionStudioComponent); }; })();
|
|
922
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConnectionStudioComponent, selectors: [["app-connection-studio"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 4, consts: [["credentialDialog", ""], [1, "connection-studio"], [1, "studio-header"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "step-indicator"], [1, "step-content"], [3, "Visible", "PreselectedTypeId"], [1, "step"], [1, "step-circle"], [1, "fa-solid", "fa-check"], [1, "step-label"], [1, "step-connector", 3, "completed"], [1, "step-connector"], [1, "step-description"], ["text", "Loading integrations...", "size", "medium"], [1, "integration-grid"], [1, "integration-card", 3, "selected"], [1, "integration-card", "custom-card", 3, "click"], [1, "card-icon", "fa-solid", "fa-gear"], [1, "card-name"], [1, "card-desc"], [1, "custom-source-section"], [1, "step-actions"], ["kendoButton", "", 3, "click", "themeColor", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "integration-card", 3, "click"], [1, "card-icon"], [1, "custom-source-label"], [1, "source-type-chips"], [1, "source-chip", 3, "selected"], [1, "source-chip", 3, "click"], [1, "company-setup-card"], [1, "config-form"], [1, "form-field"], ["kendoTextBox", "", "placeholder", "e.g., Production HubSpot", 3, "ngModelChange", "ngModel"], ["kendoTextArea", "", "rows", "2", "placeholder", "Optional description...", 3, "ngModelChange", "ngModel"], [1, "credential-section"], [1, "section-label"], [1, "credential-selected"], [1, "credential-choice"], [1, "credential-list-section"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "company-setup-icon"], [1, "fa-solid", "fa-building"], [1, "company-setup-content"], [1, "company-setup-title"], [1, "company-setup-desc"], [1, "company-setup-form"], ["kendoTextBox", "", "placeholder", "Company name", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-plus"], [3, "ngModelChange", "data", "textField", "valueField", "valuePrimitive", "ngModel", "defaultItem"], [1, "credential-info"], [1, "credential-icon", "fa-solid", "fa-shield-halved"], [1, "credential-details"], [1, "credential-name"], [1, "credential-type"], [1, "credential-actions"], ["kendoButton", "", "title", "Change credential", 3, "click", "look"], [1, "fa-solid", "fa-rotate"], ["kendoButton", "", "title", "Remove credential", 3, "click", "look"], [1, "fa-solid", "fa-times"], ["kendoButton", "", 3, "click", "look"], [1, "fa-solid", "fa-list"], [1, "credential-or"], [1, "credential-list-header"], [1, "credential-list-title"], ["text", "Loading credentials...", "size", "small"], [1, "credential-empty-list"], [1, "credential-list"], [1, "fa-solid", "fa-inbox"], [1, "credential-list-item"], [1, "credential-list-item", 3, "click"], [1, "fa-solid", "fa-shield-halved"], [1, "credential-list-item-info"], [1, "credential-list-item-name"], [1, "credential-list-item-desc"], [1, "fa-solid", "fa-chevron-right", "credential-list-item-arrow"], [1, "save-success"], [1, "success-icon"], [1, "fa-solid", "fa-circle-check"], [1, "step-actions", 2, "justify-content", "center"], ["kendoButton", "", 3, "click", "themeColor"], [1, "test-section"], [1, "test-summary"], [1, "summary-row"], [1, "label"], [1, "value"], [2, "color", "#888"], [1, "test-hint"], ["text", "Testing connection...", "size", "small"], [1, "test-result", "success"], [1, "test-result", "failed"], [1, "test-result", "failed", 2, "margin-bottom", "16px"], ["kendoButton", "", 3, "click", "disabled"], ["kendoButton", "", 3, "click", "look", "disabled"], [1, "fa-solid", "fa-vial"], [1, "fa-solid", "fa-circle-xmark"], [1, "fa-solid", "fa-floppy-disk"], [3, "close", "Visible", "PreselectedTypeId"]], template: function ConnectionStudioComponent_Template(rf, ctx) { if (rf & 1) {
|
|
923
|
-
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "h2");
|
|
924
|
-
i0.ɵɵelement(3, "i", 3);
|
|
925
|
-
i0.ɵɵtext(4, " Connection Studio");
|
|
926
|
-
i0.ɵɵelementEnd()();
|
|
927
|
-
i0.ɵɵelementStart(5, "div", 4);
|
|
928
|
-
i0.ɵɵrepeaterCreate(6, ConnectionStudioComponent_For_7_Template, 7, 7, null, null, _forTrack0);
|
|
929
|
-
i0.ɵɵelementEnd();
|
|
930
|
-
i0.ɵɵconditionalCreate(8, ConnectionStudioComponent_Conditional_8_Template, 7, 1, "div", 5);
|
|
931
|
-
i0.ɵɵconditionalCreate(9, ConnectionStudioComponent_Conditional_9_Template, 32, 8, "div", 5);
|
|
932
|
-
i0.ɵɵconditionalCreate(10, ConnectionStudioComponent_Conditional_10_Template, 3, 1, "div", 5);
|
|
933
|
-
i0.ɵɵelementEnd();
|
|
934
|
-
i0.ɵɵconditionalCreate(11, ConnectionStudioComponent_Conditional_11_Template, 2, 2, "mj-credential-dialog", 6);
|
|
935
|
-
} if (rf & 2) {
|
|
936
|
-
i0.ɵɵadvance(6);
|
|
937
|
-
i0.ɵɵrepeater(ctx.Steps);
|
|
938
|
-
i0.ɵɵadvance(2);
|
|
939
|
-
i0.ɵɵconditional(ctx.CurrentStep === 0 ? 8 : -1);
|
|
940
|
-
i0.ɵɵadvance();
|
|
941
|
-
i0.ɵɵconditional(ctx.CurrentStep === 1 ? 9 : -1);
|
|
942
|
-
i0.ɵɵadvance();
|
|
943
|
-
i0.ɵɵconditional(ctx.CurrentStep === 2 ? 10 : -1);
|
|
944
|
-
i0.ɵɵadvance();
|
|
945
|
-
i0.ɵɵconditional(ctx.ShowCredentialDialog ? 11 : -1);
|
|
946
|
-
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.ButtonComponent, i3.DropDownListComponent, i4.TextBoxDirective, i4.TextAreaDirective, i5.LoadingComponent, i6.CredentialDialogComponent], styles: [".connection-studio[_ngcontent-%COMP%] {\n padding: 24px;\n max-width: 900px;\n margin: 0 auto;\n}\n\n.studio-header[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.studio-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n}\n\n.studio-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 8px;\n}\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 32px;\n gap: 0;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n min-width: 80px;\n}\n\n.step-circle[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n font-weight: 600;\n background: #e0e0e0;\n color: #666;\n}\n\n.step.active[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] { background: #4a6cf7; color: #fff; }\n.step.completed[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] { background: #1b7a3d; color: #fff; }\n\n.step-label[_ngcontent-%COMP%] { font-size: 12px; color: #888; }\n.step.active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] { color: #4a6cf7; font-weight: 600; }\n\n.step-connector[_ngcontent-%COMP%] {\n flex: 1;\n height: 2px;\n background: #e0e0e0;\n min-width: 40px;\n margin: 0 4px;\n margin-bottom: 22px;\n}\n\n.step-connector.completed[_ngcontent-%COMP%] { background: #1b7a3d; }\n\n\n\n.step-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 18px;\n}\n\n.step-description[_ngcontent-%COMP%] {\n color: #666;\n margin: 0 0 20px 0;\n}\n\n\n\n.integration-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.integration-card[_ngcontent-%COMP%] {\n padding: 20px 16px;\n border: 2px solid #eee;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.15s;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.integration-card[_ngcontent-%COMP%]:hover { border-color: #4a6cf7; background: #fafbff; }\n.integration-card.selected[_ngcontent-%COMP%] { border-color: #4a6cf7; background: #f0f4ff; }\n\n.integration-card[_ngcontent-%COMP%] i.card-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #4a6cf7;\n}\n\n.integration-card[_ngcontent-%COMP%] .card-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n}\n\n.integration-card[_ngcontent-%COMP%] .card-desc[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #888;\n line-height: 1.3;\n}\n\n.integration-card.custom-card[_ngcontent-%COMP%] {\n border-style: dashed;\n}\n\n.integration-card.custom-card[_ngcontent-%COMP%] i.card-icon[_ngcontent-%COMP%] { color: #888; }\n.integration-card.custom-card.selected[_ngcontent-%COMP%] i.card-icon[_ngcontent-%COMP%] { color: #4a6cf7; }\n\n\n\n.custom-source-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n}\n\n.custom-source-section[_ngcontent-%COMP%] .custom-source-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #444;\n margin-bottom: 10px;\n}\n\n.source-type-chips[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.source-chip[_ngcontent-%COMP%] {\n padding: 8px 14px;\n border: 2px solid #ddd;\n border-radius: 20px;\n cursor: pointer;\n font-size: 13px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.15s;\n}\n\n.source-chip[_ngcontent-%COMP%]:hover { border-color: #4a6cf7; }\n.source-chip.selected[_ngcontent-%COMP%] { border-color: #4a6cf7; background: #f0f4ff; color: #4a6cf7; font-weight: 600; }\n.source-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 14px; }\n\n\n\n.company-setup-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 20px;\n background: #fff8e1;\n border: 1px solid #ffe082;\n border-radius: 10px;\n margin-bottom: 20px;\n}\n\n.company-setup-icon[_ngcontent-%COMP%] {\n font-size: 28px;\n color: #f9a825;\n padding-top: 2px;\n}\n\n.company-setup-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.company-setup-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 15px;\n margin-bottom: 4px;\n}\n\n.company-setup-desc[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\n margin-bottom: 12px;\n}\n\n.company-setup-form[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.company-setup-form[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n flex: 1;\n max-width: 280px;\n}\n\n\n\n.config-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.form-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #444;\n}\n\n\n\n.credential-section[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border-radius: 8px;\n padding: 16px;\n}\n\n.credential-section[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #444;\n margin-bottom: 10px;\n}\n\n\n\n.credential-choice[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.credential-or[_ngcontent-%COMP%] {\n color: #888;\n font-size: 13px;\n font-style: italic;\n}\n\n\n\n.credential-list-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.credential-list-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.credential-list-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n}\n\n.credential-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-height: 240px;\n overflow-y: auto;\n}\n\n.credential-list-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.credential-list-item[_ngcontent-%COMP%]:hover {\n border-color: #4a6cf7;\n background: #f0f4ff;\n}\n\n.credential-list-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #4a6cf7;\n}\n\n.credential-list-item-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.credential-list-item-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 13px;\n}\n\n.credential-list-item-desc[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #888;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.credential-list-item-arrow[_ngcontent-%COMP%] {\n color: #ccc;\n font-size: 12px;\n}\n\n.credential-empty-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 16px;\n color: #888;\n font-size: 13px;\n}\n\n.credential-empty-list[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: #ccc;\n}\n\n.credential-selected[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n}\n\n.credential-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.credential-info[_ngcontent-%COMP%] i.credential-icon[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #4a6cf7;\n}\n\n.credential-details[_ngcontent-%COMP%] .credential-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n}\n\n.credential-details[_ngcontent-%COMP%] .credential-type[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #888;\n}\n\n.credential-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n}\n\n\n\n.step-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding-top: 16px;\n border-top: 1px solid #eee;\n}\n\n\n\n.test-section[_ngcontent-%COMP%] { margin-bottom: 24px; }\n\n.test-summary[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.summary-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 4px 0;\n font-size: 14px;\n}\n\n.summary-row[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-weight: 600;\n min-width: 120px;\n color: #666;\n}\n\n.summary-row[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.test-hint[_ngcontent-%COMP%] {\n color: #888;\n font-style: italic;\n}\n\n.test-result[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-radius: 8px;\n font-weight: 500;\n}\n\n.test-result[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 8px; }\n.test-result.success[_ngcontent-%COMP%] { background: #e6f9ed; color: #1b7a3d; }\n.test-result.failed[_ngcontent-%COMP%] { background: #fde8e8; color: #c62828; }\n\n\n\n.save-success[_ngcontent-%COMP%] {\n text-align: center;\n padding: 40px 20px;\n}\n\n.save-success[_ngcontent-%COMP%] .success-icon[_ngcontent-%COMP%] {\n font-size: 56px;\n color: #1b7a3d;\n margin-bottom: 16px;\n}\n\n.save-success[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 22px;\n color: #1b7a3d;\n}"] });
|
|
947
|
-
};
|
|
948
|
-
ConnectionStudioComponent = __decorate([
|
|
949
|
-
RegisterClass(BaseResourceComponent, 'IntegrationConnectionStudio')
|
|
950
|
-
], ConnectionStudioComponent);
|
|
951
|
-
export { ConnectionStudioComponent };
|
|
952
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConnectionStudioComponent, [{
|
|
953
|
-
type: Component,
|
|
954
|
-
args: [{ standalone: false, selector: 'app-connection-studio', template: "<div class=\"connection-studio\">\n <div class=\"studio-header\">\n <h2><i class=\"fa-solid fa-wand-magic-sparkles\"></i> Connection Studio</h2>\n </div>\n\n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n @for (step of Steps; track step.Index; let i = $index) {\n <div class=\"step\" [class.active]=\"CurrentStep === step.Index\"\n [class.completed]=\"CurrentStep > step.Index\">\n <div class=\"step-circle\">\n @if (CurrentStep > step.Index) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n {{ step.Index + 1 }}\n }\n </div>\n <span class=\"step-label\">{{ step.Label }}</span>\n </div>\n @if (i < Steps.length - 1) {\n <div class=\"step-connector\" [class.completed]=\"CurrentStep > step.Index\"></div>\n }\n }\n </div>\n\n <!-- Step 1: Choose Integration -->\n @if (CurrentStep === 0) {\n <div class=\"step-content\">\n <h3>Choose Integration</h3>\n <p class=\"step-description\">Select the system you want to connect to, or set up a custom connection.</p>\n\n @if (IsLoadingIntegrations) {\n <mj-loading text=\"Loading integrations...\" size=\"medium\"></mj-loading>\n } @else {\n <div class=\"integration-grid\">\n @for (integration of Integrations; track integration.ID) {\n <div class=\"integration-card\"\n [class.selected]=\"IsSelectedIntegration(integration.ID)\"\n (click)=\"SelectIntegration(integration)\">\n <i class=\"card-icon\" [class]=\"IntegrationIcon(integration)\"></i>\n <span class=\"card-name\">{{ integration.Name }}</span>\n @if (integration.Description) {\n <span class=\"card-desc\">{{ integration.Description }}</span>\n }\n </div>\n }\n\n <!-- Custom integration option -->\n <div class=\"integration-card custom-card\"\n [class.selected]=\"UseCustomMode\"\n (click)=\"SelectCustomMode()\">\n <i class=\"card-icon fa-solid fa-gear\"></i>\n <span class=\"card-name\">Custom</span>\n <span class=\"card-desc\">Manual configuration with any source type</span>\n </div>\n </div>\n\n <!-- Custom mode: pick a source type -->\n @if (UseCustomMode) {\n <div class=\"custom-source-section\">\n <div class=\"custom-source-label\">Select a connection type:</div>\n <div class=\"source-type-chips\">\n @for (st of SourceTypes; track st.ID) {\n <div class=\"source-chip\"\n [class.selected]=\"IsSelectedCustomSourceType(st.ID)\"\n (click)=\"SelectCustomSourceType(st)\">\n <i [class]=\"st.IconClass ?? 'fa-solid fa-plug'\"></i>\n {{ st.Name }}\n </div>\n }\n </div>\n </div>\n }\n\n <div class=\"step-actions\">\n <button kendoButton [themeColor]=\"'primary'\" [disabled]=\"!IsStep1Valid\"\n (click)=\"NextStep()\">\n Next <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Step 2: Configure -->\n @if (CurrentStep === 1) {\n <div class=\"step-content\">\n <h3>Configure Connection</h3>\n <p class=\"step-description\">\n Name your connection and attach credentials for\n <strong>{{ SelectedIntegrationName }}</strong>.\n </p>\n\n <!-- Company section -->\n @if (!HasCompanies) {\n <div class=\"company-setup-card\">\n <div class=\"company-setup-icon\"><i class=\"fa-solid fa-building\"></i></div>\n <div class=\"company-setup-content\">\n <div class=\"company-setup-title\">Set Up Your Organization</div>\n <div class=\"company-setup-desc\">\n Integrations are scoped to a company. Create one to get started.\n </div>\n <div class=\"company-setup-form\">\n <input kendoTextBox [(ngModel)]=\"NewCompanyName\"\n placeholder=\"Company name\" />\n <button kendoButton [themeColor]=\"'primary'\"\n [disabled]=\"!NewCompanyName.trim() || IsCreatingCompany\"\n (click)=\"CreateCompany()\">\n @if (IsCreatingCompany) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-plus\"></i> Create\n }\n </button>\n </div>\n </div>\n </div>\n }\n\n <div class=\"config-form\">\n @if (NeedsCompanyPicker) {\n <div class=\"form-field\">\n <label>Company</label>\n <kendo-dropdownlist\n [data]=\"Companies\"\n [textField]=\"'Name'\"\n [valueField]=\"'ID'\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"SelectedCompanyID\"\n [defaultItem]=\"{ ID: null, Name: 'Select a company...' }\">\n </kendo-dropdownlist>\n </div>\n }\n\n <div class=\"form-field\">\n <label>Connection Name</label>\n <input kendoTextBox [(ngModel)]=\"ConnectionName\"\n placeholder=\"e.g., Production HubSpot\" />\n </div>\n <div class=\"form-field\">\n <label>Description</label>\n <textarea kendoTextArea [(ngModel)]=\"ConnectionDescription\" rows=\"2\"\n placeholder=\"Optional description...\"></textarea>\n </div>\n </div>\n\n <!-- Credential picker -->\n <div class=\"credential-section\">\n <div class=\"section-label\">Credentials</div>\n\n @if (SelectedCredential) {\n <!-- A credential is already selected -->\n <div class=\"credential-selected\">\n <div class=\"credential-info\">\n <i class=\"credential-icon fa-solid fa-shield-halved\"></i>\n <div class=\"credential-details\">\n <div class=\"credential-name\">{{ SelectedCredential.Name }}</div>\n @if (CredentialTypeName) {\n <div class=\"credential-type\">{{ CredentialTypeName }}</div>\n }\n </div>\n </div>\n <div class=\"credential-actions\">\n <button kendoButton [look]=\"'flat'\" (click)=\"ClearCredential()\"\n title=\"Change credential\">\n <i class=\"fa-solid fa-rotate\"></i>\n </button>\n <button kendoButton [look]=\"'flat'\" (click)=\"ClearCredential()\"\n title=\"Remove credential\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n } @else if (CredentialPickerMode === 'choose') {\n <!-- Choose between existing or new -->\n <div class=\"credential-choice\">\n <button kendoButton [look]=\"'outline'\" (click)=\"ShowExistingCredentials()\">\n <i class=\"fa-solid fa-list\"></i> Use Existing Credential\n </button>\n <span class=\"credential-or\">or</span>\n <button kendoButton [look]=\"'outline'\" (click)=\"OpenCredentialDialog()\">\n <i class=\"fa-solid fa-plus\"></i> Create New Credential\n </button>\n </div>\n } @else if (CredentialPickerMode === 'existing') {\n <!-- Existing credential list -->\n <div class=\"credential-list-section\">\n <div class=\"credential-list-header\">\n <button kendoButton [look]=\"'flat'\" (click)=\"BackToCredentialChoice()\">\n <i class=\"fa-solid fa-arrow-left\"></i> Back\n </button>\n <span class=\"credential-list-title\">Select a Credential</span>\n </div>\n\n @if (IsLoadingCredentials) {\n <mj-loading text=\"Loading credentials...\" size=\"small\"></mj-loading>\n } @else if (ExistingCredentials.length === 0) {\n <div class=\"credential-empty-list\">\n <i class=\"fa-solid fa-inbox\"></i>\n <span>No matching credentials found.</span>\n <button kendoButton [look]=\"'outline'\" (click)=\"OpenCredentialDialog()\">\n <i class=\"fa-solid fa-plus\"></i> Create One\n </button>\n </div>\n } @else {\n <div class=\"credential-list\">\n @for (cred of ExistingCredentials; track cred.ID) {\n <div class=\"credential-list-item\" (click)=\"SelectExistingCredential(cred)\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n <div class=\"credential-list-item-info\">\n <div class=\"credential-list-item-name\">{{ cred.Name }}</div>\n @if (cred.Description) {\n <div class=\"credential-list-item-desc\">{{ cred.Description }}</div>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right credential-list-item-arrow\"></i>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"step-actions\">\n <button kendoButton (click)=\"PrevStep()\">\n <i class=\"fa-solid fa-arrow-left\"></i> Back\n </button>\n <button kendoButton [themeColor]=\"'primary'\" [disabled]=\"!IsStep2Valid\"\n (click)=\"NextStep()\">\n Next <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n </div>\n }\n\n <!-- Step 3: Test & Save -->\n @if (CurrentStep === 2) {\n <div class=\"step-content\">\n @if (SaveCompleted) {\n <!-- Success screen -->\n <div class=\"save-success\">\n <div class=\"success-icon\"><i class=\"fa-solid fa-circle-check\"></i></div>\n <h3>Connection Saved</h3>\n <p class=\"step-description\">\n <strong>{{ ConnectionName }}</strong> has been created and is ready for use.\n </p>\n <div class=\"step-actions\" style=\"justify-content: center;\">\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"ResetWizard()\">\n <i class=\"fa-solid fa-plus\"></i> Create Another Connection\n </button>\n </div>\n </div>\n } @else {\n <h3>Test & Save</h3>\n <p class=\"step-description\">Review your configuration, test the connection, and save.</p>\n\n <div class=\"test-section\">\n <div class=\"test-summary\">\n <div class=\"summary-row\">\n <span class=\"label\">Integration:</span>\n <span class=\"value\">\n <i [class]=\"SelectedIntegrationIcon\"></i>\n {{ SelectedIntegrationName }}\n </span>\n </div>\n @if (UseCustomMode && CustomSourceTypeName) {\n <div class=\"summary-row\">\n <span class=\"label\">Source Type:</span>\n <span class=\"value\">{{ CustomSourceTypeName }}</span>\n </div>\n }\n @if (SelectedCompanyName) {\n <div class=\"summary-row\">\n <span class=\"label\">Company:</span>\n <span class=\"value\">\n <i class=\"fa-solid fa-building\"></i>\n {{ SelectedCompanyName }}\n </span>\n </div>\n }\n <div class=\"summary-row\">\n <span class=\"label\">Connection Name:</span>\n <span class=\"value\">{{ ConnectionName }}</span>\n </div>\n <div class=\"summary-row\">\n <span class=\"label\">Credential:</span>\n <span class=\"value\">\n @if (SelectedCredential) {\n <i class=\"fa-solid fa-shield-halved\"></i>\n {{ SelectedCredential.Name }}\n } @else {\n <span style=\"color: #888;\">None attached</span>\n }\n </span>\n </div>\n </div>\n\n @if (TestStatus === 'idle') {\n <p class=\"test-hint\">Click \"Test Connection\" to verify the configuration.</p>\n }\n @if (TestStatus === 'testing') {\n <mj-loading text=\"Testing connection...\" size=\"small\"></mj-loading>\n }\n @if (TestStatus === 'success') {\n <div class=\"test-result success\">\n <i class=\"fa-solid fa-circle-check\"></i> {{ TestMessage }}\n </div>\n }\n @if (TestStatus === 'failed') {\n <div class=\"test-result failed\">\n <i class=\"fa-solid fa-circle-xmark\"></i> {{ TestMessage }}\n </div>\n }\n </div>\n\n @if (SaveError) {\n <div class=\"test-result failed\" style=\"margin-bottom: 16px;\">\n <i class=\"fa-solid fa-circle-xmark\"></i> Save failed: {{ SaveError }}\n </div>\n }\n\n <div class=\"step-actions\">\n <button kendoButton (click)=\"PrevStep()\" [disabled]=\"IsSaving\">\n <i class=\"fa-solid fa-arrow-left\"></i> Back\n </button>\n <button kendoButton [look]=\"'outline'\" (click)=\"TestConnection()\" [disabled]=\"IsSaving\">\n <i class=\"fa-solid fa-vial\"></i> Test Connection\n </button>\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"SaveIntegration()\" [disabled]=\"IsSaving\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-floppy-disk\"></i> Save\n }\n </button>\n </div>\n }\n </div>\n }\n</div>\n\n<!-- Credential Dialog -->\n@if (ShowCredentialDialog) {\n <mj-credential-dialog\n #credentialDialog\n [Visible]=\"ShowCredentialDialog\"\n [PreselectedTypeId]=\"PreselectedCredentialTypeId\"\n (close)=\"OnCredentialDialogClose($event)\">\n </mj-credential-dialog>\n}\n", styles: [".connection-studio {\n padding: 24px;\n max-width: 900px;\n margin: 0 auto;\n}\n\n.studio-header {\n margin-bottom: 24px;\n}\n\n.studio-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n}\n\n.studio-header h2 i {\n margin-right: 8px;\n}\n\n/* --- Step indicator --- */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 32px;\n gap: 0;\n}\n\n.step {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n min-width: 80px;\n}\n\n.step-circle {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n font-weight: 600;\n background: #e0e0e0;\n color: #666;\n}\n\n.step.active .step-circle { background: #4a6cf7; color: #fff; }\n.step.completed .step-circle { background: #1b7a3d; color: #fff; }\n\n.step-label { font-size: 12px; color: #888; }\n.step.active .step-label { color: #4a6cf7; font-weight: 600; }\n\n.step-connector {\n flex: 1;\n height: 2px;\n background: #e0e0e0;\n min-width: 40px;\n margin: 0 4px;\n margin-bottom: 22px;\n}\n\n.step-connector.completed { background: #1b7a3d; }\n\n/* --- Step content --- */\n.step-content h3 {\n margin: 0 0 4px 0;\n font-size: 18px;\n}\n\n.step-description {\n color: #666;\n margin: 0 0 20px 0;\n}\n\n/* --- Integration cards grid --- */\n.integration-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.integration-card {\n padding: 20px 16px;\n border: 2px solid #eee;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.15s;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.integration-card:hover { border-color: #4a6cf7; background: #fafbff; }\n.integration-card.selected { border-color: #4a6cf7; background: #f0f4ff; }\n\n.integration-card i.card-icon {\n font-size: 32px;\n color: #4a6cf7;\n}\n\n.integration-card .card-name {\n font-weight: 600;\n font-size: 14px;\n}\n\n.integration-card .card-desc {\n font-size: 11px;\n color: #888;\n line-height: 1.3;\n}\n\n.integration-card.custom-card {\n border-style: dashed;\n}\n\n.integration-card.custom-card i.card-icon { color: #888; }\n.integration-card.custom-card.selected i.card-icon { color: #4a6cf7; }\n\n/* --- Custom source type sub-selection --- */\n.custom-source-section {\n margin-top: 16px;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n}\n\n.custom-source-section .custom-source-label {\n font-size: 13px;\n font-weight: 600;\n color: #444;\n margin-bottom: 10px;\n}\n\n.source-type-chips {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.source-chip {\n padding: 8px 14px;\n border: 2px solid #ddd;\n border-radius: 20px;\n cursor: pointer;\n font-size: 13px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.15s;\n}\n\n.source-chip:hover { border-color: #4a6cf7; }\n.source-chip.selected { border-color: #4a6cf7; background: #f0f4ff; color: #4a6cf7; font-weight: 600; }\n.source-chip i { font-size: 14px; }\n\n/* --- Company setup card --- */\n.company-setup-card {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 20px;\n background: #fff8e1;\n border: 1px solid #ffe082;\n border-radius: 10px;\n margin-bottom: 20px;\n}\n\n.company-setup-icon {\n font-size: 28px;\n color: #f9a825;\n padding-top: 2px;\n}\n\n.company-setup-content {\n flex: 1;\n}\n\n.company-setup-title {\n font-weight: 600;\n font-size: 15px;\n margin-bottom: 4px;\n}\n\n.company-setup-desc {\n font-size: 13px;\n color: #666;\n margin-bottom: 12px;\n}\n\n.company-setup-form {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.company-setup-form input {\n flex: 1;\n max-width: 280px;\n}\n\n/* --- Configuration form --- */\n.config-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.form-field label {\n font-size: 13px;\n font-weight: 600;\n color: #444;\n}\n\n/* --- Credential section --- */\n.credential-section {\n background: #f8f9fa;\n border-radius: 8px;\n padding: 16px;\n}\n\n.credential-section .section-label {\n font-size: 13px;\n font-weight: 600;\n color: #444;\n margin-bottom: 10px;\n}\n\n/* --- Credential choice buttons --- */\n.credential-choice {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.credential-or {\n color: #888;\n font-size: 13px;\n font-style: italic;\n}\n\n/* --- Credential list (existing picker) --- */\n.credential-list-section {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.credential-list-header {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.credential-list-title {\n font-weight: 600;\n font-size: 14px;\n}\n\n.credential-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-height: 240px;\n overflow-y: auto;\n}\n\n.credential-list-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.credential-list-item:hover {\n border-color: #4a6cf7;\n background: #f0f4ff;\n}\n\n.credential-list-item > i {\n font-size: 16px;\n color: #4a6cf7;\n}\n\n.credential-list-item-info {\n flex: 1;\n min-width: 0;\n}\n\n.credential-list-item-name {\n font-weight: 600;\n font-size: 13px;\n}\n\n.credential-list-item-desc {\n font-size: 11px;\n color: #888;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.credential-list-item-arrow {\n color: #ccc;\n font-size: 12px;\n}\n\n.credential-empty-list {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 16px;\n color: #888;\n font-size: 13px;\n}\n\n.credential-empty-list i {\n font-size: 24px;\n color: #ccc;\n}\n\n.credential-selected {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n}\n\n.credential-info {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.credential-info i.credential-icon {\n font-size: 20px;\n color: #4a6cf7;\n}\n\n.credential-details .credential-name {\n font-weight: 600;\n font-size: 14px;\n}\n\n.credential-details .credential-type {\n font-size: 12px;\n color: #888;\n}\n\n.credential-actions {\n display: flex;\n gap: 6px;\n}\n\n/* --- Step actions --- */\n.step-actions {\n display: flex;\n gap: 8px;\n padding-top: 16px;\n border-top: 1px solid #eee;\n}\n\n/* --- Test & Save section --- */\n.test-section { margin-bottom: 24px; }\n\n.test-summary {\n background: #f8f9fa;\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.summary-row {\n display: flex;\n gap: 8px;\n padding: 4px 0;\n font-size: 14px;\n}\n\n.summary-row .label {\n font-weight: 600;\n min-width: 120px;\n color: #666;\n}\n\n.summary-row .value {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.test-hint {\n color: #888;\n font-style: italic;\n}\n\n.test-result {\n padding: 12px 16px;\n border-radius: 8px;\n font-weight: 500;\n}\n\n.test-result i { margin-right: 8px; }\n.test-result.success { background: #e6f9ed; color: #1b7a3d; }\n.test-result.failed { background: #fde8e8; color: #c62828; }\n\n/* --- Save success screen --- */\n.save-success {\n text-align: center;\n padding: 40px 20px;\n}\n\n.save-success .success-icon {\n font-size: 56px;\n color: #1b7a3d;\n margin-bottom: 16px;\n}\n\n.save-success h3 {\n margin: 0 0 8px 0;\n font-size: 22px;\n color: #1b7a3d;\n}\n"] }]
|
|
955
|
-
}], null, null); })();
|
|
956
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConnectionStudioComponent, { className: "ConnectionStudioComponent", filePath: "src/Integration/components/connection-studio/connection-studio.component.ts", lineNumber: 45 }); })();
|
|
957
|
-
export function LoadConnectionStudio() {
|
|
958
|
-
// Tree-shaking prevention
|
|
959
|
-
}
|
|
960
|
-
//# sourceMappingURL=connection-studio.component.js.map
|