@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.
Files changed (58) hide show
  1. package/dist/lib/components/identity-header/activity-identity.component.d.ts +3 -0
  2. package/dist/lib/components/identity-header/activity-identity.component.d.ts.map +1 -1
  3. package/dist/lib/components/identity-header/activity-identity.component.js +87 -46
  4. package/dist/lib/components/identity-header/activity-identity.component.js.map +1 -1
  5. package/dist/lib/components/identity-header/organization-identity.component.js +2 -2
  6. package/dist/lib/components/identity-header/person-identity.component.d.ts +4 -0
  7. package/dist/lib/components/identity-header/person-identity.component.d.ts.map +1 -1
  8. package/dist/lib/components/identity-header/person-identity.component.js +157 -55
  9. package/dist/lib/components/identity-header/person-identity.component.js.map +1 -1
  10. package/dist/lib/components/person-job-functions/person-job-functions.component.d.ts +49 -0
  11. package/dist/lib/components/person-job-functions/person-job-functions.component.d.ts.map +1 -0
  12. package/dist/lib/components/person-job-functions/person-job-functions.component.js +506 -0
  13. package/dist/lib/components/person-job-functions/person-job-functions.component.js.map +1 -0
  14. package/dist/lib/components/relationship-list/relationship-list.component.d.ts +25 -1
  15. package/dist/lib/components/relationship-list/relationship-list.component.d.ts.map +1 -1
  16. package/dist/lib/components/relationship-list/relationship-list.component.js +318 -119
  17. package/dist/lib/components/relationship-list/relationship-list.component.js.map +1 -1
  18. package/dist/lib/custom/custom-forms.module.d.ts +22 -20
  19. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  20. package/dist/lib/custom/custom-forms.module.js +10 -0
  21. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  22. package/dist/lib/custom/panels/__tests__/activity-header.panel.test.js +17 -0
  23. package/dist/lib/custom/panels/__tests__/activity-header.panel.test.js.map +1 -1
  24. package/dist/lib/custom/panels/person-job-functions.panel.d.ts +13 -0
  25. package/dist/lib/custom/panels/person-job-functions.panel.d.ts.map +1 -0
  26. package/dist/lib/custom/panels/person-job-functions.panel.js +60 -0
  27. package/dist/lib/custom/panels/person-job-functions.panel.js.map +1 -0
  28. package/dist/lib/generated/Entities/mjBizAppsCommonActivity/mjbizappscommonactivity.form.component.js +43 -41
  29. package/dist/lib/generated/Entities/mjBizAppsCommonActivity/mjbizappscommonactivity.form.component.js.map +1 -1
  30. package/dist/lib/generated/Entities/mjBizAppsCommonJobFunction/mjbizappscommonjobfunction.form.component.d.ts +10 -0
  31. package/dist/lib/generated/Entities/mjBizAppsCommonJobFunction/mjbizappscommonjobfunction.form.component.d.ts.map +1 -0
  32. package/dist/lib/generated/Entities/mjBizAppsCommonJobFunction/mjbizappscommonjobfunction.form.component.js +106 -0
  33. package/dist/lib/generated/Entities/mjBizAppsCommonJobFunction/mjbizappscommonjobfunction.form.component.js.map +1 -0
  34. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js +27 -31
  35. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js.map +1 -1
  36. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts.map +1 -1
  37. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js +61 -37
  38. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js.map +1 -1
  39. package/dist/lib/generated/Entities/mjBizAppsCommonPersonJobFunction/mjbizappscommonpersonjobfunction.form.component.d.ts +10 -0
  40. package/dist/lib/generated/Entities/mjBizAppsCommonPersonJobFunction/mjbizappscommonpersonjobfunction.form.component.d.ts.map +1 -0
  41. package/dist/lib/generated/Entities/mjBizAppsCommonPersonJobFunction/mjbizappscommonpersonjobfunction.form.component.js +77 -0
  42. package/dist/lib/generated/Entities/mjBizAppsCommonPersonJobFunction/mjbizappscommonpersonjobfunction.form.component.js.map +1 -0
  43. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts.map +1 -1
  44. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js +9 -9
  45. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js.map +1 -1
  46. package/dist/lib/generated/Entities/mjBizAppsCommonSeniorityLevel/mjbizappscommonsenioritylevel.form.component.d.ts +10 -0
  47. package/dist/lib/generated/Entities/mjBizAppsCommonSeniorityLevel/mjbizappscommonsenioritylevel.form.component.d.ts.map +1 -0
  48. package/dist/lib/generated/Entities/mjBizAppsCommonSeniorityLevel/mjbizappscommonsenioritylevel.form.component.js +106 -0
  49. package/dist/lib/generated/Entities/mjBizAppsCommonSeniorityLevel/mjbizappscommonsenioritylevel.form.component.js.map +1 -0
  50. package/dist/lib/generated/generated-forms.module.d.ts +114 -31
  51. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  52. package/dist/lib/generated/generated-forms.module.js +543 -54
  53. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  54. package/dist/public-api.d.ts +2 -0
  55. package/dist/public-api.d.ts.map +1 -1
  56. package/dist/public-api.js +2 -0
  57. package/dist/public-api.js.map +1 -1
  58. 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", 31);
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", 32);
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 RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_14_Conditional_3_Template(rf, ctx) { if (rf & 1) {
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", 37);
90
- i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_14_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)); });
91
- i0.ɵɵelement(1, "i", 38);
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 RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_14_Conditional_4_Template(rf, ctx) { if (rf & 1) {
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", 39);
97
- i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_14_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)); });
98
- i0.ɵɵelement(1, "i", 40);
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 RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_14_Template(rf, ctx) { if (rf & 1) {
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", 30)(1, "button", 33);
104
- i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_14_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)); });
105
- i0.ɵɵelement(2, "i", 34);
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, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_14_Conditional_3_Template, 2, 0, "button", 35)(4, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_14_Conditional_4_Template, 2, 0, "button", 36);
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.ɵɵelementStart(12, "span", 29);
127
- i0.ɵɵtext(13);
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(14, RelationshipListComponent_Conditional_6_Conditional_1_For_3_For_9_Conditional_14_Template, 5, 1, "div", 30);
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.DateDisplay ? 11 : -1);
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 ? 14 : -1);
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, 15, 10, "div", 19, _forTrack1);
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", 52);
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", 66)(1, "label");
232
+ i0.ɵɵelementStart(0, "div", 73)(1, "label");
207
233
  i0.ɵɵtext(2, "Target Person ");
