@mj-biz-apps/common-ng 5.45.0 → 5.46.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/lib/components/identity-header/activity-identity.component.d.ts +3 -0
- package/dist/lib/components/identity-header/activity-identity.component.d.ts.map +1 -1
- package/dist/lib/components/identity-header/activity-identity.component.js +87 -46
- package/dist/lib/components/identity-header/activity-identity.component.js.map +1 -1
- package/dist/lib/components/identity-header/organization-identity.component.js +2 -2
- package/dist/lib/components/identity-header/person-identity.component.d.ts +4 -0
- package/dist/lib/components/identity-header/person-identity.component.d.ts.map +1 -1
- package/dist/lib/components/identity-header/person-identity.component.js +157 -55
- package/dist/lib/components/identity-header/person-identity.component.js.map +1 -1
- package/dist/lib/components/person-job-functions/person-job-functions.component.d.ts +49 -0
- package/dist/lib/components/person-job-functions/person-job-functions.component.d.ts.map +1 -0
- package/dist/lib/components/person-job-functions/person-job-functions.component.js +506 -0
- package/dist/lib/components/person-job-functions/person-job-functions.component.js.map +1 -0
- package/dist/lib/components/relationship-list/relationship-list.component.d.ts +25 -1
- package/dist/lib/components/relationship-list/relationship-list.component.d.ts.map +1 -1
- package/dist/lib/components/relationship-list/relationship-list.component.js +318 -119
- package/dist/lib/components/relationship-list/relationship-list.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +22 -20
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +10 -0
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/panels/__tests__/activity-header.panel.test.js +17 -0
- package/dist/lib/custom/panels/__tests__/activity-header.panel.test.js.map +1 -1
- package/dist/lib/custom/panels/person-job-functions.panel.d.ts +13 -0
- package/dist/lib/custom/panels/person-job-functions.panel.d.ts.map +1 -0
- package/dist/lib/custom/panels/person-job-functions.panel.js +60 -0
- package/dist/lib/custom/panels/person-job-functions.panel.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonActivity/mjbizappscommonactivity.form.component.js +43 -41
- package/dist/lib/generated/Entities/mjBizAppsCommonActivity/mjbizappscommonactivity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsCommonJobFunction/mjbizappscommonjobfunction.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonJobFunction/mjbizappscommonjobfunction.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonJobFunction/mjbizappscommonjobfunction.form.component.js +106 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonJobFunction/mjbizappscommonjobfunction.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js +27 -31
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js +61 -37
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsCommonPersonJobFunction/mjbizappscommonpersonjobfunction.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPersonJobFunction/mjbizappscommonpersonjobfunction.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPersonJobFunction/mjbizappscommonpersonjobfunction.form.component.js +77 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPersonJobFunction/mjbizappscommonpersonjobfunction.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js +9 -9
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsCommonSeniorityLevel/mjbizappscommonsenioritylevel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonSeniorityLevel/mjbizappscommonsenioritylevel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonSeniorityLevel/mjbizappscommonsenioritylevel.form.component.js +106 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonSeniorityLevel/mjbizappscommonsenioritylevel.form.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +114 -31
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +543 -54
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +2 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +2 -2
|
@@ -47,7 +47,7 @@ function RelationshipListComponent_Conditional_6_Conditional_1_Conditional_0_Tem
|
|
|
47
47
|
} }
|
|
48
48
|
function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
49
49
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
50
|
-
i0.ɵɵelementStart(0, "a",
|
|
50
|
+
i0.ɵɵelementStart(0, "a", 33);
|
|
51
51
|
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_7_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r3); const item_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onNavigateToTarget(item_r4, $event)); });
|
|
52
52
|
i0.ɵɵtext(1);
|
|
53
53
|
i0.ɵɵelementEnd();
|
|
@@ -76,7 +76,27 @@ function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Condi
|
|
|
76
76
|
} }
|
|
77
77
|
function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
78
78
|
i0.ɵɵelementStart(0, "span", 28);
|
|
79
|
-
i0.ɵɵelement(1, "i",
|
|
79
|
+
i0.ɵɵelement(1, "i", 34);
|
|
80
|
+
i0.ɵɵtext(2);
|
|
81
|
+
i0.ɵɵelementEnd();
|
|
82
|
+
} if (rf & 2) {
|
|
83
|
+
const item_r4 = i0.ɵɵnextContext().$implicit;
|
|
84
|
+
i0.ɵɵadvance(2);
|
|
85
|
+
i0.ɵɵtextInterpolate1(" ", item_r4.Relationship.JobFunction, " ");
|
|
86
|
+
} }
|
|
87
|
+
function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
88
|
+
i0.ɵɵelementStart(0, "span", 29);
|
|
89
|
+
i0.ɵɵelement(1, "i", 35);
|
|
90
|
+
i0.ɵɵtext(2);
|
|
91
|
+
i0.ɵɵelementEnd();
|
|
92
|
+
} if (rf & 2) {
|
|
93
|
+
const item_r4 = i0.ɵɵnextContext().$implicit;
|
|
94
|
+
i0.ɵɵadvance(2);
|
|
95
|
+
i0.ɵɵtextInterpolate1(" ", item_r4.Relationship.SeniorityLevel, " ");
|
|
96
|
+
} }
|
|
97
|
+
function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
+
i0.ɵɵelementStart(0, "span", 30);
|
|
99
|
+
i0.ɵɵelement(1, "i", 36);
|
|
80
100
|
i0.ɵɵtext(2);
|
|
81
101
|
i0.ɵɵelementEnd();
|
|
82
102
|
} if (rf & 2) {
|
|
@@ -84,27 +104,27 @@ function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Condi
|
|
|
84
104
|
i0.ɵɵadvance(2);
|
|
85
105
|
i0.ɵɵtextInterpolate1(" ", item_r4.DateDisplay, " ");
|
|
86
106
|
} }
|
|
87
|
-
function
|
|
107
|
+
function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_16_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
88
108
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
89
|
-
i0.ɵɵelementStart(0, "button",
|
|
90
|
-
i0.ɵɵlistener("click", function
|
|
91
|
-
i0.ɵɵelement(1, "i",
|
|
109
|
+
i0.ɵɵelementStart(0, "button", 41);
|
|
110
|
+
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_16_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const item_r4 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onEndRelationship(item_r4.Relationship)); });
|
|
111
|
+
i0.ɵɵelement(1, "i", 42);
|
|
92
112
|
i0.ɵɵelementEnd();
|
|
93
113
|
} }
|
|
94
|
-
function
|
|
114
|
+
function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_16_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
95
115
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
96
|
-
i0.ɵɵelementStart(0, "button",
|
|
97
|
-
i0.ɵɵlistener("click", function
|
|
98
|
-
i0.ɵɵelement(1, "i",
|
|
116
|
+
i0.ɵɵelementStart(0, "button", 43);
|
|
117
|
+
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_16_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const item_r4 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onDelete(item_r4.Relationship)); });
|
|
118
|
+
i0.ɵɵelement(1, "i", 44);
|
|
99
119
|
i0.ɵɵelementEnd();
|
|
100
120
|
} }
|
|
101
|
-
function
|
|
121
|
+
function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
102
122
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
103
|
-
i0.ɵɵelementStart(0, "div",
|
|
104
|
-
i0.ɵɵlistener("click", function
|
|
105
|
-
i0.ɵɵelement(2, "i",
|
|
123
|
+
i0.ɵɵelementStart(0, "div", 32)(1, "button", 37);
|
|
124
|
+
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_16_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r5); const item_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onEdit(item_r4.Relationship)); });
|
|
125
|
+
i0.ɵɵelement(2, "i", 38);
|
|
106
126
|
i0.ɵɵelementEnd();
|
|
107
|
-
i0.ɵɵconditionalCreate(3,
|
|
127
|
+
i0.ɵɵconditionalCreate(3, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_16_Conditional_3_Template, 2, 0, "button", 39)(4, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_16_Conditional_4_Template, 2, 0, "button", 40);
|
|
108
128
|
i0.ɵɵelementEnd();
|
|
109
129
|
} if (rf & 2) {
|
|
110
130
|
const item_r4 = i0.ɵɵnextContext().$implicit;
|
|
@@ -123,10 +143,12 @@ function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Templ
|
|
|
123
143
|
i0.ɵɵelementStart(9, "div", 26);
|
|
124
144
|
i0.ɵɵconditionalCreate(10, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_10_Template, 2, 1, "span", 27);
|
|
125
145
|
i0.ɵɵconditionalCreate(11, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_11_Template, 3, 1, "span", 28);
|
|
126
|
-
i0.ɵɵ
|
|
127
|
-
i0.ɵɵ
|
|
146
|
+
i0.ɵɵconditionalCreate(12, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_12_Template, 3, 1, "span", 29);
|
|
147
|
+
i0.ɵɵconditionalCreate(13, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_13_Template, 3, 1, "span", 30);
|
|
148
|
+
i0.ɵɵelementStart(14, "span", 31);
|
|
149
|
+
i0.ɵɵtext(15);
|
|
128
150
|
i0.ɵɵelementEnd()()();
|
|
129
|
-
i0.ɵɵconditionalCreate(
|
|
151
|
+
i0.ɵɵconditionalCreate(16, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_16_Template, 5, 1, "div", 32);
|
|
130
152
|
i0.ɵɵelementEnd();
|
|
131
153
|
} if (rf & 2) {
|
|
132
154
|
const item_r4 = ctx.$implicit;
|
|
@@ -142,13 +164,17 @@ function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Templ
|
|
|
142
164
|
i0.ɵɵadvance(3);
|
|
143
165
|
i0.ɵɵconditional(item_r4.Relationship.Title ? 10 : -1);
|
|
144
166
|
i0.ɵɵadvance();
|
|
145
|
-
i0.ɵɵconditional(item_r4.
|
|
167
|
+
i0.ɵɵconditional(item_r4.Relationship.JobFunction ? 11 : -1);
|
|
168
|
+
i0.ɵɵadvance();
|
|
169
|
+
i0.ɵɵconditional(item_r4.Relationship.SeniorityLevel ? 12 : -1);
|
|
170
|
+
i0.ɵɵadvance();
|
|
171
|
+
i0.ɵɵconditional(item_r4.DateDisplay ? 13 : -1);
|
|
146
172
|
i0.ɵɵadvance();
|
|
147
173
|
i0.ɵɵproperty("ngClass", "badge-" + item_r4.Relationship.Status.toLowerCase());
|
|
148
174
|
i0.ɵɵadvance();
|
|
149
175
|
i0.ɵɵtextInterpolate1(" ", item_r4.Relationship.Status, " ");
|
|
150
176
|
i0.ɵɵadvance();
|
|
151
|
-
i0.ɵɵconditional(ctx_r1.EditMode ?
|
|
177
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 16 : -1);
|
|
152
178
|
} }
|
|
153
179
|
function RelationshipListComponent_Conditional_6_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
154
180
|
i0.ɵɵelementStart(0, "div", 12)(1, "div", 15)(2, "div", 16);
|
|
@@ -160,7 +186,7 @@ function RelationshipListComponent_Conditional_6_Conditional_1_For_3_Template(rf
|
|
|
160
186
|
i0.ɵɵelementStart(6, "span", 18);
|
|
161
187
|
i0.ɵɵtext(7);
|
|
162
188
|
i0.ɵɵelementEnd()();
|
|
163
|
-
i0.ɵɵrepeaterCreate(8, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Template,
|
|
189
|
+
i0.ɵɵrepeaterCreate(8, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Template, 17, 12, "div", 19, _forTrack1);
|
|
164
190
|
i0.ɵɵelementEnd();
|
|
165
191
|
} if (rf & 2) {
|
|
166
192
|
const group_r8 = ctx.$implicit;
|
|
@@ -193,7 +219,7 @@ function RelationshipListComponent_Conditional_6_Template(rf, ctx) { if (rf & 1)
|
|
|
193
219
|
i0.ɵɵconditional(ctx_r1.Loading ? 0 : 1);
|
|
194
220
|
} }
|
|
195
221
|
function RelationshipListComponent_Conditional_7_For_20_Template(rf, ctx) { if (rf & 1) {
|
|
196
|
-
i0.ɵɵelementStart(0, "option",
|
|
222
|
+
i0.ɵɵelementStart(0, "option", 56);
|
|
197
223
|
i0.ɵɵtext(1);
|
|
198
224
|
i0.ɵɵelementEnd();
|
|
199
225
|
} if (rf & 2) {
|
|
@@ -203,15 +229,15 @@ function RelationshipListComponent_Conditional_7_For_20_Template(rf, ctx) { if (
|
|
|
203
229
|
i0.ɵɵtextInterpolate(t_r10.Name);
|
|
204
230
|
} }
|
|
205
231
|
function RelationshipListComponent_Conditional_7_Conditional_27_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
206
|
-
i0.ɵɵelementStart(0, "div",
|
|
232
|
+
i0.ɵɵelementStart(0, "div", 73)(1, "label");
|
|
207
233
|
i0.ɵɵtext(2, "Target Person ");
|
|
208
|
-
i0.ɵɵelementStart(3, "span",
|
|
234
|
+
i0.ɵɵelementStart(3, "span", 74);
|
|
209
235
|
i0.ɵɵtext(4, "*");
|
|
210
236
|
i0.ɵɵelementEnd()();
|
|
211
|
-
i0.ɵɵelementStart(5, "div",
|
|
212
|
-
i0.ɵɵelement(6, "mj-form-field",
|
|
237
|
+
i0.ɵɵelementStart(5, "div", 75);
|
|
238
|
+
i0.ɵɵelement(6, "mj-form-field", 76);
|
|
213
239
|
i0.ɵɵelementEnd();
|
|
214
|
-
i0.ɵɵelementStart(7, "span",
|
|
240
|
+
i0.ɵɵelementStart(7, "span", 77);
|
|
215
241
|
i0.ɵɵtext(8, "Search person by name, job title, or email");
|
|
216
242
|
i0.ɵɵelementEnd()();
|
|
217
243
|
} if (rf & 2) {
|
|
@@ -220,15 +246,15 @@ function RelationshipListComponent_Conditional_7_Conditional_27_Conditional_1_Te
|
|
|
220
246
|
i0.ɵɵproperty("Record", ctx_r1.DraftRelationship)("EditMode", true)("ShowLabel", false);
|
|
221
247
|
} }
|
|
222
248
|
function RelationshipListComponent_Conditional_7_Conditional_27_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
-
i0.ɵɵelementStart(0, "div",
|
|
249
|
+
i0.ɵɵelementStart(0, "div", 73)(1, "label");
|
|
224
250
|
i0.ɵɵtext(2, "Target Organization ");
|
|
225
|
-
i0.ɵɵelementStart(3, "span",
|
|
251
|
+
i0.ɵɵelementStart(3, "span", 74);
|
|
226
252
|
i0.ɵɵtext(4, "*");
|
|
227
253
|
i0.ɵɵelementEnd()();
|
|
228
|
-
i0.ɵɵelementStart(5, "div",
|
|
229
|
-
i0.ɵɵelement(6, "mj-form-field",
|
|
254
|
+
i0.ɵɵelementStart(5, "div", 75);
|
|
255
|
+
i0.ɵɵelement(6, "mj-form-field", 78);
|
|
230
256
|
i0.ɵɵelementEnd();
|
|
231
|
-
i0.ɵɵelementStart(7, "span",
|
|
257
|
+
i0.ɵɵelementStart(7, "span", 77);
|
|
232
258
|
i0.ɵɵtext(8, "Search organization or company name");
|
|
233
259
|
i0.ɵɵelementEnd()();
|
|
234
260
|
} if (rf & 2) {
|
|
@@ -237,9 +263,9 @@ function RelationshipListComponent_Conditional_7_Conditional_27_Conditional_2_Te
|
|
|
237
263
|
i0.ɵɵproperty("Record", ctx_r1.DraftRelationship)("EditMode", true)("ShowLabel", false);
|
|
238
264
|
} }
|
|
239
265
|
function RelationshipListComponent_Conditional_7_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
240
|
-
i0.ɵɵelementStart(0, "div",
|
|
241
|
-
i0.ɵɵconditionalCreate(1, RelationshipListComponent_Conditional_7_Conditional_27_Conditional_1_Template, 9, 3, "div",
|
|
242
|
-
i0.ɵɵconditionalCreate(2, RelationshipListComponent_Conditional_7_Conditional_27_Conditional_2_Template, 9, 3, "div",
|
|
266
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
267
|
+
i0.ɵɵconditionalCreate(1, RelationshipListComponent_Conditional_7_Conditional_27_Conditional_1_Template, 9, 3, "div", 73);
|
|
268
|
+
i0.ɵɵconditionalCreate(2, RelationshipListComponent_Conditional_7_Conditional_27_Conditional_2_Template, 9, 3, "div", 73);
|
|
243
269
|
i0.ɵɵelementEnd();
|
|
244
270
|
} if (rf & 2) {
|
|
245
271
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -248,68 +274,128 @@ function RelationshipListComponent_Conditional_7_Conditional_27_Template(rf, ctx
|
|
|
248
274
|
i0.ɵɵadvance();
|
|
249
275
|
i0.ɵɵconditional(ctx_r1.IsOrgTarget ? 2 : -1);
|
|
250
276
|
} }
|
|
251
|
-
function
|
|
252
|
-
i0.ɵɵ
|
|
277
|
+
function RelationshipListComponent_Conditional_7_Conditional_45_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
278
|
+
i0.ɵɵelementStart(0, "option", 56);
|
|
279
|
+
i0.ɵɵtext(1);
|
|
280
|
+
i0.ɵɵelementEnd();
|
|
281
|
+
} if (rf & 2) {
|
|
282
|
+
const jf_r12 = ctx.$implicit;
|
|
283
|
+
i0.ɵɵproperty("value", jf_r12.ID);
|
|
284
|
+
i0.ɵɵadvance();
|
|
285
|
+
i0.ɵɵtextInterpolate(jf_r12.Name);
|
|
286
|
+
} }
|
|
287
|
+
function RelationshipListComponent_Conditional_7_Conditional_45_For_16_Template(rf, ctx) { if (rf & 1) {
|
|
288
|
+
i0.ɵɵelementStart(0, "option", 56);
|
|
289
|
+
i0.ɵɵtext(1);
|
|
290
|
+
i0.ɵɵelementEnd();
|
|
291
|
+
} if (rf & 2) {
|
|
292
|
+
const sl_r13 = ctx.$implicit;
|
|
293
|
+
i0.ɵɵproperty("value", sl_r13.ID);
|
|
294
|
+
i0.ɵɵadvance();
|
|
295
|
+
i0.ɵɵtextInterpolate(sl_r13.Name);
|
|
296
|
+
} }
|
|
297
|
+
function RelationshipListComponent_Conditional_7_Conditional_45_Template(rf, ctx) { if (rf & 1) {
|
|
298
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
299
|
+
i0.ɵɵelementStart(0, "div", 68)(1, "div", 79)(2, "label");
|
|
300
|
+
i0.ɵɵtext(3, "Job Function");
|
|
301
|
+
i0.ɵɵelementEnd();
|
|
302
|
+
i0.ɵɵelementStart(4, "select", 54);
|
|
303
|
+
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_7_Conditional_45_Template_select_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.AddForm.JobFunctionID, $event) || (ctx_r1.AddForm.JobFunctionID = $event); return i0.ɵɵresetView($event); });
|
|
304
|
+
i0.ɵɵelementStart(5, "option", 55);
|
|
305
|
+
i0.ɵɵtext(6, "\u2014 None \u2014");
|
|
306
|
+
i0.ɵɵelementEnd();
|
|
307
|
+
i0.ɵɵrepeaterCreate(7, RelationshipListComponent_Conditional_7_Conditional_45_For_8_Template, 2, 2, "option", 56, _forTrack2);
|
|
308
|
+
i0.ɵɵelementEnd()();
|
|
309
|
+
i0.ɵɵelementStart(9, "div", 79)(10, "label");
|
|
310
|
+
i0.ɵɵtext(11, "Seniority Level");
|
|
311
|
+
i0.ɵɵelementEnd();
|
|
312
|
+
i0.ɵɵelementStart(12, "select", 54);
|
|
313
|
+
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_7_Conditional_45_Template_select_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.AddForm.SeniorityLevelID, $event) || (ctx_r1.AddForm.SeniorityLevelID = $event); return i0.ɵɵresetView($event); });
|
|
314
|
+
i0.ɵɵelementStart(13, "option", 55);
|
|
315
|
+
i0.ɵɵtext(14, "\u2014 None \u2014");
|
|
316
|
+
i0.ɵɵelementEnd();
|
|
317
|
+
i0.ɵɵrepeaterCreate(15, RelationshipListComponent_Conditional_7_Conditional_45_For_16_Template, 2, 2, "option", 56, _forTrack2);
|
|
318
|
+
i0.ɵɵelementEnd()()();
|
|
319
|
+
} if (rf & 2) {
|
|
320
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
321
|
+
i0.ɵɵadvance(4);
|
|
322
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.AddForm.JobFunctionID);
|
|
323
|
+
i0.ɵɵadvance(3);
|
|
324
|
+
i0.ɵɵrepeater(ctx_r1.JobFunctions);
|
|
325
|
+
i0.ɵɵadvance(5);
|
|
326
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.AddForm.SeniorityLevelID);
|
|
327
|
+
i0.ɵɵadvance(3);
|
|
328
|
+
i0.ɵɵrepeater(ctx_r1.SeniorityLevels);
|
|
329
|
+
} }
|
|
330
|
+
function RelationshipListComponent_Conditional_7_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
331
|
+
i0.ɵɵelement(0, "i", 71);
|
|
253
332
|
} }
|
|
254
333
|
function RelationshipListComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
255
334
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
256
|
-
i0.ɵɵelementStart(0, "div", 5)(1, "div",
|
|
257
|
-
i0.ɵɵelement(3, "i",
|
|
335
|
+
i0.ɵɵelementStart(0, "div", 5)(1, "div", 45)(2, "div", 46);
|
|
336
|
+
i0.ɵɵelement(3, "i", 47);
|
|
258
337
|
i0.ɵɵelementStart(4, "div")(5, "h3");
|
|
259
338
|
i0.ɵɵtext(6, "Add Relationship");
|
|
260
339
|
i0.ɵɵelementEnd();
|
|
261
|
-
i0.ɵɵelementStart(7, "p",
|
|
340
|
+
i0.ɵɵelementStart(7, "p", 48);
|
|
262
341
|
i0.ɵɵtext(8, "Create a connection to another person or organization");
|
|
263
342
|
i0.ɵɵelementEnd()()();
|
|
264
|
-
i0.ɵɵelementStart(9, "button",
|
|
343
|
+
i0.ɵɵelementStart(9, "button", 49);
|
|
265
344
|
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_7_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancelAdd()); });
|
|
266
|
-
i0.ɵɵelement(10, "i",
|
|
345
|
+
i0.ɵɵelement(10, "i", 50);
|
|
267
346
|
i0.ɵɵelementEnd()();
|
|
268
|
-
i0.ɵɵelementStart(11, "div",
|
|
347
|
+
i0.ɵɵelementStart(11, "div", 51)(12, "div", 52)(13, "div", 53)(14, "label");
|
|
269
348
|
i0.ɵɵtext(15, "Relationship Type");
|
|
270
349
|
i0.ɵɵelementEnd();
|
|
271
|
-
i0.ɵɵelementStart(16, "select",
|
|
350
|
+
i0.ɵɵelementStart(16, "select", 54);
|
|
272
351
|
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_7_Template_select_ngModelChange_16_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.AddForm.TypeID, $event) || (ctx_r1.AddForm.TypeID = $event); return i0.ɵɵresetView($event); });
|
|
273
352
|
i0.ɵɵlistener("ngModelChange", function RelationshipListComponent_Conditional_7_Template_select_ngModelChange_16_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAddTypeChange()); });
|
|
274
|
-
i0.ɵɵelementStart(17, "option",
|
|
353
|
+
i0.ɵɵelementStart(17, "option", 55);
|
|
275
354
|
i0.ɵɵtext(18, "-- Select Type --");
|
|
276
355
|
i0.ɵɵelementEnd();
|
|
277
|
-
i0.ɵɵrepeaterCreate(19, RelationshipListComponent_Conditional_7_For_20_Template, 2, 2, "option",
|
|
356
|
+
i0.ɵɵrepeaterCreate(19, RelationshipListComponent_Conditional_7_For_20_Template, 2, 2, "option", 56, _forTrack2);
|
|
278
357
|
i0.ɵɵelementEnd()();
|
|
279
|
-
i0.ɵɵelementStart(21, "div",
|
|
358
|
+
i0.ɵɵelementStart(21, "div", 57)(22, "label");
|
|
280
359
|
i0.ɵɵtext(23, "Category");
|
|
281
360
|
i0.ɵɵelementEnd();
|
|
282
|
-
i0.ɵɵelementStart(24, "div",
|
|
283
|
-
i0.ɵɵelement(25, "i",
|
|
361
|
+
i0.ɵɵelementStart(24, "div", 58);
|
|
362
|
+
i0.ɵɵelement(25, "i", 59);
|
|
284
363
|
i0.ɵɵtext(26);
|
|
285
364
|
i0.ɵɵelementEnd()()();
|
|
286
|
-
i0.ɵɵconditionalCreate(27, RelationshipListComponent_Conditional_7_Conditional_27_Template, 3, 2, "div",
|
|
287
|
-
i0.ɵɵelementStart(28, "div",
|
|
365
|
+
i0.ɵɵconditionalCreate(27, RelationshipListComponent_Conditional_7_Conditional_27_Template, 3, 2, "div", 60);
|
|
366
|
+
i0.ɵɵelementStart(28, "div", 61)(29, "div", 62)(30, "label");
|
|
288
367
|
i0.ɵɵtext(31, "Title / Role (Optional)");
|
|
289
368
|
i0.ɵɵelementEnd();
|
|
290
|
-
i0.ɵɵelementStart(32, "input",
|
|
369
|
+
i0.ɵɵelementStart(32, "input", 63);
|
|
291
370
|
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_7_Template_input_ngModelChange_32_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.AddForm.Title, $event) || (ctx_r1.AddForm.Title = $event); return i0.ɵɵresetView($event); });
|
|
292
371
|
i0.ɵɵelementEnd()();
|
|
293
|
-
i0.ɵɵelementStart(33, "div",
|
|
372
|
+
i0.ɵɵelementStart(33, "div", 64)(34, "label");
|
|
294
373
|
i0.ɵɵtext(35, "Start Date");
|
|
295
374
|
i0.ɵɵelementEnd();
|
|
296
|
-
i0.ɵɵelementStart(36, "input",
|
|
375
|
+
i0.ɵɵelementStart(36, "input", 65);
|
|
297
376
|
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_7_Template_input_ngModelChange_36_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.AddForm.StartDate, $event) || (ctx_r1.AddForm.StartDate = $event); return i0.ɵɵresetView($event); });
|
|
298
377
|
i0.ɵɵelementEnd()();
|
|
299
|
-
i0.ɵɵelementStart(37, "div",
|
|
378
|
+
i0.ɵɵelementStart(37, "div", 64)(38, "label");
|
|
300
379
|
i0.ɵɵtext(39, "End Date");
|
|
301
380
|
i0.ɵɵelementEnd();
|
|
302
|
-
i0.ɵɵelementStart(40, "input",
|
|
381
|
+
i0.ɵɵelementStart(40, "input", 65);
|
|
303
382
|
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_7_Template_input_ngModelChange_40_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.AddForm.EndDate, $event) || (ctx_r1.AddForm.EndDate = $event); return i0.ɵɵresetView($event); });
|
|
304
|
-
i0.ɵɵelementEnd()()()
|
|
305
|
-
i0.ɵɵelementStart(41, "div",
|
|
306
|
-
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_7_Template_button_click_42_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.
|
|
307
|
-
i0.ɵɵ
|
|
308
|
-
i0.ɵɵtext(44, "
|
|
383
|
+
i0.ɵɵelementEnd()()();
|
|
384
|
+
i0.ɵɵelementStart(41, "div", 66)(42, "button", 67);
|
|
385
|
+
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_7_Template_button_click_42_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ShowAddAdvanced = !ctx_r1.ShowAddAdvanced); });
|
|
386
|
+
i0.ɵɵelement(43, "i");
|
|
387
|
+
i0.ɵɵtext(44, " Role Classification (Function & Seniority) ");
|
|
309
388
|
i0.ɵɵelementEnd();
|
|
310
|
-
i0.ɵɵ
|
|
311
|
-
i0.ɵɵ
|
|
312
|
-
i0.ɵɵ
|
|
389
|
+
i0.ɵɵconditionalCreate(45, RelationshipListComponent_Conditional_7_Conditional_45_Template, 17, 2, "div", 68);
|
|
390
|
+
i0.ɵɵelementEnd()();
|
|
391
|
+
i0.ɵɵelementStart(46, "div", 69)(47, "button", 70);
|
|
392
|
+
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_7_Template_button_click_47_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSaveAdd()); });
|
|
393
|
+
i0.ɵɵconditionalCreate(48, RelationshipListComponent_Conditional_7_Conditional_48_Template, 1, 0, "i", 71);
|
|
394
|
+
i0.ɵɵtext(49, " Save Relationship ");
|
|
395
|
+
i0.ɵɵelementEnd();
|
|
396
|
+
i0.ɵɵelementStart(50, "button", 72);
|
|
397
|
+
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_7_Template_button_click_50_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancelAdd()); });
|
|
398
|
+
i0.ɵɵtext(51, "Cancel");
|
|
313
399
|
i0.ɵɵelementEnd()()();
|
|
314
400
|
} if (rf & 2) {
|
|
315
401
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -327,93 +413,157 @@ function RelationshipListComponent_Conditional_7_Template(rf, ctx) { if (rf & 1)
|
|
|
327
413
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.AddForm.StartDate);
|
|
328
414
|
i0.ɵɵadvance(4);
|
|
329
415
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.AddForm.EndDate);
|
|
416
|
+
i0.ɵɵadvance(3);
|
|
417
|
+
i0.ɵɵclassMap(ctx_r1.ShowAddAdvanced ? "fa-solid fa-chevron-down" : "fa-solid fa-chevron-right");
|
|
418
|
+
i0.ɵɵadvance(2);
|
|
419
|
+
i0.ɵɵconditional(ctx_r1.ShowAddAdvanced ? 45 : -1);
|
|
330
420
|
i0.ɵɵadvance(2);
|
|
331
421
|
i0.ɵɵproperty("disabled", ctx_r1.Saving || !ctx_r1.AddForm.TypeID || !ctx_r1.HasValidAddTarget);
|
|
332
422
|
i0.ɵɵadvance();
|
|
333
|
-
i0.ɵɵconditional(ctx_r1.Saving ?
|
|
423
|
+
i0.ɵɵconditional(ctx_r1.Saving ? 48 : -1);
|
|
334
424
|
} }
|
|
335
425
|
function RelationshipListComponent_Conditional_8_For_18_Template(rf, ctx) { if (rf & 1) {
|
|
336
|
-
i0.ɵɵelementStart(0, "option",
|
|
426
|
+
i0.ɵɵelementStart(0, "option", 56);
|
|
427
|
+
i0.ɵɵtext(1);
|
|
428
|
+
i0.ɵɵelementEnd();
|
|
429
|
+
} if (rf & 2) {
|
|
430
|
+
const t_r15 = ctx.$implicit;
|
|
431
|
+
i0.ɵɵproperty("value", t_r15.ID);
|
|
432
|
+
i0.ɵɵadvance();
|
|
433
|
+
i0.ɵɵtextInterpolate(t_r15.Name);
|
|
434
|
+
} }
|
|
435
|
+
function RelationshipListComponent_Conditional_8_Conditional_52_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
436
|
+
i0.ɵɵelementStart(0, "option", 56);
|
|
337
437
|
i0.ɵɵtext(1);
|
|
338
438
|
i0.ɵɵelementEnd();
|
|
339
439
|
} if (rf & 2) {
|
|
340
|
-
const
|
|
341
|
-
i0.ɵɵproperty("value",
|
|
440
|
+
const jf_r17 = ctx.$implicit;
|
|
441
|
+
i0.ɵɵproperty("value", jf_r17.ID);
|
|
342
442
|
i0.ɵɵadvance();
|
|
343
|
-
i0.ɵɵtextInterpolate(
|
|
443
|
+
i0.ɵɵtextInterpolate(jf_r17.Name);
|
|
344
444
|
} }
|
|
345
|
-
function
|
|
346
|
-
i0.ɵɵ
|
|
445
|
+
function RelationshipListComponent_Conditional_8_Conditional_52_For_16_Template(rf, ctx) { if (rf & 1) {
|
|
446
|
+
i0.ɵɵelementStart(0, "option", 56);
|
|
447
|
+
i0.ɵɵtext(1);
|
|
448
|
+
i0.ɵɵelementEnd();
|
|
449
|
+
} if (rf & 2) {
|
|
450
|
+
const sl_r18 = ctx.$implicit;
|
|
451
|
+
i0.ɵɵproperty("value", sl_r18.ID);
|
|
452
|
+
i0.ɵɵadvance();
|
|
453
|
+
i0.ɵɵtextInterpolate(sl_r18.Name);
|
|
454
|
+
} }
|
|
455
|
+
function RelationshipListComponent_Conditional_8_Conditional_52_Template(rf, ctx) { if (rf & 1) {
|
|
456
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
457
|
+
i0.ɵɵelementStart(0, "div", 68)(1, "div", 79)(2, "label");
|
|
458
|
+
i0.ɵɵtext(3, "Job Function");
|
|
459
|
+
i0.ɵɵelementEnd();
|
|
460
|
+
i0.ɵɵelementStart(4, "select", 54);
|
|
461
|
+
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Conditional_52_Template_select_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.JobFunctionID, $event) || (ctx_r1.EditForm.JobFunctionID = $event); return i0.ɵɵresetView($event); });
|
|
462
|
+
i0.ɵɵelementStart(5, "option", 55);
|
|
463
|
+
i0.ɵɵtext(6, "\u2014 None \u2014");
|
|
464
|
+
i0.ɵɵelementEnd();
|
|
465
|
+
i0.ɵɵrepeaterCreate(7, RelationshipListComponent_Conditional_8_Conditional_52_For_8_Template, 2, 2, "option", 56, _forTrack2);
|
|
466
|
+
i0.ɵɵelementEnd()();
|
|
467
|
+
i0.ɵɵelementStart(9, "div", 79)(10, "label");
|
|
468
|
+
i0.ɵɵtext(11, "Seniority Level");
|
|
469
|
+
i0.ɵɵelementEnd();
|
|
470
|
+
i0.ɵɵelementStart(12, "select", 54);
|
|
471
|
+
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Conditional_52_Template_select_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.SeniorityLevelID, $event) || (ctx_r1.EditForm.SeniorityLevelID = $event); return i0.ɵɵresetView($event); });
|
|
472
|
+
i0.ɵɵelementStart(13, "option", 55);
|
|
473
|
+
i0.ɵɵtext(14, "\u2014 None \u2014");
|
|
474
|
+
i0.ɵɵelementEnd();
|
|
475
|
+
i0.ɵɵrepeaterCreate(15, RelationshipListComponent_Conditional_8_Conditional_52_For_16_Template, 2, 2, "option", 56, _forTrack2);
|
|
476
|
+
i0.ɵɵelementEnd()()();
|
|
477
|
+
} if (rf & 2) {
|
|
478
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
479
|
+
i0.ɵɵadvance(4);
|
|
480
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditForm.JobFunctionID);
|
|
481
|
+
i0.ɵɵadvance(3);
|
|
482
|
+
i0.ɵɵrepeater(ctx_r1.JobFunctions);
|
|
483
|
+
i0.ɵɵadvance(5);
|
|
484
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditForm.SeniorityLevelID);
|
|
485
|
+
i0.ɵɵadvance(3);
|
|
486
|
+
i0.ɵɵrepeater(ctx_r1.SeniorityLevels);
|
|
487
|
+
} }
|
|
488
|
+
function RelationshipListComponent_Conditional_8_Conditional_55_Template(rf, ctx) { if (rf & 1) {
|
|
489
|
+
i0.ɵɵelement(0, "i", 71);
|
|
347
490
|
} }
|
|
348
491
|
function RelationshipListComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
349
|
-
const
|
|
350
|
-
i0.ɵɵelementStart(0, "div", 5)(1, "div",
|
|
351
|
-
i0.ɵɵelement(3, "i",
|
|
492
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
493
|
+
i0.ɵɵelementStart(0, "div", 5)(1, "div", 45)(2, "div", 46);
|
|
494
|
+
i0.ɵɵelement(3, "i", 80);
|
|
352
495
|
i0.ɵɵelementStart(4, "div")(5, "h3");
|
|
353
496
|
i0.ɵɵtext(6, "Edit Relationship");
|
|
354
497
|
i0.ɵɵelementEnd();
|
|
355
|
-
i0.ɵɵelementStart(7, "p",
|
|
498
|
+
i0.ɵɵelementStart(7, "p", 48);
|
|
356
499
|
i0.ɵɵtext(8, "Update relationship details, dates, or status");
|
|
357
500
|
i0.ɵɵelementEnd()()();
|
|
358
|
-
i0.ɵɵelementStart(9, "button",
|
|
359
|
-
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_8_Template_button_click_9_listener() { i0.ɵɵrestoreView(
|
|
360
|
-
i0.ɵɵelement(10, "i",
|
|
501
|
+
i0.ɵɵelementStart(9, "button", 49);
|
|
502
|
+
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_8_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancelEdit()); });
|
|
503
|
+
i0.ɵɵelement(10, "i", 50);
|
|
361
504
|
i0.ɵɵelementEnd()();
|
|
362
|
-
i0.ɵɵelementStart(11, "div",
|
|
505
|
+
i0.ɵɵelementStart(11, "div", 51)(12, "div", 52)(13, "div", 53)(14, "label");
|
|
363
506
|
i0.ɵɵtext(15, "Relationship Type");
|
|
364
507
|
i0.ɵɵelementEnd();
|
|
365
|
-
i0.ɵɵelementStart(16, "select",
|
|
366
|
-
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_select_ngModelChange_16_listener($event) { i0.ɵɵrestoreView(
|
|
367
|
-
i0.ɵɵlistener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_select_ngModelChange_16_listener() { i0.ɵɵrestoreView(
|
|
368
|
-
i0.ɵɵrepeaterCreate(17, RelationshipListComponent_Conditional_8_For_18_Template, 2, 2, "option",
|
|
508
|
+
i0.ɵɵelementStart(16, "select", 54);
|
|
509
|
+
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_select_ngModelChange_16_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.TypeID, $event) || (ctx_r1.EditForm.TypeID = $event); return i0.ɵɵresetView($event); });
|
|
510
|
+
i0.ɵɵlistener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_select_ngModelChange_16_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onEditTypeChange()); });
|
|
511
|
+
i0.ɵɵrepeaterCreate(17, RelationshipListComponent_Conditional_8_For_18_Template, 2, 2, "option", 56, _forTrack2);
|
|
369
512
|
i0.ɵɵelementEnd()();
|
|
370
|
-
i0.ɵɵelementStart(19, "div",
|
|
513
|
+
i0.ɵɵelementStart(19, "div", 57)(20, "label");
|
|
371
514
|
i0.ɵɵtext(21, "Category");
|
|
372
515
|
i0.ɵɵelementEnd();
|
|
373
|
-
i0.ɵɵelementStart(22, "div",
|
|
374
|
-
i0.ɵɵelement(23, "i",
|
|
516
|
+
i0.ɵɵelementStart(22, "div", 58);
|
|
517
|
+
i0.ɵɵelement(23, "i", 59);
|
|
375
518
|
i0.ɵɵtext(24);
|
|
376
519
|
i0.ɵɵelementEnd()();
|
|
377
|
-
i0.ɵɵelementStart(25, "div",
|
|
520
|
+
i0.ɵɵelementStart(25, "div", 81)(26, "label");
|
|
378
521
|
i0.ɵɵtext(27, "Status");
|
|
379
522
|
i0.ɵɵelementEnd();
|
|
380
|
-
i0.ɵɵelementStart(28, "select",
|
|
381
|
-
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_select_ngModelChange_28_listener($event) { i0.ɵɵrestoreView(
|
|
382
|
-
i0.ɵɵelementStart(29, "option",
|
|
523
|
+
i0.ɵɵelementStart(28, "select", 54);
|
|
524
|
+
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_select_ngModelChange_28_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.Status, $event) || (ctx_r1.EditForm.Status = $event); return i0.ɵɵresetView($event); });
|
|
525
|
+
i0.ɵɵelementStart(29, "option", 82);
|
|
383
526
|
i0.ɵɵtext(30, "Active");
|
|
384
527
|
i0.ɵɵelementEnd();
|
|
385
|
-
i0.ɵɵelementStart(31, "option",
|
|
528
|
+
i0.ɵɵelementStart(31, "option", 83);
|
|
386
529
|
i0.ɵɵtext(32, "Inactive");
|
|
387
530
|
i0.ɵɵelementEnd();
|
|
388
|
-
i0.ɵɵelementStart(33, "option",
|
|
531
|
+
i0.ɵɵelementStart(33, "option", 84);
|
|
389
532
|
i0.ɵɵtext(34, "Ended");
|
|
390
533
|
i0.ɵɵelementEnd()()()();
|
|
391
|
-
i0.ɵɵelementStart(35, "div",
|
|
534
|
+
i0.ɵɵelementStart(35, "div", 61)(36, "div", 62)(37, "label");
|
|
392
535
|
i0.ɵɵtext(38, "Title / Role");
|
|
393
536
|
i0.ɵɵelementEnd();
|
|
394
|
-
i0.ɵɵelementStart(39, "input",
|
|
395
|
-
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_input_ngModelChange_39_listener($event) { i0.ɵɵrestoreView(
|
|
537
|
+
i0.ɵɵelementStart(39, "input", 85);
|
|
538
|
+
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_input_ngModelChange_39_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.Title, $event) || (ctx_r1.EditForm.Title = $event); return i0.ɵɵresetView($event); });
|
|
396
539
|
i0.ɵɵelementEnd()();
|
|
397
|
-
i0.ɵɵelementStart(40, "div",
|
|
540
|
+
i0.ɵɵelementStart(40, "div", 64)(41, "label");
|
|
398
541
|
i0.ɵɵtext(42, "Start Date");
|
|
399
542
|
i0.ɵɵelementEnd();
|
|
400
|
-
i0.ɵɵelementStart(43, "input",
|
|
401
|
-
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_input_ngModelChange_43_listener($event) { i0.ɵɵrestoreView(
|
|
543
|
+
i0.ɵɵelementStart(43, "input", 65);
|
|
544
|
+
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_input_ngModelChange_43_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.StartDate, $event) || (ctx_r1.EditForm.StartDate = $event); return i0.ɵɵresetView($event); });
|
|
402
545
|
i0.ɵɵelementEnd()();
|
|
403
|
-
i0.ɵɵelementStart(44, "div",
|
|
546
|
+
i0.ɵɵelementStart(44, "div", 64)(45, "label");
|
|
404
547
|
i0.ɵɵtext(46, "End Date");
|
|
405
548
|
i0.ɵɵelementEnd();
|
|
406
|
-
i0.ɵɵelementStart(47, "input",
|
|
407
|
-
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_input_ngModelChange_47_listener($event) { i0.ɵɵrestoreView(
|
|
408
|
-
i0.ɵɵelementEnd()()()
|
|
409
|
-
i0.ɵɵelementStart(48, "div",
|
|
410
|
-
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_8_Template_button_click_49_listener() { i0.ɵɵrestoreView(
|
|
411
|
-
i0.ɵɵ
|
|
412
|
-
i0.ɵɵtext(51, "
|
|
549
|
+
i0.ɵɵelementStart(47, "input", 65);
|
|
550
|
+
i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_input_ngModelChange_47_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.EndDate, $event) || (ctx_r1.EditForm.EndDate = $event); return i0.ɵɵresetView($event); });
|
|
551
|
+
i0.ɵɵelementEnd()()();
|
|
552
|
+
i0.ɵɵelementStart(48, "div", 66)(49, "button", 67);
|
|
553
|
+
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_8_Template_button_click_49_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ShowEditAdvanced = !ctx_r1.ShowEditAdvanced); });
|
|
554
|
+
i0.ɵɵelement(50, "i");
|
|
555
|
+
i0.ɵɵtext(51, " Role Classification (Function & Seniority) ");
|
|
556
|
+
i0.ɵɵelementEnd();
|
|
557
|
+
i0.ɵɵconditionalCreate(52, RelationshipListComponent_Conditional_8_Conditional_52_Template, 17, 2, "div", 68);
|
|
558
|
+
i0.ɵɵelementEnd()();
|
|
559
|
+
i0.ɵɵelementStart(53, "div", 69)(54, "button", 70);
|
|
560
|
+
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_8_Template_button_click_54_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSaveEdit()); });
|
|
561
|
+
i0.ɵɵconditionalCreate(55, RelationshipListComponent_Conditional_8_Conditional_55_Template, 1, 0, "i", 71);
|
|
562
|
+
i0.ɵɵtext(56, " Save Changes ");
|
|
413
563
|
i0.ɵɵelementEnd();
|
|
414
|
-
i0.ɵɵelementStart(
|
|
415
|
-
i0.ɵɵlistener("click", function
|
|
416
|
-
i0.ɵɵtext(
|
|
564
|
+
i0.ɵɵelementStart(57, "button", 72);
|
|
565
|
+
i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_8_Template_button_click_57_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancelEdit()); });
|
|
566
|
+
i0.ɵɵtext(58, "Cancel");
|
|
417
567
|
i0.ɵɵelementEnd()()();
|
|
418
568
|
} if (rf & 2) {
|
|
419
569
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -431,10 +581,14 @@ function RelationshipListComponent_Conditional_8_Template(rf, ctx) { if (rf & 1)
|
|
|
431
581
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditForm.StartDate);
|
|
432
582
|
i0.ɵɵadvance(4);
|
|
433
583
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditForm.EndDate);
|
|
584
|
+
i0.ɵɵadvance(3);
|
|
585
|
+
i0.ɵɵclassMap(ctx_r1.ShowEditAdvanced ? "fa-solid fa-chevron-down" : "fa-solid fa-chevron-right");
|
|
586
|
+
i0.ɵɵadvance(2);
|
|
587
|
+
i0.ɵɵconditional(ctx_r1.ShowEditAdvanced ? 52 : -1);
|
|
434
588
|
i0.ɵɵadvance(2);
|
|
435
589
|
i0.ɵɵproperty("disabled", ctx_r1.Saving);
|
|
436
590
|
i0.ɵɵadvance();
|
|
437
|
-
i0.ɵɵconditional(ctx_r1.Saving ?
|
|
591
|
+
i0.ɵɵconditional(ctx_r1.Saving ? 55 : -1);
|
|
438
592
|
} }
|
|
439
593
|
/**
|
|
440
594
|
* Display configuration for each relationship category, mapping category
|
|
@@ -568,6 +722,22 @@ export class RelationshipListComponent {
|
|
|
568
722
|
* Loaded from `MJ_BizApps_Common: Relationship Types`, filtered to `IsActive=1`.
|
|
569
723
|
*/
|
|
570
724
|
RelationshipTypes = [];
|
|
725
|
+
/**
|
|
726
|
+
* All active job functions available for selection.
|
|
727
|
+
*/
|
|
728
|
+
JobFunctions = [];
|
|
729
|
+
/**
|
|
730
|
+
* All active seniority levels available for selection.
|
|
731
|
+
*/
|
|
732
|
+
SeniorityLevels = [];
|
|
733
|
+
/**
|
|
734
|
+
* Progressive disclosure toggle for advanced role fields in Add Form.
|
|
735
|
+
*/
|
|
736
|
+
ShowAddAdvanced = false;
|
|
737
|
+
/**
|
|
738
|
+
* Progressive disclosure toggle for advanced role fields in Edit Form.
|
|
739
|
+
*/
|
|
740
|
+
ShowEditAdvanced = false;
|
|
571
741
|
/**
|
|
572
742
|
* Indicates whether the component is performing the initial data load.
|
|
573
743
|
* The template shows a loading spinner while this is `true`.
|
|
@@ -602,11 +772,11 @@ export class RelationshipListComponent {
|
|
|
602
772
|
relationshipTypeMap = new Map();
|
|
603
773
|
/** Creates a blank {@link AddFormData} with empty defaults. */
|
|
604
774
|
createEmptyAddForm() {
|
|
605
|
-
return { TypeID: '', TargetSearch: '', TargetID: '', TargetName: '', Title: '', StartDate: '', EndDate: '' };
|
|
775
|
+
return { TypeID: '', TargetSearch: '', TargetID: '', TargetName: '', Title: '', StartDate: '', EndDate: '', JobFunctionID: '', SeniorityLevelID: '' };
|
|
606
776
|
}
|
|
607
777
|
/** Creates a blank {@link EditFormData} with default status of Active. */
|
|
608
778
|
createEmptyEditForm() {
|
|
609
|
-
return { TypeID: '', Title: '', StartDate: '', EndDate: '', Status: 'Active' };
|
|
779
|
+
return { TypeID: '', Title: '', StartDate: '', EndDate: '', Status: 'Active', JobFunctionID: '', SeniorityLevelID: '' };
|
|
610
780
|
}
|
|
611
781
|
/**
|
|
612
782
|
* Loads relationships and relationship types from the server,
|
|
@@ -634,6 +804,28 @@ export class RelationshipListComponent {
|
|
|
634
804
|
}
|
|
635
805
|
}
|
|
636
806
|
}
|
|
807
|
+
if (this.JobFunctions.length === 0) {
|
|
808
|
+
const jfResult = await rv.RunView({
|
|
809
|
+
EntityName: 'MJ_BizApps_Common: Job Functions',
|
|
810
|
+
ExtraFilter: "Status='Active'",
|
|
811
|
+
OrderBy: 'Sequence ASC, Name ASC',
|
|
812
|
+
ResultType: 'entity_object'
|
|
813
|
+
});
|
|
814
|
+
if (jfResult.Success && jfResult.Results) {
|
|
815
|
+
this.JobFunctions = jfResult.Results;
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
if (this.SeniorityLevels.length === 0) {
|
|
819
|
+
const slResult = await rv.RunView({
|
|
820
|
+
EntityName: 'MJ_BizApps_Common: Seniority Levels',
|
|
821
|
+
ExtraFilter: "Status='Active'",
|
|
822
|
+
OrderBy: 'Sequence ASC, Name ASC',
|
|
823
|
+
ResultType: 'entity_object'
|
|
824
|
+
});
|
|
825
|
+
if (slResult.Success && slResult.Results) {
|
|
826
|
+
this.SeniorityLevels = slResult.Results;
|
|
827
|
+
}
|
|
828
|
+
}
|
|
637
829
|
let relationships = [];
|
|
638
830
|
if (this._collection) {
|
|
639
831
|
if (!this._collection.IsLoaded) {
|
|
@@ -965,6 +1157,8 @@ export class RelationshipListComponent {
|
|
|
965
1157
|
this.DraftRelationship.RelationshipTypeID = this.AddForm.TypeID;
|
|
966
1158
|
this.DraftRelationship.Title = this.AddForm.Title || null;
|
|
967
1159
|
this.DraftRelationship.Status = 'Active';
|
|
1160
|
+
this.DraftRelationship.JobFunctionID = this.AddForm.JobFunctionID || null;
|
|
1161
|
+
this.DraftRelationship.SeniorityLevelID = this.AddForm.SeniorityLevelID || null;
|
|
968
1162
|
if (this.AddForm.StartDate) {
|
|
969
1163
|
this.DraftRelationship.StartDate = new Date(this.AddForm.StartDate);
|
|
970
1164
|
}
|
|
@@ -1009,8 +1203,11 @@ export class RelationshipListComponent {
|
|
|
1009
1203
|
Title: rel.Title || '',
|
|
1010
1204
|
StartDate: rel.StartDate ? this.formatDateForInput(rel.StartDate) : '',
|
|
1011
1205
|
EndDate: rel.EndDate ? this.formatDateForInput(rel.EndDate) : '',
|
|
1012
|
-
Status: rel.Status
|
|
1206
|
+
Status: rel.Status,
|
|
1207
|
+
JobFunctionID: rel.JobFunctionID || '',
|
|
1208
|
+
SeniorityLevelID: rel.SeniorityLevelID || '',
|
|
1013
1209
|
};
|
|
1210
|
+
this.ShowEditAdvanced = !!(rel.JobFunctionID || rel.SeniorityLevelID);
|
|
1014
1211
|
this.EditingId = rel.ID;
|
|
1015
1212
|
this.ShowAddForm = false;
|
|
1016
1213
|
this.cdr.detectChanges();
|
|
@@ -1070,6 +1267,8 @@ export class RelationshipListComponent {
|
|
|
1070
1267
|
rel.Status = this.EditForm.Status;
|
|
1071
1268
|
rel.StartDate = this.EditForm.StartDate ? new Date(this.EditForm.StartDate) : null;
|
|
1072
1269
|
rel.EndDate = this.EditForm.EndDate ? new Date(this.EditForm.EndDate) : null;
|
|
1270
|
+
rel.JobFunctionID = this.EditForm.JobFunctionID || null;
|
|
1271
|
+
rel.SeniorityLevelID = this.EditForm.SeniorityLevelID || null;
|
|
1073
1272
|
if (this._collection && this._collection.Items.some(i => i.ID === rel.ID)) {
|
|
1074
1273
|
this.EditingId = null;
|
|
1075
1274
|
this.GroupedRelationships = this.buildGroups([...this._collection.Items, ...this._incomingRelationships]);
|
|
@@ -1155,7 +1354,7 @@ export class RelationshipListComponent {
|
|
|
1155
1354
|
return `${year}-${month}-${day}`;
|
|
1156
1355
|
}
|
|
1157
1356
|
static ɵfac = function RelationshipListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RelationshipListComponent)(); };
|
|
1158
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RelationshipListComponent, selectors: [["bizapps-relationship-list"]], inputs: { EditMode: "EditMode", Collection: "Collection", PersonID: "PersonID", OrganizationID: "OrganizationID" }, outputs: { Navigate: "Navigate", DataChanged: "DataChanged" }, decls: 9, vars: 4, consts: [[1, "rel-widget-root"], [1, "section-header"], [1, "section-label"], [1, "fa-solid", "fa-diagram-project"], [1, "btn", "btn-outline"], [1, "rel-form-card"], [1, "btn", "btn-outline", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "loading-state"], [1, "fa-solid", "fa-spinner"], [1, "empty-state"], [1, "rel-timeline-container"], [1, "rel-category"], [1, "empty-state__title"], [1, "empty-state__hint"], [1, "rel-category-header"], [1, "rel-category-icon", 3, "ngClass"], [1, "rel-category-title"], [1, "rel-category-count"], [1, "rel-timeline-item", 3, "ngClass"], [1, "rel-timeline-icon"], [1, "rel-timeline-content"], [1, "rel-timeline-sentence"], [1, "rel-timeline-label"], ["href", "javascript:void(0)", 1, "rel-timeline-target"], [1, "rel-timeline-target"], [1, "rel-timeline-meta"], [1, "rel-timeline-title"], [1, "rel-timeline-dates"], [1, "badge", 3, "ngClass"], [1, "rel-timeline-actions"], ["href", "javascript:void(0)", 1, "rel-timeline-target", 3, "click"], [1, "fa-regular", "fa-calendar"], ["title", "Edit", 1, "btn-ghost", 3, "click"], [1, "fa-solid", "fa-pen"], ["title", "End Relationship", 1, "btn-ghost", "danger"], ["title", "Delete", 1, "btn-ghost", "danger"], ["title", "End Relationship", 1, "btn-ghost", "danger", 3, "click"], [1, "fa-solid", "fa-circle-xmark"], ["title", "Delete", 1, "btn-ghost", "danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "rel-form-header"], [1, "rel-form-header-title"], [1, "fa-solid", "fa-circle-plus"], [1, "rel-form-header-subtitle"], ["type", "button", "title", "Cancel", 1, "rel-form-close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "rel-form-body"], [1, "form-row"], [1, "form-field", "type-field"], [3, "ngModelChange", "ngModel"], ["value", ""], [3, "value"], [1, "form-field", "category-field"], [1, "category-display"], [1, "fa-solid", "fa-link"], [1, "form-row", "form-row--target"], [1, "form-row", "form-row--meta"], [1, "form-field", "title-field"], ["type", "text", "placeholder", "e.g., Board Director, Spouse, Manager", 3, "ngModelChange", "ngModel"], [1, "form-field", "date-field"], ["type", "date", 3, "ngModelChange", "ngModel"], [1, "rel-form-footer"], ["type", "button", 1, "btn", "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["type", "button", 1, "btn", "btn-cancel", 3, "click"], [1, "form-field", "form-field--target"], [1, "required-star"], [1, "target-field-wrapper"], ["FieldName", "ToPersonID", "Type", "textbox", "LinkType", "Record", 3, "Record", "EditMode", "ShowLabel"], [1, "field-hint"], ["FieldName", "ToOrganizationID", "Type", "textbox", "LinkType", "Record", 3, "Record", "EditMode", "ShowLabel"], [1, "fa-solid", "fa-pen-to-square"], [1, "form-field", "status-field"], ["value", "Active"], ["value", "Inactive"], ["value", "Ended"], ["type", "text", "placeholder", "e.g., Board Director, Spouse", 3, "ngModelChange", "ngModel"]], template: function RelationshipListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1357
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RelationshipListComponent, selectors: [["bizapps-relationship-list"]], inputs: { EditMode: "EditMode", Collection: "Collection", PersonID: "PersonID", OrganizationID: "OrganizationID" }, outputs: { Navigate: "Navigate", DataChanged: "DataChanged" }, decls: 9, vars: 4, consts: [[1, "rel-widget-root"], [1, "section-header"], [1, "section-label"], [1, "fa-solid", "fa-diagram-project"], [1, "btn", "btn-outline"], [1, "rel-form-card"], [1, "btn", "btn-outline", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "loading-state"], [1, "fa-solid", "fa-spinner"], [1, "empty-state"], [1, "rel-timeline-container"], [1, "rel-category"], [1, "empty-state__title"], [1, "empty-state__hint"], [1, "rel-category-header"], [1, "rel-category-icon", 3, "ngClass"], [1, "rel-category-title"], [1, "rel-category-count"], [1, "rel-timeline-item", 3, "ngClass"], [1, "rel-timeline-icon"], [1, "rel-timeline-content"], [1, "rel-timeline-sentence"], [1, "rel-timeline-label"], ["href", "javascript:void(0)", 1, "rel-timeline-target"], [1, "rel-timeline-target"], [1, "rel-timeline-meta"], [1, "rel-timeline-title"], ["title", "Job Function", 1, "badge", "badge-subtle"], ["title", "Seniority Level", 1, "badge", "badge-subtle"], [1, "rel-timeline-dates"], [1, "badge", 3, "ngClass"], [1, "rel-timeline-actions"], ["href", "javascript:void(0)", 1, "rel-timeline-target", 3, "click"], [1, "fa-solid", "fa-briefcase"], [1, "fa-solid", "fa-layer-group"], [1, "fa-regular", "fa-calendar"], ["title", "Edit", 1, "btn-ghost", 3, "click"], [1, "fa-solid", "fa-pen"], ["title", "End Relationship", 1, "btn-ghost", "danger"], ["title", "Delete", 1, "btn-ghost", "danger"], ["title", "End Relationship", 1, "btn-ghost", "danger", 3, "click"], [1, "fa-solid", "fa-circle-xmark"], ["title", "Delete", 1, "btn-ghost", "danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "rel-form-header"], [1, "rel-form-header-title"], [1, "fa-solid", "fa-circle-plus"], [1, "rel-form-header-subtitle"], ["type", "button", "title", "Cancel", 1, "rel-form-close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "rel-form-body"], [1, "form-row"], [1, "form-field", "type-field"], [3, "ngModelChange", "ngModel"], ["value", ""], [3, "value"], [1, "form-field", "category-field"], [1, "category-display"], [1, "fa-solid", "fa-link"], [1, "form-row", "form-row--target"], [1, "form-row", "form-row--meta"], [1, "form-field", "title-field"], ["type", "text", "placeholder", "e.g., Board Director, Spouse, Manager", 3, "ngModelChange", "ngModel"], [1, "form-field", "date-field"], ["type", "date", 3, "ngModelChange", "ngModel"], [1, "rel-form-progressive"], ["type", "button", 1, "rel-form-progressive-toggle", 3, "click"], [1, "form-row", "form-row--classification"], [1, "rel-form-footer"], ["type", "button", 1, "btn", "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["type", "button", 1, "btn", "btn-cancel", 3, "click"], [1, "form-field", "form-field--target"], [1, "required-star"], [1, "target-field-wrapper"], ["FieldName", "ToPersonID", "Type", "textbox", "LinkType", "Record", 3, "Record", "EditMode", "ShowLabel"], [1, "field-hint"], ["FieldName", "ToOrganizationID", "Type", "textbox", "LinkType", "Record", 3, "Record", "EditMode", "ShowLabel"], [1, "form-field"], [1, "fa-solid", "fa-pen-to-square"], [1, "form-field", "status-field"], ["value", "Active"], ["value", "Inactive"], ["value", "Ended"], ["type", "text", "placeholder", "e.g., Board Director, Spouse", 3, "ngModelChange", "ngModel"]], template: function RelationshipListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1159
1358
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "span", 2);
|
|
1160
1359
|
i0.ɵɵelement(3, "i", 3);
|
|
1161
1360
|
i0.ɵɵtext(4, " Relationships ");
|
|
@@ -1163,8 +1362,8 @@ export class RelationshipListComponent {
|
|
|
1163
1362
|
i0.ɵɵconditionalCreate(5, RelationshipListComponent_Conditional_5_Template, 3, 0, "button", 4);
|
|
1164
1363
|
i0.ɵɵelementEnd();
|
|
1165
1364
|
i0.ɵɵconditionalCreate(6, RelationshipListComponent_Conditional_6_Template, 2, 1);
|
|
1166
|
-
i0.ɵɵconditionalCreate(7, RelationshipListComponent_Conditional_7_Template,
|
|
1167
|
-
i0.ɵɵconditionalCreate(8, RelationshipListComponent_Conditional_8_Template,
|
|
1365
|
+
i0.ɵɵconditionalCreate(7, RelationshipListComponent_Conditional_7_Template, 52, 11, "div", 5);
|
|
1366
|
+
i0.ɵɵconditionalCreate(8, RelationshipListComponent_Conditional_8_Template, 59, 11, "div", 5);
|
|
1168
1367
|
i0.ɵɵelementEnd();
|
|
1169
1368
|
} if (rf & 2) {
|
|
1170
1369
|
i0.ɵɵadvance(5);
|
|
@@ -1175,11 +1374,11 @@ export class RelationshipListComponent {
|
|
|
1175
1374
|
i0.ɵɵconditional(ctx.ShowAddForm ? 7 : -1);
|
|
1176
1375
|
i0.ɵɵadvance();
|
|
1177
1376
|
i0.ɵɵconditional(ctx.EditingId ? 8 : -1);
|
|
1178
|
-
} }, dependencies: [CommonModule, i1.NgClass, FormsModule, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, BaseFormsModule, i3.MjFormFieldComponent], styles: ["\n\n\n\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n min-height: 0;\n height: 100%;\n font-family: var(--mj-font-family);\n color: var(--mj-text-primary);\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n flex-shrink: 0;\n}\n\n.section-label[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.rel-category[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.rel-category[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.rel-category-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 0;\n margin-bottom: 12px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.rel-category-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.rel-category-icon.cat-employment[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.rel-category-icon.cat-board[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n}\n\n.rel-category-icon.cat-personal[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-error-text);\n}\n\n.rel-category-icon.cat-business[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n\n.rel-category-icon.cat-default[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n.rel-category-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n flex: 1;\n}\n\n.rel-category-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n\n\n.rel-timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 12px 16px;\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.15s;\n position: relative;\n}\n\n.rel-timeline-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n}\n\n.rel-timeline-item.status-active[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-success);\n}\n\n.rel-timeline-item.status-inactive[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-warning);\n opacity: 0.7;\n}\n\n.rel-timeline-item.status-ended[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-text-disabled);\n opacity: 0.5;\n}\n\n\n\n.rel-timeline-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-size: 16px;\n flex-shrink: 0;\n}\n\n\n\n.rel-timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.rel-timeline-sentence[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.rel-timeline-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\na.rel-timeline-target[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n cursor: pointer;\n text-decoration: none;\n}\n\na.rel-timeline-target[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\nspan.rel-timeline-target[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.rel-timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n\n.rel-timeline-title[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-secondary);\n}\n\n.rel-timeline-dates[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n.rel-timeline-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n\n.rel-timeline-item[_ngcontent-%COMP%]:hover .rel-timeline-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.badge-active[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n\n.badge-inactive[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n\n.badge-ended[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n}\n\n\n\n.btn-ghost[_ngcontent-%COMP%] {\n background: transparent;\n color: var(--mj-text-disabled);\n padding: 6px 8px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 13px;\n transition: all 0.15s ease;\n}\n\n.btn-ghost[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n}\n\n.btn-ghost.danger[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error-text);\n background: var(--mj-status-error-bg);\n}\n\n\n\n.btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: none;\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary, #0284c7);\n color: #fff;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, #0369a1);\n}\n\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-outline[_ngcontent-%COMP%] {\n background: transparent;\n border: 1px dashed var(--mj-border-strong, #334155);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.btn-outline[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary, #0284c7);\n color: var(--mj-brand-primary, #38bdf8);\n background: color-mix(in srgb, var(--mj-brand-primary, #0284c7) 8%, transparent);\n}\n\n.btn-cancel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #141f36);\n color: var(--mj-text-secondary, #94a3b8);\n border: 1px solid var(--mj-border-default, #223254);\n}\n\n.btn-cancel[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-subtle, #1e293b);\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n\n\n\n\n\n\n.rel-widget-root[_ngcontent-%COMP%] {\n position: relative;\n width: 100%;\n}\n\n.rel-timeline-container[_ngcontent-%COMP%] {\n transition: opacity 0.2s ease;\n}\n\n.rel-form-card[_ngcontent-%COMP%] {\n width: 100%;\n background: var(--mj-bg-surface-card, #141f36);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-lg, 10px);\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: _ngcontent-%COMP%_relFadeIn 0.18s ease-out;\n margin-bottom: 12px;\n}\n\n@keyframes _ngcontent-%COMP%_relFadeIn {\n from { opacity: 0; transform: translateY(-4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.rel-form-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default, #223254);\n background: color-mix(in srgb, var(--mj-brand-primary, #0284c7) 8%, var(--mj-bg-surface-card, #141f36));\n}\n\n.rel-form-header-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.rel-form-header-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary, #38bdf8);\n}\n\n.rel-form-header-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n.rel-form-header-subtitle[_ngcontent-%COMP%] {\n margin: 2px 0 0;\n font-size: 12px;\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.rel-form-close-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n font-size: 16px;\n color: var(--mj-text-muted, #64748b);\n cursor: pointer;\n border-radius: var(--mj-radius-sm, 6px);\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s ease;\n}\n\n.rel-form-close-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary, #f1f5f9);\n background: var(--mj-bg-surface-sunken, #0b1220);\n}\n\n.rel-form-body[_ngcontent-%COMP%] {\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n}\n\n.form-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n align-items: flex-start;\n}\n\n.form-row--target[_ngcontent-%COMP%] {\n display: block;\n width: 100%;\n}\n\n.form-field[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.form-field--target[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.form-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary, #94a3b8);\n margin-bottom: 6px;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n}\n\n.form-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%], \n.form-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%] {\n width: 100%;\n padding: 9px 12px;\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-family: inherit;\n background: var(--mj-bg-surface-sunken, #0b1220);\n color: var(--mj-text-primary, #f1f5f9);\n box-sizing: border-box;\n}\n\n.form-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%] option[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #141f36);\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n.form-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, \n.form-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary, #0284c7);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary, #0284c7) 15%, transparent);\n}\n\n.form-field.type-field[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 200px;\n}\n\n.form-field.category-field[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 200px;\n}\n\n.form-field.status-field[_ngcontent-%COMP%] {\n max-width: 160px;\n}\n\n.form-field.date-field[_ngcontent-%COMP%] {\n max-width: 180px;\n}\n\n.form-field.title-field[_ngcontent-%COMP%] {\n flex: 2;\n}\n\n\n\n.category-display[_ngcontent-%COMP%] {\n padding: 9px 12px;\n background: var(--mj-bg-surface-sunken, #0b1220);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-secondary, #94a3b8);\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 38px;\n box-sizing: border-box;\n}\n\n.category-display[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-brand-primary, #38bdf8);\n}\n\n\n\n.target-field-wrapper[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 0;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] mj-form-field {\n width: 100%;\n display: block;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] .mj-forms-field {\n display: block !important;\n width: 100% !important;\n padding: 0 !important;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] .mj-forms-field-control {\n width: 100% !important;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] .mj-fk-search {\n width: 100% !important;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] .mj-forms-input-wrapper {\n width: 100% !important;\n min-height: 40px !important;\n border-radius: var(--mj-radius-sm, 6px) !important;\n background: var(--mj-bg-surface-sunken, #0b1220) !important;\n border: 1px solid var(--mj-border-default, #223254) !important;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] input.mj-forms-field-input {\n font-size: 13px !important;\n padding: 9px 12px !important;\n color: var(--mj-text-primary, #f1f5f9) !important;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] .mj-fk-dropdown {\n width: 100% !important;\n max-width: none !important;\n}\n\n.field-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n color: var(--mj-text-muted, #64748b);\n margin-top: 4px;\n}\n\n.required-star[_ngcontent-%COMP%] {\n color: var(--mj-status-error, #ef4444);\n font-weight: 700;\n}\n\n.rel-form-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 14px 20px;\n border-top: 1px solid var(--mj-border-default, #223254);\n background: var(--mj-bg-surface-sunken, #0b1220);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 40px 20px;\n color: var(--mj-text-muted);\n font-size: 14px;\n border: 1px dashed var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface);\n}\n\n.empty-state__title[_ngcontent-%COMP%] {\n margin: 8px 0 4px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.empty-state__hint[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 13px;\n max-width: 28rem;\n margin-inline: auto;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-border-strong);\n margin-bottom: 8px;\n display: block;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px;\n color: var(--mj-text-muted);\n font-size: 13px;\n gap: 8px;\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}"] });
|
|
1377
|
+
} }, dependencies: [CommonModule, i1.NgClass, FormsModule, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, BaseFormsModule, i3.MjFormFieldComponent], styles: ["\n\n\n\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n min-height: 0;\n height: 100%;\n font-family: var(--mj-font-family);\n color: var(--mj-text-primary);\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n flex-shrink: 0;\n}\n\n.section-label[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.rel-category[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.rel-category[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.rel-category-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 0;\n margin-bottom: 12px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.rel-category-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.rel-category-icon.cat-employment[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.rel-category-icon.cat-board[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n}\n\n.rel-category-icon.cat-personal[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-error-text);\n}\n\n.rel-category-icon.cat-business[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n\n.rel-category-icon.cat-default[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n.rel-category-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n flex: 1;\n}\n\n.rel-category-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n\n\n.rel-timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 12px 16px;\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.15s;\n position: relative;\n}\n\n.rel-timeline-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n}\n\n.rel-timeline-item.status-active[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-success);\n}\n\n.rel-timeline-item.status-inactive[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-warning);\n opacity: 0.7;\n}\n\n.rel-timeline-item.status-ended[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-text-disabled);\n opacity: 0.5;\n}\n\n\n\n.rel-timeline-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-size: 16px;\n flex-shrink: 0;\n}\n\n\n\n.rel-timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.rel-timeline-sentence[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.rel-timeline-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\na.rel-timeline-target[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n cursor: pointer;\n text-decoration: none;\n}\n\na.rel-timeline-target[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\nspan.rel-timeline-target[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.rel-timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n\n.rel-timeline-title[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-secondary);\n}\n\n.rel-timeline-dates[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n.rel-timeline-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n\n.rel-timeline-item[_ngcontent-%COMP%]:hover .rel-timeline-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.badge-active[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n\n.badge-inactive[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n\n.badge-ended[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n}\n\n\n\n.btn-ghost[_ngcontent-%COMP%] {\n background: transparent;\n color: var(--mj-text-disabled);\n padding: 6px 8px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 13px;\n transition: all 0.15s ease;\n}\n\n.btn-ghost[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n}\n\n.btn-ghost.danger[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error-text);\n background: var(--mj-status-error-bg);\n}\n\n\n\n.btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: none;\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary, #0284c7);\n color: #fff;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, #0369a1);\n}\n\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-outline[_ngcontent-%COMP%] {\n background: transparent;\n border: 1px dashed var(--mj-border-strong, #334155);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.btn-outline[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary, #0284c7);\n color: var(--mj-brand-primary, #38bdf8);\n background: color-mix(in srgb, var(--mj-brand-primary, #0284c7) 8%, transparent);\n}\n\n.btn-cancel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #141f36);\n color: var(--mj-text-secondary, #94a3b8);\n border: 1px solid var(--mj-border-default, #223254);\n}\n\n.btn-cancel[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-subtle, #1e293b);\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n\n\n\n\n\n\n.rel-widget-root[_ngcontent-%COMP%] {\n position: relative;\n width: 100%;\n}\n\n.rel-timeline-container[_ngcontent-%COMP%] {\n transition: opacity 0.2s ease;\n}\n\n.rel-form-card[_ngcontent-%COMP%] {\n width: 100%;\n background: var(--mj-bg-surface-card, #141f36);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-lg, 10px);\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: _ngcontent-%COMP%_relFadeIn 0.18s ease-out;\n margin-bottom: 12px;\n}\n\n@keyframes _ngcontent-%COMP%_relFadeIn {\n from { opacity: 0; transform: translateY(-4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.rel-form-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default, #223254);\n background: color-mix(in srgb, var(--mj-brand-primary, #0284c7) 8%, var(--mj-bg-surface-card, #141f36));\n}\n\n.rel-form-header-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.rel-form-header-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary, #38bdf8);\n}\n\n.rel-form-header-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n.rel-form-header-subtitle[_ngcontent-%COMP%] {\n margin: 2px 0 0;\n font-size: 12px;\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.rel-form-close-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n font-size: 16px;\n color: var(--mj-text-muted, #64748b);\n cursor: pointer;\n border-radius: var(--mj-radius-sm, 6px);\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s ease;\n}\n\n.rel-form-close-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary, #f1f5f9);\n background: var(--mj-bg-surface-sunken, #0b1220);\n}\n\n.rel-form-body[_ngcontent-%COMP%] {\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n}\n\n.form-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n align-items: flex-start;\n}\n\n.form-row--target[_ngcontent-%COMP%] {\n display: block;\n width: 100%;\n}\n\n.form-field[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.form-field--target[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.form-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary, #94a3b8);\n margin-bottom: 6px;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n}\n\n.form-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%], \n.form-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%] {\n width: 100%;\n padding: 9px 12px;\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-family: inherit;\n background: var(--mj-bg-surface-sunken, #0b1220);\n color: var(--mj-text-primary, #f1f5f9);\n box-sizing: border-box;\n}\n\n.form-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%] option[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #141f36);\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n.form-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, \n.form-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary, #0284c7);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary, #0284c7) 15%, transparent);\n}\n\n.form-field.type-field[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 200px;\n}\n\n.form-field.category-field[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 200px;\n}\n\n.form-field.status-field[_ngcontent-%COMP%] {\n max-width: 160px;\n}\n\n.form-field.date-field[_ngcontent-%COMP%] {\n max-width: 180px;\n}\n\n.form-field.title-field[_ngcontent-%COMP%] {\n flex: 2;\n}\n\n\n\n.category-display[_ngcontent-%COMP%] {\n padding: 9px 12px;\n background: var(--mj-bg-surface-sunken, #0b1220);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-secondary, #94a3b8);\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 38px;\n box-sizing: border-box;\n}\n\n.category-display[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-brand-primary, #38bdf8);\n}\n\n\n\n.target-field-wrapper[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 0;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] mj-form-field {\n width: 100%;\n display: block;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] .mj-forms-field {\n display: block !important;\n width: 100% !important;\n padding: 0 !important;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] .mj-forms-field-control {\n width: 100% !important;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] .mj-fk-search {\n width: 100% !important;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] .mj-forms-input-wrapper {\n width: 100% !important;\n min-height: 40px !important;\n border-radius: var(--mj-radius-sm, 6px) !important;\n background: var(--mj-bg-surface-sunken, #0b1220) !important;\n border: 1px solid var(--mj-border-default, #223254) !important;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] input.mj-forms-field-input {\n font-size: 13px !important;\n padding: 9px 12px !important;\n color: var(--mj-text-primary, #f1f5f9) !important;\n}\n\n.target-field-wrapper[_ngcontent-%COMP%] .mj-fk-dropdown {\n width: 100% !important;\n max-width: none !important;\n}\n\n.field-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n color: var(--mj-text-muted, #64748b);\n margin-top: 4px;\n}\n\n.required-star[_ngcontent-%COMP%] {\n color: var(--mj-status-error, #ef4444);\n font-weight: 700;\n}\n\n.rel-form-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 14px 20px;\n border-top: 1px solid var(--mj-border-default, #223254);\n background: var(--mj-bg-surface-sunken, #0b1220);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 40px 20px;\n color: var(--mj-text-muted);\n font-size: 14px;\n border: 1px dashed var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface);\n}\n\n.empty-state__title[_ngcontent-%COMP%] {\n margin: 8px 0 4px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.empty-state__hint[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 13px;\n max-width: 28rem;\n margin-inline: auto;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-border-strong);\n margin-bottom: 8px;\n display: block;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px;\n color: var(--mj-text-muted);\n font-size: 13px;\n gap: 8px;\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n.badge-subtle[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n text-transform: none;\n font-weight: 500;\n}\n\n.rel-form-progressive[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding-top: 10px;\n border-top: 1px dashed var(--mj-border-default);\n}\n\n.rel-form-progressive-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n background: none;\n border: none;\n padding: 4px 0;\n}\n\n.rel-form-progressive-toggle[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.form-row--classification[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-top: 8px;\n}"] });
|
|
1179
1378
|
}
|
|
1180
1379
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RelationshipListComponent, [{
|
|
1181
1380
|
type: Component,
|
|
1182
|
-
args: [{ standalone: true, imports: [CommonModule, FormsModule, BaseFormsModule], selector: 'bizapps-relationship-list', template: "<!-- RelationshipList - Grouped Timeline Design with Slide-In Overlay -->\n\n<div class=\"rel-widget-root\">\n <!-- Header -->\n <div class=\"section-header\">\n <span class=\"section-label\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n Relationships\n </span>\n @if (!Loading && EditMode && !ShowAddForm && !EditingId) {\n <button class=\"btn btn-outline\" (click)=\"onShowAdd()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Relationship\n </button>\n }\n </div>\n\n <!-- Timeline List Content (when not adding or editing) -->\n @if (!ShowAddForm && !EditingId) {\n @if (Loading) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner\"></i> Loading relationships...\n </div>\n } @else {\n @if (GroupedRelationships.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n <p class=\"empty-state__title\">No relationships</p>\n <p class=\"empty-state__hint\">\n @if (EditMode) {\n This record has no relationship links yet. Click \"Add Relationship\" above to connect it to a person or organization.\n } @else {\n This record has no relationship links yet.\n }\n </p>\n </div>\n }\n\n <div class=\"rel-timeline-container\">\n @for (group of GroupedRelationships; track group.Category) {\n <div class=\"rel-category\">\n <div class=\"rel-category-header\">\n <div class=\"rel-category-icon\" [ngClass]=\"group.IconClass\">\n <i [class]=\"group.Icon\"></i>\n </div>\n <span class=\"rel-category-title\">{{ group.Label }}</span>\n <span class=\"rel-category-count\">{{ group.Items.length }} {{ group.Items.length === 1 ? 'relationship' : 'relationships' }}</span>\n </div>\n\n @for (item of group.Items; track item.Relationship.ID) {\n <div class=\"rel-timeline-item\"\n [ngClass]=\"'status-' + item.Relationship.Status.toLowerCase()\">\n <div class=\"rel-timeline-icon\">\n <i [class]=\"group.Icon\"></i>\n </div>\n <div class=\"rel-timeline-content\">\n <div class=\"rel-timeline-sentence\">\n <span class=\"rel-timeline-label\">{{ item.DirectionLabel }}</span>\n @if (item.TargetEntityName && item.TargetID) {\n <a class=\"rel-timeline-target\" href=\"javascript:void(0)\"\n (click)=\"onNavigateToTarget(item, $event)\">{{ item.TargetName }}</a>\n } @else {\n <span class=\"rel-timeline-target\">{{ item.TargetName }}</span>\n }\n </div>\n <div class=\"rel-timeline-meta\">\n @if (item.Relationship.Title) {\n <span class=\"rel-timeline-title\">{{ item.Relationship.Title }}</span>\n }\n @if (item.DateDisplay) {\n <span class=\"rel-timeline-dates\">\n <i class=\"fa-regular fa-calendar\"></i> {{ item.DateDisplay }}\n </span>\n }\n <span class=\"badge\" [ngClass]=\"'badge-' + item.Relationship.Status.toLowerCase()\">\n {{ item.Relationship.Status }}\n </span>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"rel-timeline-actions\">\n <button class=\"btn-ghost\" title=\"Edit\" (click)=\"onEdit(item.Relationship)\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n @if (item.Relationship.Status === 'Active') {\n <button class=\"btn-ghost danger\" title=\"End Relationship\" (click)=\"onEndRelationship(item.Relationship)\">\n <i class=\"fa-solid fa-circle-xmark\"></i>\n </button>\n } @else {\n <button class=\"btn-ghost danger\" title=\"Delete\" (click)=\"onDelete(item.Relationship)\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n }\n\n <!-- ============================================\n ADD RELATIONSHIP FORM CARD\n ============================================ -->\n @if (ShowAddForm) {\n <div class=\"rel-form-card\">\n <div class=\"rel-form-header\">\n <div class=\"rel-form-header-title\">\n <i class=\"fa-solid fa-circle-plus\"></i>\n <div>\n <h3>Add Relationship</h3>\n <p class=\"rel-form-header-subtitle\">Create a connection to another person or organization</p>\n </div>\n </div>\n <button type=\"button\" class=\"rel-form-close-btn\" (click)=\"onCancelAdd()\" title=\"Cancel\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <div class=\"rel-form-body\">\n <!-- Type & Category Row -->\n <div class=\"form-row\">\n <div class=\"form-field type-field\">\n <label>Relationship Type</label>\n <select [(ngModel)]=\"AddForm.TypeID\" (ngModelChange)=\"onAddTypeChange()\">\n <option value=\"\">-- Select Type --</option>\n @for (t of RelationshipTypes; track t.ID) {\n <option [value]=\"t.ID\">{{ t.Name }}</option>\n }\n </select>\n </div>\n <div class=\"form-field category-field\">\n <label>Category</label>\n <div class=\"category-display\">\n <i class=\"fa-solid fa-link\"></i>\n {{ getCategoryFriendlyName(getAddCategory()) }}\n </div>\n </div>\n </div>\n\n <!-- Target Search (Prominent Full Width) -->\n @if (DraftRelationship && AddForm.TypeID) {\n <div class=\"form-row form-row--target\">\n @if (IsPersonTarget) {\n <div class=\"form-field form-field--target\">\n <label>Target Person <span class=\"required-star\">*</span></label>\n <div class=\"target-field-wrapper\">\n <mj-form-field\n [Record]=\"DraftRelationship\"\n FieldName=\"ToPersonID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"true\"\n [ShowLabel]=\"false\">\n </mj-form-field>\n </div>\n <span class=\"field-hint\">Search person by name, job title, or email</span>\n </div>\n }\n @if (IsOrgTarget) {\n <div class=\"form-field form-field--target\">\n <label>Target Organization <span class=\"required-star\">*</span></label>\n <div class=\"target-field-wrapper\">\n <mj-form-field\n [Record]=\"DraftRelationship\"\n FieldName=\"ToOrganizationID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"true\"\n [ShowLabel]=\"false\">\n </mj-form-field>\n </div>\n <span class=\"field-hint\">Search organization or company name</span>\n </div>\n }\n </div>\n }\n\n <!-- Details & Dates Row -->\n <div class=\"form-row form-row--meta\">\n <div class=\"form-field title-field\">\n <label>Title / Role (Optional)</label>\n <input type=\"text\" [(ngModel)]=\"AddForm.Title\" placeholder=\"e.g., Board Director, Spouse, Manager\">\n </div>\n <div class=\"form-field date-field\">\n <label>Start Date</label>\n <input type=\"date\" [(ngModel)]=\"AddForm.StartDate\">\n </div>\n <div class=\"form-field date-field\">\n <label>End Date</label>\n <input type=\"date\" [(ngModel)]=\"AddForm.EndDate\">\n </div>\n </div>\n </div>\n\n <div class=\"rel-form-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onSaveAdd()\" [disabled]=\"Saving || !AddForm.TypeID || !HasValidAddTarget\">\n @if (Saving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n Save Relationship\n </button>\n <button type=\"button\" class=\"btn btn-cancel\" (click)=\"onCancelAdd()\">Cancel</button>\n </div>\n </div>\n }\n\n <!-- ============================================\n EDIT RELATIONSHIP FORM CARD\n ============================================ -->\n @if (EditingId) {\n <div class=\"rel-form-card\">\n <div class=\"rel-form-header\">\n <div class=\"rel-form-header-title\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n <div>\n <h3>Edit Relationship</h3>\n <p class=\"rel-form-header-subtitle\">Update relationship details, dates, or status</p>\n </div>\n </div>\n <button type=\"button\" class=\"rel-form-close-btn\" (click)=\"onCancelEdit()\" title=\"Cancel\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <div class=\"rel-form-body\">\n <div class=\"form-row\">\n <div class=\"form-field type-field\">\n <label>Relationship Type</label>\n <select [(ngModel)]=\"EditForm.TypeID\" (ngModelChange)=\"onEditTypeChange()\">\n @for (t of RelationshipTypes; track t.ID) {\n <option [value]=\"t.ID\">{{ t.Name }}</option>\n }\n </select>\n </div>\n <div class=\"form-field category-field\">\n <label>Category</label>\n <div class=\"category-display\">\n <i class=\"fa-solid fa-link\"></i>\n {{ getCategoryFriendlyName(getEditCategory()) }}\n </div>\n </div>\n <div class=\"form-field status-field\">\n <label>Status</label>\n <select [(ngModel)]=\"EditForm.Status\">\n <option value=\"Active\">Active</option>\n <option value=\"Inactive\">Inactive</option>\n <option value=\"Ended\">Ended</option>\n </select>\n </div>\n </div>\n\n <div class=\"form-row form-row--meta\">\n <div class=\"form-field title-field\">\n <label>Title / Role</label>\n <input type=\"text\" [(ngModel)]=\"EditForm.Title\" placeholder=\"e.g., Board Director, Spouse\">\n </div>\n <div class=\"form-field date-field\">\n <label>Start Date</label>\n <input type=\"date\" [(ngModel)]=\"EditForm.StartDate\">\n </div>\n <div class=\"form-field date-field\">\n <label>End Date</label>\n <input type=\"date\" [(ngModel)]=\"EditForm.EndDate\">\n </div>\n </div>\n </div>\n\n <div class=\"rel-form-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onSaveEdit()\" [disabled]=\"Saving\">\n @if (Saving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n Save Changes\n </button>\n <button type=\"button\" class=\"btn btn-cancel\" (click)=\"onCancelEdit()\">Cancel</button>\n </div>\n </div>\n }\n</div>\n", styles: ["/* ============================================\n RelationshipList - Grouped Timeline Design\n Pixel-perfect match to Option A mockup\n ============================================ */\n\n:host {\n display: flex;\n flex-direction: column;\n min-height: 0;\n height: 100%;\n font-family: var(--mj-font-family);\n color: var(--mj-text-primary);\n}\n\n.section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n flex-shrink: 0;\n}\n\n.section-label {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-label i {\n color: var(--mj-brand-primary);\n}\n\n/* Category group */\n.rel-category {\n margin-bottom: 24px;\n}\n\n.rel-category:last-child {\n margin-bottom: 0;\n}\n\n.rel-category-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 0;\n margin-bottom: 12px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.rel-category-icon {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.rel-category-icon.cat-employment {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.rel-category-icon.cat-board {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n}\n\n.rel-category-icon.cat-personal {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-error-text);\n}\n\n.rel-category-icon.cat-business {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n\n.rel-category-icon.cat-default {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n.rel-category-title {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n flex: 1;\n}\n\n.rel-category-count {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n/* Timeline item */\n.rel-timeline-item {\n display: flex;\n gap: 12px;\n padding: 12px 16px;\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.15s;\n position: relative;\n}\n\n.rel-timeline-item:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n}\n\n.rel-timeline-item.status-active {\n border-left: 3px solid var(--mj-status-success);\n}\n\n.rel-timeline-item.status-inactive {\n border-left: 3px solid var(--mj-status-warning);\n opacity: 0.7;\n}\n\n.rel-timeline-item.status-ended {\n border-left: 3px solid var(--mj-text-disabled);\n opacity: 0.5;\n}\n\n/* Timeline icon */\n.rel-timeline-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-size: 16px;\n flex-shrink: 0;\n}\n\n/* Content */\n.rel-timeline-content {\n flex: 1;\n}\n\n.rel-timeline-sentence {\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.rel-timeline-label {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\na.rel-timeline-target {\n font-weight: 600;\n color: var(--mj-brand-primary);\n cursor: pointer;\n text-decoration: none;\n}\n\na.rel-timeline-target:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\nspan.rel-timeline-target {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.rel-timeline-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n\n.rel-timeline-title {\n font-style: italic;\n color: var(--mj-text-secondary);\n}\n\n.rel-timeline-dates {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n/* Actions */\n.rel-timeline-actions {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n\n.rel-timeline-item:hover .rel-timeline-actions {\n opacity: 1;\n}\n\n/* Badges */\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.badge-active {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n\n.badge-inactive {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n\n.badge-ended {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n}\n\n/* Ghost buttons */\n.btn-ghost {\n background: transparent;\n color: var(--mj-text-disabled);\n padding: 6px 8px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 13px;\n transition: all 0.15s ease;\n}\n\n.btn-ghost:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n}\n\n.btn-ghost.danger:hover {\n color: var(--mj-status-error-text);\n background: var(--mj-status-error-bg);\n}\n\n/* Buttons */\n.btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: none;\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.btn-primary {\n background: var(--mj-brand-primary, #0284c7);\n color: #fff;\n}\n\n.btn-primary:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, #0369a1);\n}\n\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-outline {\n background: transparent;\n border: 1px dashed var(--mj-border-strong, #334155);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.btn-outline:hover {\n border-color: var(--mj-brand-primary, #0284c7);\n color: var(--mj-brand-primary, #38bdf8);\n background: color-mix(in srgb, var(--mj-brand-primary, #0284c7) 8%, transparent);\n}\n\n.btn-cancel {\n background: var(--mj-bg-surface-card, #141f36);\n color: var(--mj-text-secondary, #94a3b8);\n border: 1px solid var(--mj-border-default, #223254);\n}\n\n.btn-cancel:hover {\n background: var(--mj-border-subtle, #1e293b);\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n/* ============================================\n OVERLAY SLIDE-IN PANEL\n/* ============================================\n RELATIONSHIP FORM CARD (ADD / EDIT)\n ============================================ */\n.rel-widget-root {\n position: relative;\n width: 100%;\n}\n\n.rel-timeline-container {\n transition: opacity 0.2s ease;\n}\n\n.rel-form-card {\n width: 100%;\n background: var(--mj-bg-surface-card, #141f36);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-lg, 10px);\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: relFadeIn 0.18s ease-out;\n margin-bottom: 12px;\n}\n\n@keyframes relFadeIn {\n from { opacity: 0; transform: translateY(-4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.rel-form-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default, #223254);\n background: color-mix(in srgb, var(--mj-brand-primary, #0284c7) 8%, var(--mj-bg-surface-card, #141f36));\n}\n\n.rel-form-header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.rel-form-header-title i {\n font-size: 20px;\n color: var(--mj-brand-primary, #38bdf8);\n}\n\n.rel-form-header-title h3 {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n.rel-form-header-subtitle {\n margin: 2px 0 0;\n font-size: 12px;\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.rel-form-close-btn {\n background: transparent;\n border: none;\n font-size: 16px;\n color: var(--mj-text-muted, #64748b);\n cursor: pointer;\n border-radius: var(--mj-radius-sm, 6px);\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s ease;\n}\n\n.rel-form-close-btn:hover {\n color: var(--mj-text-primary, #f1f5f9);\n background: var(--mj-bg-surface-sunken, #0b1220);\n}\n\n.rel-form-body {\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n}\n\n.form-row {\n display: flex;\n gap: 14px;\n align-items: flex-start;\n}\n\n.form-row--target {\n display: block;\n width: 100%;\n}\n\n.form-field {\n flex: 1;\n min-width: 0;\n}\n\n.form-field--target {\n width: 100%;\n}\n\n.form-field label {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary, #94a3b8);\n margin-bottom: 6px;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n}\n\n.form-field input,\n.form-field select {\n width: 100%;\n padding: 9px 12px;\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-family: inherit;\n background: var(--mj-bg-surface-sunken, #0b1220);\n color: var(--mj-text-primary, #f1f5f9);\n box-sizing: border-box;\n}\n\n.form-field select option {\n background: var(--mj-bg-surface-card, #141f36);\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n.form-field input:focus,\n.form-field select:focus {\n outline: none;\n border-color: var(--mj-brand-primary, #0284c7);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary, #0284c7) 15%, transparent);\n}\n\n.form-field.type-field {\n flex: 1;\n min-width: 200px;\n}\n\n.form-field.category-field {\n flex: 1;\n min-width: 200px;\n}\n\n.form-field.status-field {\n max-width: 160px;\n}\n\n.form-field.date-field {\n max-width: 180px;\n}\n\n.form-field.title-field {\n flex: 2;\n}\n\n/* Category auto-fill display */\n.category-display {\n padding: 9px 12px;\n background: var(--mj-bg-surface-sunken, #0b1220);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-secondary, #94a3b8);\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 38px;\n box-sizing: border-box;\n}\n\n.category-display i {\n font-size: 12px;\n color: var(--mj-brand-primary, #38bdf8);\n}\n\n/* Target Search Field Wrapper (Full Width) */\n.target-field-wrapper {\n width: 100%;\n min-width: 0;\n}\n\n.target-field-wrapper ::ng-deep mj-form-field {\n width: 100%;\n display: block;\n}\n\n.target-field-wrapper ::ng-deep .mj-forms-field {\n display: block !important;\n width: 100% !important;\n padding: 0 !important;\n}\n\n.target-field-wrapper ::ng-deep .mj-forms-field-control {\n width: 100% !important;\n}\n\n.target-field-wrapper ::ng-deep .mj-fk-search {\n width: 100% !important;\n}\n\n.target-field-wrapper ::ng-deep .mj-forms-input-wrapper {\n width: 100% !important;\n min-height: 40px !important;\n border-radius: var(--mj-radius-sm, 6px) !important;\n background: var(--mj-bg-surface-sunken, #0b1220) !important;\n border: 1px solid var(--mj-border-default, #223254) !important;\n}\n\n.target-field-wrapper ::ng-deep input.mj-forms-field-input {\n font-size: 13px !important;\n padding: 9px 12px !important;\n color: var(--mj-text-primary, #f1f5f9) !important;\n}\n\n.target-field-wrapper ::ng-deep .mj-fk-dropdown {\n width: 100% !important;\n max-width: none !important;\n}\n\n.field-hint {\n display: block;\n font-size: 11px;\n color: var(--mj-text-muted, #64748b);\n margin-top: 4px;\n}\n\n.required-star {\n color: var(--mj-status-error, #ef4444);\n font-weight: 700;\n}\n\n.rel-form-footer {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 14px 20px;\n border-top: 1px solid var(--mj-border-default, #223254);\n background: var(--mj-bg-surface-sunken, #0b1220);\n}\n\n/* Empty state */\n.empty-state {\n text-align: center;\n padding: 40px 20px;\n color: var(--mj-text-muted);\n font-size: 14px;\n border: 1px dashed var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface);\n}\n\n.empty-state__title {\n margin: 8px 0 4px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.empty-state__hint {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 13px;\n max-width: 28rem;\n margin-inline: auto;\n}\n\n.empty-state i {\n font-size: 24px;\n color: var(--mj-border-strong);\n margin-bottom: 8px;\n display: block;\n}\n\n/* Loading */\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px;\n color: var(--mj-text-muted);\n font-size: 13px;\n gap: 8px;\n}\n\n.loading-state i {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n"] }]
|
|
1381
|
+
args: [{ standalone: true, imports: [CommonModule, FormsModule, BaseFormsModule], selector: 'bizapps-relationship-list', template: "<!-- RelationshipList - Grouped Timeline Design with Slide-In Overlay -->\n\n<div class=\"rel-widget-root\">\n <!-- Header -->\n <div class=\"section-header\">\n <span class=\"section-label\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n Relationships\n </span>\n @if (!Loading && EditMode && !ShowAddForm && !EditingId) {\n <button class=\"btn btn-outline\" (click)=\"onShowAdd()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Relationship\n </button>\n }\n </div>\n\n <!-- Timeline List Content (when not adding or editing) -->\n @if (!ShowAddForm && !EditingId) {\n @if (Loading) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner\"></i> Loading relationships...\n </div>\n } @else {\n @if (GroupedRelationships.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n <p class=\"empty-state__title\">No relationships</p>\n <p class=\"empty-state__hint\">\n @if (EditMode) {\n This record has no relationship links yet. Click \"Add Relationship\" above to connect it to a person or organization.\n } @else {\n This record has no relationship links yet.\n }\n </p>\n </div>\n }\n\n <div class=\"rel-timeline-container\">\n @for (group of GroupedRelationships; track group.Category) {\n <div class=\"rel-category\">\n <div class=\"rel-category-header\">\n <div class=\"rel-category-icon\" [ngClass]=\"group.IconClass\">\n <i [class]=\"group.Icon\"></i>\n </div>\n <span class=\"rel-category-title\">{{ group.Label }}</span>\n <span class=\"rel-category-count\">{{ group.Items.length }} {{ group.Items.length === 1 ? 'relationship' : 'relationships' }}</span>\n </div>\n\n @for (item of group.Items; track item.Relationship.ID) {\n <div class=\"rel-timeline-item\"\n [ngClass]=\"'status-' + item.Relationship.Status.toLowerCase()\">\n <div class=\"rel-timeline-icon\">\n <i [class]=\"group.Icon\"></i>\n </div>\n <div class=\"rel-timeline-content\">\n <div class=\"rel-timeline-sentence\">\n <span class=\"rel-timeline-label\">{{ item.DirectionLabel }}</span>\n @if (item.TargetEntityName && item.TargetID) {\n <a class=\"rel-timeline-target\" href=\"javascript:void(0)\"\n (click)=\"onNavigateToTarget(item, $event)\">{{ item.TargetName }}</a>\n } @else {\n <span class=\"rel-timeline-target\">{{ item.TargetName }}</span>\n }\n </div>\n <div class=\"rel-timeline-meta\">\n @if (item.Relationship.Title) {\n <span class=\"rel-timeline-title\">{{ item.Relationship.Title }}</span>\n }\n @if (item.Relationship.JobFunction) {\n <span class=\"badge badge-subtle\" title=\"Job Function\">\n <i class=\"fa-solid fa-briefcase\"></i> {{ item.Relationship.JobFunction }}\n </span>\n }\n @if (item.Relationship.SeniorityLevel) {\n <span class=\"badge badge-subtle\" title=\"Seniority Level\">\n <i class=\"fa-solid fa-layer-group\"></i> {{ item.Relationship.SeniorityLevel }}\n </span>\n }\n @if (item.DateDisplay) {\n <span class=\"rel-timeline-dates\">\n <i class=\"fa-regular fa-calendar\"></i> {{ item.DateDisplay }}\n </span>\n }\n <span class=\"badge\" [ngClass]=\"'badge-' + item.Relationship.Status.toLowerCase()\">\n {{ item.Relationship.Status }}\n </span>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"rel-timeline-actions\">\n <button class=\"btn-ghost\" title=\"Edit\" (click)=\"onEdit(item.Relationship)\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n @if (item.Relationship.Status === 'Active') {\n <button class=\"btn-ghost danger\" title=\"End Relationship\" (click)=\"onEndRelationship(item.Relationship)\">\n <i class=\"fa-solid fa-circle-xmark\"></i>\n </button>\n } @else {\n <button class=\"btn-ghost danger\" title=\"Delete\" (click)=\"onDelete(item.Relationship)\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n }\n\n <!-- ============================================\n ADD RELATIONSHIP FORM CARD\n ============================================ -->\n @if (ShowAddForm) {\n <div class=\"rel-form-card\">\n <div class=\"rel-form-header\">\n <div class=\"rel-form-header-title\">\n <i class=\"fa-solid fa-circle-plus\"></i>\n <div>\n <h3>Add Relationship</h3>\n <p class=\"rel-form-header-subtitle\">Create a connection to another person or organization</p>\n </div>\n </div>\n <button type=\"button\" class=\"rel-form-close-btn\" (click)=\"onCancelAdd()\" title=\"Cancel\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <div class=\"rel-form-body\">\n <!-- Type & Category Row -->\n <div class=\"form-row\">\n <div class=\"form-field type-field\">\n <label>Relationship Type</label>\n <select [(ngModel)]=\"AddForm.TypeID\" (ngModelChange)=\"onAddTypeChange()\">\n <option value=\"\">-- Select Type --</option>\n @for (t of RelationshipTypes; track t.ID) {\n <option [value]=\"t.ID\">{{ t.Name }}</option>\n }\n </select>\n </div>\n <div class=\"form-field category-field\">\n <label>Category</label>\n <div class=\"category-display\">\n <i class=\"fa-solid fa-link\"></i>\n {{ getCategoryFriendlyName(getAddCategory()) }}\n </div>\n </div>\n </div>\n\n <!-- Target Search (Prominent Full Width) -->\n @if (DraftRelationship && AddForm.TypeID) {\n <div class=\"form-row form-row--target\">\n @if (IsPersonTarget) {\n <div class=\"form-field form-field--target\">\n <label>Target Person <span class=\"required-star\">*</span></label>\n <div class=\"target-field-wrapper\">\n <mj-form-field\n [Record]=\"DraftRelationship\"\n FieldName=\"ToPersonID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"true\"\n [ShowLabel]=\"false\">\n </mj-form-field>\n </div>\n <span class=\"field-hint\">Search person by name, job title, or email</span>\n </div>\n }\n @if (IsOrgTarget) {\n <div class=\"form-field form-field--target\">\n <label>Target Organization <span class=\"required-star\">*</span></label>\n <div class=\"target-field-wrapper\">\n <mj-form-field\n [Record]=\"DraftRelationship\"\n FieldName=\"ToOrganizationID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"true\"\n [ShowLabel]=\"false\">\n </mj-form-field>\n </div>\n <span class=\"field-hint\">Search organization or company name</span>\n </div>\n }\n </div>\n }\n\n <!-- Details & Dates Row -->\n <div class=\"form-row form-row--meta\">\n <div class=\"form-field title-field\">\n <label>Title / Role (Optional)</label>\n <input type=\"text\" [(ngModel)]=\"AddForm.Title\" placeholder=\"e.g., Board Director, Spouse, Manager\">\n </div>\n <div class=\"form-field date-field\">\n <label>Start Date</label>\n <input type=\"date\" [(ngModel)]=\"AddForm.StartDate\">\n </div>\n <div class=\"form-field date-field\">\n <label>End Date</label>\n <input type=\"date\" [(ngModel)]=\"AddForm.EndDate\">\n </div>\n </div>\n\n <!-- Progressive Disclosure: Role Details (Function & Seniority) -->\n <div class=\"rel-form-progressive\">\n <button type=\"button\" class=\"rel-form-progressive-toggle\" (click)=\"ShowAddAdvanced = !ShowAddAdvanced\">\n <i [class]=\"ShowAddAdvanced ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n Role Classification (Function & Seniority)\n </button>\n @if (ShowAddAdvanced) {\n <div class=\"form-row form-row--classification\">\n <div class=\"form-field\">\n <label>Job Function</label>\n <select [(ngModel)]=\"AddForm.JobFunctionID\">\n <option value=\"\">\u2014 None \u2014</option>\n @for (jf of JobFunctions; track jf.ID) {\n <option [value]=\"jf.ID\">{{ jf.Name }}</option>\n }\n </select>\n </div>\n <div class=\"form-field\">\n <label>Seniority Level</label>\n <select [(ngModel)]=\"AddForm.SeniorityLevelID\">\n <option value=\"\">\u2014 None \u2014</option>\n @for (sl of SeniorityLevels; track sl.ID) {\n <option [value]=\"sl.ID\">{{ sl.Name }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"rel-form-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onSaveAdd()\" [disabled]=\"Saving || !AddForm.TypeID || !HasValidAddTarget\">\n @if (Saving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n Save Relationship\n </button>\n <button type=\"button\" class=\"btn btn-cancel\" (click)=\"onCancelAdd()\">Cancel</button>\n </div>\n </div>\n }\n\n <!-- ============================================\n EDIT RELATIONSHIP FORM CARD\n ============================================ -->\n @if (EditingId) {\n <div class=\"rel-form-card\">\n <div class=\"rel-form-header\">\n <div class=\"rel-form-header-title\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n <div>\n <h3>Edit Relationship</h3>\n <p class=\"rel-form-header-subtitle\">Update relationship details, dates, or status</p>\n </div>\n </div>\n <button type=\"button\" class=\"rel-form-close-btn\" (click)=\"onCancelEdit()\" title=\"Cancel\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <div class=\"rel-form-body\">\n <div class=\"form-row\">\n <div class=\"form-field type-field\">\n <label>Relationship Type</label>\n <select [(ngModel)]=\"EditForm.TypeID\" (ngModelChange)=\"onEditTypeChange()\">\n @for (t of RelationshipTypes; track t.ID) {\n <option [value]=\"t.ID\">{{ t.Name }}</option>\n }\n </select>\n </div>\n <div class=\"form-field category-field\">\n <label>Category</label>\n <div class=\"category-display\">\n <i class=\"fa-solid fa-link\"></i>\n {{ getCategoryFriendlyName(getEditCategory()) }}\n </div>\n </div>\n <div class=\"form-field status-field\">\n <label>Status</label>\n <select [(ngModel)]=\"EditForm.Status\">\n <option value=\"Active\">Active</option>\n <option value=\"Inactive\">Inactive</option>\n <option value=\"Ended\">Ended</option>\n </select>\n </div>\n </div>\n\n <div class=\"form-row form-row--meta\">\n <div class=\"form-field title-field\">\n <label>Title / Role</label>\n <input type=\"text\" [(ngModel)]=\"EditForm.Title\" placeholder=\"e.g., Board Director, Spouse\">\n </div>\n <div class=\"form-field date-field\">\n <label>Start Date</label>\n <input type=\"date\" [(ngModel)]=\"EditForm.StartDate\">\n </div>\n <div class=\"form-field date-field\">\n <label>End Date</label>\n <input type=\"date\" [(ngModel)]=\"EditForm.EndDate\">\n </div>\n </div>\n\n <!-- Progressive Disclosure: Role Details (Function & Seniority) -->\n <div class=\"rel-form-progressive\">\n <button type=\"button\" class=\"rel-form-progressive-toggle\" (click)=\"ShowEditAdvanced = !ShowEditAdvanced\">\n <i [class]=\"ShowEditAdvanced ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n Role Classification (Function & Seniority)\n </button>\n @if (ShowEditAdvanced) {\n <div class=\"form-row form-row--classification\">\n <div class=\"form-field\">\n <label>Job Function</label>\n <select [(ngModel)]=\"EditForm.JobFunctionID\">\n <option value=\"\">\u2014 None \u2014</option>\n @for (jf of JobFunctions; track jf.ID) {\n <option [value]=\"jf.ID\">{{ jf.Name }}</option>\n }\n </select>\n </div>\n <div class=\"form-field\">\n <label>Seniority Level</label>\n <select [(ngModel)]=\"EditForm.SeniorityLevelID\">\n <option value=\"\">\u2014 None \u2014</option>\n @for (sl of SeniorityLevels; track sl.ID) {\n <option [value]=\"sl.ID\">{{ sl.Name }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"rel-form-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onSaveEdit()\" [disabled]=\"Saving\">\n @if (Saving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n Save Changes\n </button>\n <button type=\"button\" class=\"btn btn-cancel\" (click)=\"onCancelEdit()\">Cancel</button>\n </div>\n </div>\n }\n</div>\n", styles: ["/* ============================================\n RelationshipList - Grouped Timeline Design\n Pixel-perfect match to Option A mockup\n ============================================ */\n\n:host {\n display: flex;\n flex-direction: column;\n min-height: 0;\n height: 100%;\n font-family: var(--mj-font-family);\n color: var(--mj-text-primary);\n}\n\n.section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n flex-shrink: 0;\n}\n\n.section-label {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-label i {\n color: var(--mj-brand-primary);\n}\n\n/* Category group */\n.rel-category {\n margin-bottom: 24px;\n}\n\n.rel-category:last-child {\n margin-bottom: 0;\n}\n\n.rel-category-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 0;\n margin-bottom: 12px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.rel-category-icon {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.rel-category-icon.cat-employment {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.rel-category-icon.cat-board {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n}\n\n.rel-category-icon.cat-personal {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-error-text);\n}\n\n.rel-category-icon.cat-business {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n\n.rel-category-icon.cat-default {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n.rel-category-title {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n flex: 1;\n}\n\n.rel-category-count {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n/* Timeline item */\n.rel-timeline-item {\n display: flex;\n gap: 12px;\n padding: 12px 16px;\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.15s;\n position: relative;\n}\n\n.rel-timeline-item:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n}\n\n.rel-timeline-item.status-active {\n border-left: 3px solid var(--mj-status-success);\n}\n\n.rel-timeline-item.status-inactive {\n border-left: 3px solid var(--mj-status-warning);\n opacity: 0.7;\n}\n\n.rel-timeline-item.status-ended {\n border-left: 3px solid var(--mj-text-disabled);\n opacity: 0.5;\n}\n\n/* Timeline icon */\n.rel-timeline-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-size: 16px;\n flex-shrink: 0;\n}\n\n/* Content */\n.rel-timeline-content {\n flex: 1;\n}\n\n.rel-timeline-sentence {\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.rel-timeline-label {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\na.rel-timeline-target {\n font-weight: 600;\n color: var(--mj-brand-primary);\n cursor: pointer;\n text-decoration: none;\n}\n\na.rel-timeline-target:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\nspan.rel-timeline-target {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.rel-timeline-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n\n.rel-timeline-title {\n font-style: italic;\n color: var(--mj-text-secondary);\n}\n\n.rel-timeline-dates {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n/* Actions */\n.rel-timeline-actions {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n\n.rel-timeline-item:hover .rel-timeline-actions {\n opacity: 1;\n}\n\n/* Badges */\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.badge-active {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n\n.badge-inactive {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n\n.badge-ended {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n}\n\n/* Ghost buttons */\n.btn-ghost {\n background: transparent;\n color: var(--mj-text-disabled);\n padding: 6px 8px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 13px;\n transition: all 0.15s ease;\n}\n\n.btn-ghost:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n}\n\n.btn-ghost.danger:hover {\n color: var(--mj-status-error-text);\n background: var(--mj-status-error-bg);\n}\n\n/* Buttons */\n.btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: none;\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.btn-primary {\n background: var(--mj-brand-primary, #0284c7);\n color: #fff;\n}\n\n.btn-primary:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, #0369a1);\n}\n\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-outline {\n background: transparent;\n border: 1px dashed var(--mj-border-strong, #334155);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.btn-outline:hover {\n border-color: var(--mj-brand-primary, #0284c7);\n color: var(--mj-brand-primary, #38bdf8);\n background: color-mix(in srgb, var(--mj-brand-primary, #0284c7) 8%, transparent);\n}\n\n.btn-cancel {\n background: var(--mj-bg-surface-card, #141f36);\n color: var(--mj-text-secondary, #94a3b8);\n border: 1px solid var(--mj-border-default, #223254);\n}\n\n.btn-cancel:hover {\n background: var(--mj-border-subtle, #1e293b);\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n/* ============================================\n OVERLAY SLIDE-IN PANEL\n/* ============================================\n RELATIONSHIP FORM CARD (ADD / EDIT)\n ============================================ */\n.rel-widget-root {\n position: relative;\n width: 100%;\n}\n\n.rel-timeline-container {\n transition: opacity 0.2s ease;\n}\n\n.rel-form-card {\n width: 100%;\n background: var(--mj-bg-surface-card, #141f36);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-lg, 10px);\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: relFadeIn 0.18s ease-out;\n margin-bottom: 12px;\n}\n\n@keyframes relFadeIn {\n from { opacity: 0; transform: translateY(-4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.rel-form-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default, #223254);\n background: color-mix(in srgb, var(--mj-brand-primary, #0284c7) 8%, var(--mj-bg-surface-card, #141f36));\n}\n\n.rel-form-header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.rel-form-header-title i {\n font-size: 20px;\n color: var(--mj-brand-primary, #38bdf8);\n}\n\n.rel-form-header-title h3 {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n.rel-form-header-subtitle {\n margin: 2px 0 0;\n font-size: 12px;\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.rel-form-close-btn {\n background: transparent;\n border: none;\n font-size: 16px;\n color: var(--mj-text-muted, #64748b);\n cursor: pointer;\n border-radius: var(--mj-radius-sm, 6px);\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s ease;\n}\n\n.rel-form-close-btn:hover {\n color: var(--mj-text-primary, #f1f5f9);\n background: var(--mj-bg-surface-sunken, #0b1220);\n}\n\n.rel-form-body {\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n}\n\n.form-row {\n display: flex;\n gap: 14px;\n align-items: flex-start;\n}\n\n.form-row--target {\n display: block;\n width: 100%;\n}\n\n.form-field {\n flex: 1;\n min-width: 0;\n}\n\n.form-field--target {\n width: 100%;\n}\n\n.form-field label {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary, #94a3b8);\n margin-bottom: 6px;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n}\n\n.form-field input,\n.form-field select {\n width: 100%;\n padding: 9px 12px;\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-family: inherit;\n background: var(--mj-bg-surface-sunken, #0b1220);\n color: var(--mj-text-primary, #f1f5f9);\n box-sizing: border-box;\n}\n\n.form-field select option {\n background: var(--mj-bg-surface-card, #141f36);\n color: var(--mj-text-primary, #f1f5f9);\n}\n\n.form-field input:focus,\n.form-field select:focus {\n outline: none;\n border-color: var(--mj-brand-primary, #0284c7);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary, #0284c7) 15%, transparent);\n}\n\n.form-field.type-field {\n flex: 1;\n min-width: 200px;\n}\n\n.form-field.category-field {\n flex: 1;\n min-width: 200px;\n}\n\n.form-field.status-field {\n max-width: 160px;\n}\n\n.form-field.date-field {\n max-width: 180px;\n}\n\n.form-field.title-field {\n flex: 2;\n}\n\n/* Category auto-fill display */\n.category-display {\n padding: 9px 12px;\n background: var(--mj-bg-surface-sunken, #0b1220);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-secondary, #94a3b8);\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 38px;\n box-sizing: border-box;\n}\n\n.category-display i {\n font-size: 12px;\n color: var(--mj-brand-primary, #38bdf8);\n}\n\n/* Target Search Field Wrapper (Full Width) */\n.target-field-wrapper {\n width: 100%;\n min-width: 0;\n}\n\n.target-field-wrapper ::ng-deep mj-form-field {\n width: 100%;\n display: block;\n}\n\n.target-field-wrapper ::ng-deep .mj-forms-field {\n display: block !important;\n width: 100% !important;\n padding: 0 !important;\n}\n\n.target-field-wrapper ::ng-deep .mj-forms-field-control {\n width: 100% !important;\n}\n\n.target-field-wrapper ::ng-deep .mj-fk-search {\n width: 100% !important;\n}\n\n.target-field-wrapper ::ng-deep .mj-forms-input-wrapper {\n width: 100% !important;\n min-height: 40px !important;\n border-radius: var(--mj-radius-sm, 6px) !important;\n background: var(--mj-bg-surface-sunken, #0b1220) !important;\n border: 1px solid var(--mj-border-default, #223254) !important;\n}\n\n.target-field-wrapper ::ng-deep input.mj-forms-field-input {\n font-size: 13px !important;\n padding: 9px 12px !important;\n color: var(--mj-text-primary, #f1f5f9) !important;\n}\n\n.target-field-wrapper ::ng-deep .mj-fk-dropdown {\n width: 100% !important;\n max-width: none !important;\n}\n\n.field-hint {\n display: block;\n font-size: 11px;\n color: var(--mj-text-muted, #64748b);\n margin-top: 4px;\n}\n\n.required-star {\n color: var(--mj-status-error, #ef4444);\n font-weight: 700;\n}\n\n.rel-form-footer {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 14px 20px;\n border-top: 1px solid var(--mj-border-default, #223254);\n background: var(--mj-bg-surface-sunken, #0b1220);\n}\n\n/* Empty state */\n.empty-state {\n text-align: center;\n padding: 40px 20px;\n color: var(--mj-text-muted);\n font-size: 14px;\n border: 1px dashed var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface);\n}\n\n.empty-state__title {\n margin: 8px 0 4px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.empty-state__hint {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 13px;\n max-width: 28rem;\n margin-inline: auto;\n}\n\n.empty-state i {\n font-size: 24px;\n color: var(--mj-border-strong);\n margin-bottom: 8px;\n display: block;\n}\n\n/* Loading */\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px;\n color: var(--mj-text-muted);\n font-size: 13px;\n gap: 8px;\n}\n\n.loading-state i {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n.badge-subtle {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n text-transform: none;\n font-weight: 500;\n}\n\n.rel-form-progressive {\n margin-top: 12px;\n padding-top: 10px;\n border-top: 1px dashed var(--mj-border-default);\n}\n\n.rel-form-progressive-toggle {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n background: none;\n border: none;\n padding: 4px 0;\n}\n\n.rel-form-progressive-toggle:hover {\n text-decoration: underline;\n}\n\n.form-row--classification {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-top: 8px;\n}\n"] }]
|
|
1183
1382
|
}], null, { Navigate: [{
|
|
1184
1383
|
type: Output
|
|
1185
1384
|
}], EditMode: [{
|
|
@@ -1193,5 +1392,5 @@ export class RelationshipListComponent {
|
|
|
1193
1392
|
}], OrganizationID: [{
|
|
1194
1393
|
type: Input
|
|
1195
1394
|
}] }); })();
|
|
1196
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RelationshipListComponent, { className: "RelationshipListComponent", filePath: "lib/components/relationship-list/relationship-list.component.ts", lineNumber:
|
|
1395
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RelationshipListComponent, { className: "RelationshipListComponent", filePath: "lib/components/relationship-list/relationship-list.component.ts", lineNumber: 204 }); })();
|
|
1197
1396
|
//# sourceMappingURL=relationship-list.component.js.map
|