208
- i0.ɵɵelementStart(3, "span", 67);
234
+ i0.ɵɵelementStart(3, "span", 74);
209
235
  i0.ɵɵtext(4, "*");
210
236
  i0.ɵɵelementEnd()();
211
- i0.ɵɵelementStart(5, "div", 68);
212
- i0.ɵɵelement(6, "mj-form-field", 69);
237
+ i0.ɵɵelementStart(5, "div", 75);
238
+ i0.ɵɵelement(6, "mj-form-field", 76);
213
239
  i0.ɵɵelementEnd();
214
- i0.ɵɵelementStart(7, "span", 70);
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", 66)(1, "label");
249
+ i0.ɵɵelementStart(0, "div", 73)(1, "label");
224
250
  i0.ɵɵtext(2, "Target Organization ");
225
- i0.ɵɵelementStart(3, "span", 67);
251
+ i0.ɵɵelementStart(3, "span", 74);
226
252
  i0.ɵɵtext(4, "*");
227
253
  i0.ɵɵelementEnd()();
228
- i0.ɵɵelementStart(5, "div", 68);
229
- i0.ɵɵelement(6, "mj-form-field", 71);
254
+ i0.ɵɵelementStart(5, "div", 75);
255
+ i0.ɵɵelement(6, "mj-form-field", 78);
230
256
  i0.ɵɵelementEnd();
231
- i0.ɵɵelementStart(7, "span", 70);
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", 56);
241
- i0.ɵɵconditionalCreate(1, RelationshipListComponent_Conditional_7_Conditional_27_Conditional_1_Template, 9, 3, "div", 66);
242
- i0.ɵɵconditionalCreate(2, RelationshipListComponent_Conditional_7_Conditional_27_Conditional_2_Template, 9, 3, "div", 66);
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 RelationshipListComponent_Conditional_7_Conditional_43_Template(rf, ctx) { if (rf & 1) {
252
- i0.ɵɵelement(0, "i", 64);
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", 41)(2, "div", 42);
257
- i0.ɵɵelement(3, "i", 43);
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", 44);
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", 45);
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", 46);
345
+ i0.ɵɵelement(10, "i", 50);
267
346
  i0.ɵɵelementEnd()();
268
- i0.ɵɵelementStart(11, "div", 47)(12, "div", 48)(13, "div", 49)(14, "label");
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", 50);
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", 51);
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", 52, _forTrack2);
356
+ i0.ɵɵrepeaterCreate(19, RelationshipListComponent_Conditional_7_For_20_Template, 2, 2, "option", 56, _forTrack2);
278
357
  i0.ɵɵelementEnd()();
279
- i0.ɵɵelementStart(21, "div", 53)(22, "label");
358
+ i0.ɵɵelementStart(21, "div", 57)(22, "label");
280
359
  i0.ɵɵtext(23, "Category");
281
360
  i0.ɵɵelementEnd();
282
- i0.ɵɵelementStart(24, "div", 54);
283
- i0.ɵɵelement(25, "i", 55);
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", 56);
287
- i0.ɵɵelementStart(28, "div", 57)(29, "div", 58)(30, "label");
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", 59);
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", 60)(34, "label");
372
+ i0.ɵɵelementStart(33, "div", 64)(34, "label");
294
373
  i0.ɵɵtext(35, "Start Date");
295
374
  i0.ɵɵelementEnd();
296
- i0.ɵɵelementStart(36, "input", 61);
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", 60)(38, "label");
378
+ i0.ɵɵelementStart(37, "div", 64)(38, "label");
300
379
  i0.ɵɵtext(39, "End Date");
301
380
  i0.ɵɵelementEnd();
302
- i0.ɵɵelementStart(40, "input", 61);
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", 62)(42, "button", 63);
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.onSaveAdd()); });
307
- i0.ɵɵconditionalCreate(43, RelationshipListComponent_Conditional_7_Conditional_43_Template, 1, 0, "i", 64);
308
- i0.ɵɵtext(44, " Save Relationship ");
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.ɵɵelementStart(45, "button", 65);
311
- i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_7_Template_button_click_45_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancelAdd()); });
312
- i0.ɵɵtext(46, "Cancel");
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 ? 43 : -1);
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", 52);
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 t_r12 = ctx.$implicit;
341
- i0.ɵɵproperty("value", t_r12.ID);
440
+ const jf_r17 = ctx.$implicit;
441
+ i0.ɵɵproperty("value", jf_r17.ID);
342
442
  i0.ɵɵadvance();
343
- i0.ɵɵtextInterpolate(t_r12.Name);
443
+ i0.ɵɵtextInterpolate(jf_r17.Name);
344
444
  } }
345
- function RelationshipListComponent_Conditional_8_Conditional_50_Template(rf, ctx) { if (rf & 1) {
346
- i0.ɵɵelement(0, "i", 64);
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 _r11 = i0.ɵɵgetCurrentView();
350
- i0.ɵɵelementStart(0, "div", 5)(1, "div", 41)(2, "div", 42);
351
- i0.ɵɵelement(3, "i", 72);
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", 44);
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", 45);
359
- i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_8_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancelEdit()); });
360
- i0.ɵɵelement(10, "i", 46);
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", 47)(12, "div", 48)(13, "div", 49)(14, "label");
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", 50);
366
- i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_select_ngModelChange_16_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.TypeID, $event) || (ctx_r1.EditForm.TypeID = $event); return i0.ɵɵresetView($event); });
367
- i0.ɵɵlistener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_select_ngModelChange_16_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onEditTypeChange()); });
368
- i0.ɵɵrepeaterCreate(17, RelationshipListComponent_Conditional_8_For_18_Template, 2, 2, "option", 52, _forTrack2);
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", 53)(20, "label");
513
+ i0.ɵɵelementStart(19, "div", 57)(20, "label");
371
514
  i0.ɵɵtext(21, "Category");
372
515
  i0.ɵɵelementEnd();
373
- i0.ɵɵelementStart(22, "div", 54);
374
- i0.ɵɵelement(23, "i", 55);
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", 73)(26, "label");
520
+ i0.ɵɵelementStart(25, "div", 81)(26, "label");
378
521
  i0.ɵɵtext(27, "Status");
379
522
  i0.ɵɵelementEnd();
380
- i0.ɵɵelementStart(28, "select", 50);
381
- i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_select_ngModelChange_28_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.Status, $event) || (ctx_r1.EditForm.Status = $event); return i0.ɵɵresetView($event); });
382
- i0.ɵɵelementStart(29, "option", 74);
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", 75);
528
+ i0.ɵɵelementStart(31, "option", 83);
386
529
  i0.ɵɵtext(32, "Inactive");
387
530
  i0.ɵɵelementEnd();
388
- i0.ɵɵelementStart(33, "option", 76);
531
+ i0.ɵɵelementStart(33, "option", 84);
389
532
  i0.ɵɵtext(34, "Ended");
390
533
  i0.ɵɵelementEnd()()()();
391
- i0.ɵɵelementStart(35, "div", 57)(36, "div", 58)(37, "label");
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", 77);
395
- i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_input_ngModelChange_39_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.Title, $event) || (ctx_r1.EditForm.Title = $event); return i0.ɵɵresetView($event); });
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", 60)(41, "label");
540
+ i0.ɵɵelementStart(40, "div", 64)(41, "label");
398
541
  i0.ɵɵtext(42, "Start Date");
399
542
  i0.ɵɵelementEnd();
400
- i0.ɵɵelementStart(43, "input", 61);
401
- i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_input_ngModelChange_43_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.StartDate, $event) || (ctx_r1.EditForm.StartDate = $event); return i0.ɵɵresetView($event); });
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", 60)(45, "label");
546
+ i0.ɵɵelementStart(44, "div", 64)(45, "label");
404
547
  i0.ɵɵtext(46, "End Date");
405
548
  i0.ɵɵelementEnd();
406
- i0.ɵɵelementStart(47, "input", 61);
407
- i0.ɵɵtwoWayListener("ngModelChange", function RelationshipListComponent_Conditional_8_Template_input_ngModelChange_47_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.EditForm.EndDate, $event) || (ctx_r1.EditForm.EndDate = $event); return i0.ɵɵresetView($event); });
408
- i0.ɵɵelementEnd()()()();
409
- i0.ɵɵelementStart(48, "div", 62)(49, "button", 63);
410
- i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_8_Template_button_click_49_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSaveEdit()); });
411
- i0.ɵɵconditionalCreate(50, RelationshipListComponent_Conditional_8_Conditional_50_Template, 1, 0, "i", 64);
412
- i0.ɵɵtext(51, " Save Changes ");
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(52, "button", 65);
415
- i0.ɵɵlistener("click", function RelationshipListComponent_Conditional_8_Template_button_click_52_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancelEdit()); });
416
- i0.ɵɵtext(53, "Cancel");
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 ? 50 : -1);
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, 47, 8, "div", 5);
1167
- i0.ɵɵconditionalCreate(8, RelationshipListComponent_Conditional_8_Template, 54, 8, "div", 5);
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: 190 }); })();
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