@memberjunction/ng-entity-viewer 5.43.0 → 5.44.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 (75) hide show
  1. package/dist/lib/aggregate-panel/aggregate-panel.component.d.ts +5 -0
  2. package/dist/lib/aggregate-panel/aggregate-panel.component.d.ts.map +1 -1
  3. package/dist/lib/aggregate-panel/aggregate-panel.component.js +45 -47
  4. package/dist/lib/aggregate-panel/aggregate-panel.component.js.map +1 -1
  5. package/dist/lib/entity-cards/entity-cards.component.js +7 -10
  6. package/dist/lib/entity-cards/entity-cards.component.js.map +1 -1
  7. package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts +10 -1
  8. package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts.map +1 -1
  9. package/dist/lib/entity-data-grid/entity-data-grid.component.js +35 -34
  10. package/dist/lib/entity-data-grid/entity-data-grid.component.js.map +1 -1
  11. package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.d.ts +0 -4
  12. package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.d.ts.map +1 -1
  13. package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js +166 -207
  14. package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js.map +1 -1
  15. package/dist/lib/entity-viewer/entity-viewer.component.d.ts +109 -5
  16. package/dist/lib/entity-viewer/entity-viewer.component.d.ts.map +1 -1
  17. package/dist/lib/entity-viewer/entity-viewer.component.js +287 -42
  18. package/dist/lib/entity-viewer/entity-viewer.component.js.map +1 -1
  19. package/dist/lib/recycle-bin/recycle-bin.component.js +21 -44
  20. package/dist/lib/recycle-bin/recycle-bin.component.js.map +1 -1
  21. package/dist/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.js +19 -20
  22. package/dist/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.js.map +1 -1
  23. package/dist/lib/view-config-panel/view-config-panel.component.js +268 -301
  24. package/dist/lib/view-config-panel/view-config-panel.component.js.map +1 -1
  25. package/dist/lib/view-selector/view-selector.component.d.ts +26 -1
  26. package/dist/lib/view-selector/view-selector.component.d.ts.map +1 -1
  27. package/dist/lib/view-selector/view-selector.component.js +118 -76
  28. package/dist/lib/view-selector/view-selector.component.js.map +1 -1
  29. package/dist/lib/view-types/descriptors/grid-view-type.d.ts +7 -0
  30. package/dist/lib/view-types/descriptors/grid-view-type.d.ts.map +1 -1
  31. package/dist/lib/view-types/descriptors/grid-view-type.js +7 -0
  32. package/dist/lib/view-types/descriptors/grid-view-type.js.map +1 -1
  33. package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts +18 -1
  34. package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts.map +1 -1
  35. package/dist/lib/view-types/renderers/grid-view-renderer.component.js +29 -3
  36. package/dist/lib/view-types/renderers/grid-view-renderer.component.js.map +1 -1
  37. package/dist/lib/view-types/renderers/map-view-renderer.component.d.ts.map +1 -1
  38. package/dist/lib/view-types/renderers/map-view-renderer.component.js +11 -14
  39. package/dist/lib/view-types/renderers/map-view-renderer.component.js.map +1 -1
  40. package/dist/lib/view-types/renderers/timeline-view-renderer.component.d.ts.map +1 -1
  41. package/dist/lib/view-types/renderers/timeline-view-renderer.component.js +12 -14
  42. package/dist/lib/view-types/renderers/timeline-view-renderer.component.js.map +1 -1
  43. package/dist/lib/view-types/view-type.contracts.d.ts +44 -0
  44. package/dist/lib/view-types/view-type.contracts.d.ts.map +1 -1
  45. package/dist/lib/view-types/view-type.contracts.js +6 -0
  46. package/dist/lib/view-types/view-type.contracts.js.map +1 -1
  47. package/dist/lib/view-workspace/view-workspace.component.d.ts +32 -1
  48. package/dist/lib/view-workspace/view-workspace.component.d.ts.map +1 -1
  49. package/dist/lib/view-workspace/view-workspace.component.js +68 -7
  50. package/dist/lib/view-workspace/view-workspace.component.js.map +1 -1
  51. package/dist/module.d.ts +1 -1
  52. package/dist/module.d.ts.map +1 -1
  53. package/dist/module.js +10 -1
  54. package/dist/module.js.map +1 -1
  55. package/package.json +18 -17
  56. package/dist/__tests__/entity-cards-selection.test.d.ts +0 -2
  57. package/dist/__tests__/entity-cards-selection.test.d.ts.map +0 -1
  58. package/dist/__tests__/entity-cards-selection.test.js +0 -149
  59. package/dist/__tests__/entity-cards-selection.test.js.map +0 -1
  60. package/dist/__tests__/entity-cards-viewmodel.test.d.ts +0 -2
  61. package/dist/__tests__/entity-cards-viewmodel.test.d.ts.map +0 -1
  62. package/dist/__tests__/entity-cards-viewmodel.test.js +0 -208
  63. package/dist/__tests__/entity-cards-viewmodel.test.js.map +0 -1
  64. package/dist/__tests__/highlight.test.d.ts +0 -2
  65. package/dist/__tests__/highlight.test.d.ts.map +0 -1
  66. package/dist/__tests__/highlight.test.js +0 -67
  67. package/dist/__tests__/highlight.test.js.map +0 -1
  68. package/dist/__tests__/index.test.d.ts +0 -2
  69. package/dist/__tests__/index.test.d.ts.map +0 -1
  70. package/dist/__tests__/index.test.js +0 -7
  71. package/dist/__tests__/index.test.js.map +0 -1
  72. package/dist/__tests__/view-types.test.d.ts +0 -2
  73. package/dist/__tests__/view-types.test.d.ts.map +0 -1
  74. package/dist/__tests__/view-types.test.js +0 -102
  75. package/dist/__tests__/view-types.test.js.map +0 -1
@@ -4,33 +4,40 @@ import { EntityInfo, RunView, EntityFieldValueListType } from '@memberjunction/c
4
4
  import { buildCompositeKey, buildPkString } from '../utils/record.util';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@memberjunction/ng-shared-generic";
7
- import * as i2 from "../pill/pill.component";
7
+ import * as i2 from "@memberjunction/ng-ui-components";
8
+ import * as i3 from "../pill/pill.component";
8
9
  const _forTrack0 = ($index, $item) => $item.name;
9
10
  const _forTrack1 = ($index, $item) => $item.relatedEntityName;
10
11
  function EntityRecordDetailPanelComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
11
- i0.ɵɵelement(0, "i", 18);
12
+ i0.ɵɵelement(0, "i", 17);
12
13
  } if (rf & 2) {
13
14
  const ctx_r0 = i0.ɵɵnextContext();
14
15
  i0.ɵɵclassMap(ctx_r0.getEntityIconClass());
15
16
  } }
16
- function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
17
+ function EntityRecordDetailPanelComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelement(0, "i", 18);
19
+ i0.ɵɵelementStart(1, "span");
20
+ i0.ɵɵtext(2, "Details");
21
+ i0.ɵɵelementEnd();
22
+ } }
23
+ function EntityRecordDetailPanelComponent_For_12_Conditional_0_Template(rf, ctx) { if (rf & 1) {
17
24
  const _r2 = i0.ɵɵgetCurrentView();
18
- i0.ɵɵelementStart(0, "div", 20)(1, "div", 23);
19
- i0.ɵɵelement(2, "i", 24);
20
- i0.ɵɵelementStart(3, "span", 25);
25
+ i0.ɵɵelementStart(0, "div", 19)(1, "div", 22);
26
+ i0.ɵɵelement(2, "i", 23);
27
+ i0.ɵɵelementStart(3, "span", 24);
21
28
  i0.ɵɵtext(4);
22
29
  i0.ɵɵelementEnd();
23
- i0.ɵɵelementStart(5, "button", 26);
24
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_0_Template_button_click_5_listener($event) { i0.ɵɵrestoreView(_r2); const field_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.copyToClipboard(field_r3.value, $event)); });
25
- i0.ɵɵelement(6, "i", 27);
30
+ i0.ɵɵelementStart(5, "button", 25);
31
+ i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_For_12_Conditional_0_Template_button_click_5_listener($event) { i0.ɵɵrestoreView(_r2); const field_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.copyToClipboard(field_r3.value, $event)); });
32
+ i0.ɵɵelement(6, "i", 26);
26
33
  i0.ɵɵelementEnd()()();
27
34
  } if (rf & 2) {
28
35
  const field_r3 = i0.ɵɵnextContext().$implicit;
29
36
  i0.ɵɵadvance(4);
30
37
  i0.ɵɵtextInterpolate(field_r3.label);
31
38
  } }
32
- function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "span", 29);
39
+ function EntityRecordDetailPanelComponent_For_12_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
40
+ i0.ɵɵelementStart(0, "span", 28);
34
41
  i0.ɵɵtext(1);
35
42
  i0.ɵɵelementEnd();
36
43
  } if (rf & 2) {
@@ -38,8 +45,8 @@ function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Con
38
45
  i0.ɵɵadvance();
39
46
  i0.ɵɵtextInterpolate(field_r3.displayValue);
40
47
  } }
41
- function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
42
- i0.ɵɵelementStart(0, "span", 30);
48
+ function EntityRecordDetailPanelComponent_For_12_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
49
+ i0.ɵɵelementStart(0, "span", 29);
43
50
  i0.ɵɵtext(1);
44
51
  i0.ɵɵelementEnd();
45
52
  } if (rf & 2) {
@@ -47,27 +54,27 @@ function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Con
47
54
  i0.ɵɵadvance();
48
55
  i0.ɵɵtextInterpolate(field_r3.value);
49
56
  } }
50
- function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
57
+ function EntityRecordDetailPanelComponent_For_12_Conditional_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
51
58
  const _r4 = i0.ɵɵgetCurrentView();
52
- i0.ɵɵelementStart(0, "button", 32);
53
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Conditional_6_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const field_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onForeignKeyClick(field_r3, $event)); });
54
- i0.ɵɵelement(1, "i", 17);
59
+ i0.ɵɵelementStart(0, "button", 31);
60
+ i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_For_12_Conditional_1_Conditional_6_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const field_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onForeignKeyClick(field_r3, $event)); });
61
+ i0.ɵɵelement(1, "i", 16);
55
62
  i0.ɵɵelementEnd();
56
63
  } if (rf & 2) {
57
64
  const field_r3 = i0.ɵɵnextContext(2).$implicit;
58
65
  i0.ɵɵproperty("title", i0.ɵɵinterpolate1("Open ", field_r3.relatedEntityName, " record"));
59
66
  } }
60
- function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
61
- i0.ɵɵelementStart(0, "div", 21)(1, "span", 25);
67
+ function EntityRecordDetailPanelComponent_For_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelementStart(0, "div", 20)(1, "span", 24);
62
69
  i0.ɵɵtext(2);
63
70
  i0.ɵɵelementEnd();
64
- i0.ɵɵelementStart(3, "div", 28);
65
- i0.ɵɵconditionalCreate(4, EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Conditional_4_Template, 2, 1, "span", 29)(5, EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Conditional_5_Template, 2, 1, "span", 30);
66
- i0.ɵɵconditionalCreate(6, EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Conditional_6_Template, 2, 2, "button", 31);
71
+ i0.ɵɵelementStart(3, "div", 27);
72
+ i0.ɵɵconditionalCreate(4, EntityRecordDetailPanelComponent_For_12_Conditional_1_Conditional_4_Template, 2, 1, "span", 28)(5, EntityRecordDetailPanelComponent_For_12_Conditional_1_Conditional_5_Template, 2, 1, "span", 29);
73
+ i0.ɵɵconditionalCreate(6, EntityRecordDetailPanelComponent_For_12_Conditional_1_Conditional_6_Template, 2, 2, "button", 30);
67
74
  i0.ɵɵelementEnd()();
68
75
  } if (rf & 2) {
69
76
  const field_r3 = i0.ɵɵnextContext().$implicit;
70
- const ctx_r0 = i0.ɵɵnextContext(2);
77
+ const ctx_r0 = i0.ɵɵnextContext();
71
78
  i0.ɵɵadvance(2);
72
79
  i0.ɵɵtextInterpolate(field_r3.label);
73
80
  i0.ɵɵadvance();
@@ -77,11 +84,11 @@ function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Tem
77
84
  i0.ɵɵadvance(2);
78
85
  i0.ɵɵconditional(field_r3.relatedEntityName ? 6 : -1);
79
86
  } }
80
- function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
81
- i0.ɵɵelementStart(0, "div", 22)(1, "span", 25);
87
+ function EntityRecordDetailPanelComponent_For_12_Conditional_2_Template(rf, ctx) { if (rf & 1) {
88
+ i0.ɵɵelementStart(0, "div", 21)(1, "span", 24);
82
89
  i0.ɵɵtext(2);
83
90
  i0.ɵɵelementEnd();
84
- i0.ɵɵelement(3, "mj-pill", 33);
91
+ i0.ɵɵelement(3, "mj-pill", 32);
85
92
  i0.ɵɵelementEnd();
86
93
  } if (rf & 2) {
87
94
  const field_r3 = i0.ɵɵnextContext().$implicit;
@@ -90,11 +97,11 @@ function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_2_Tem
90
97
  i0.ɵɵadvance();
91
98
  i0.ɵɵproperty("value", field_r3.value);
92
99
  } }
93
- function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
94
- i0.ɵɵelementStart(0, "div", 22)(1, "span", 25);
100
+ function EntityRecordDetailPanelComponent_For_12_Conditional_3_Template(rf, ctx) { if (rf & 1) {
101
+ i0.ɵɵelementStart(0, "div", 21)(1, "span", 24);
95
102
  i0.ɵɵtext(2);
96
103
  i0.ɵɵelementEnd();
97
- i0.ɵɵelementStart(3, "span", 34);
104
+ i0.ɵɵelementStart(3, "span", 33);
98
105
  i0.ɵɵtext(4);
99
106
  i0.ɵɵelementEnd()();
100
107
  } if (rf & 2) {
@@ -104,121 +111,111 @@ function EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_3_Tem
104
111
  i0.ɵɵadvance(2);
105
112
  i0.ɵɵtextInterpolate(field_r3.value);
106
113
  } }
107
- function EntityRecordDetailPanelComponent_Conditional_15_For_2_Template(rf, ctx) { if (rf & 1) {
108
- i0.ɵɵconditionalCreate(0, EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_0_Template, 7, 1, "div", 20)(1, EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_1_Template, 7, 5, "div", 21)(2, EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_2_Template, 4, 2, "div", 22)(3, EntityRecordDetailPanelComponent_Conditional_15_For_2_Conditional_3_Template, 5, 2, "div", 22);
114
+ function EntityRecordDetailPanelComponent_For_12_Template(rf, ctx) { if (rf & 1) {
115
+ i0.ɵɵconditionalCreate(0, EntityRecordDetailPanelComponent_For_12_Conditional_0_Template, 7, 1, "div", 19)(1, EntityRecordDetailPanelComponent_For_12_Conditional_1_Template, 7, 5, "div", 20)(2, EntityRecordDetailPanelComponent_For_12_Conditional_2_Template, 4, 2, "div", 21)(3, EntityRecordDetailPanelComponent_For_12_Conditional_3_Template, 5, 2, "div", 21);
109
116
  } if (rf & 2) {
110
117
  const field_r3 = ctx.$implicit;
111
118
  i0.ɵɵconditional(field_r3.type === "primary-key" ? 0 : field_r3.type === "foreign-key" ? 1 : field_r3.type === "enum" ? 2 : 3);
112
119
  } }
113
- function EntityRecordDetailPanelComponent_Conditional_15_Conditional_3_Template(rf, ctx) { if (rf & 1) {
114
- i0.ɵɵelementStart(0, "div", 19);
115
- i0.ɵɵtext(1, "No details available");
116
- i0.ɵɵelementEnd();
120
+ function EntityRecordDetailPanelComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
121
+ i0.ɵɵelement(0, "mj-empty-state", 10);
117
122
  } }
118
- function EntityRecordDetailPanelComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
119
- i0.ɵɵelementStart(0, "div", 13);
120
- i0.ɵɵrepeaterCreate(1, EntityRecordDetailPanelComponent_Conditional_15_For_2_Template, 4, 1, null, null, _forTrack0);
121
- i0.ɵɵconditionalCreate(3, EntityRecordDetailPanelComponent_Conditional_15_Conditional_3_Template, 2, 0, "div", 19);
123
+ function EntityRecordDetailPanelComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
124
+ i0.ɵɵelement(0, "i", 34);
125
+ i0.ɵɵelementStart(1, "span");
126
+ i0.ɵɵtext(2, "Related Records");
122
127
  i0.ɵɵelementEnd();
123
- } if (rf & 2) {
124
- const ctx_r0 = i0.ɵɵnextContext();
125
- i0.ɵɵadvance();
126
- i0.ɵɵrepeater(ctx_r0.displayFields);
127
- i0.ɵɵadvance(2);
128
- i0.ɵɵconditional(ctx_r0.displayFields.length === 0 ? 3 : -1);
129
128
  } }
130
- function EntityRecordDetailPanelComponent_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
131
- i0.ɵɵelementStart(0, "div", 35);
132
- i0.ɵɵelement(1, "mj-loading", 36);
129
+ function EntityRecordDetailPanelComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
130
+ i0.ɵɵelementStart(0, "div", 11);
131
+ i0.ɵɵelement(1, "mj-loading", 35);
133
132
  i0.ɵɵelementEnd();
134
133
  } }
135
- function EntityRecordDetailPanelComponent_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
136
- i0.ɵɵelementStart(0, "div", 19);
137
- i0.ɵɵtext(1, "No related records");
138
- i0.ɵɵelementEnd();
134
+ function EntityRecordDetailPanelComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
135
+ i0.ɵɵelement(0, "mj-empty-state", 12);
139
136
  } }
140
- function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
141
- i0.ɵɵelementStart(0, "div", 44);
142
- i0.ɵɵelement(1, "mj-loading", 45);
137
+ function EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
138
+ i0.ɵɵelementStart(0, "div", 43);
139
+ i0.ɵɵelement(1, "mj-loading", 44);
143
140
  i0.ɵɵelementEnd();
144
141
  } }
145
- function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_2_For_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵelementStart(0, "span", 51);
142
+ function EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_2_For_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
143
+ i0.ɵɵelementStart(0, "span", 50);
147
144
  i0.ɵɵtext(1);
148
145
  i0.ɵɵelementEnd();
149
146
  } if (rf & 2) {
150
147
  i0.ɵɵadvance();
151
148
  i0.ɵɵtextInterpolate(ctx);
152
149
  } }
153
- function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_2_For_1_Template(rf, ctx) { if (rf & 1) {
150
+ function EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_2_For_1_Template(rf, ctx) { if (rf & 1) {
154
151
  const _r7 = i0.ɵɵgetCurrentView();
155
- i0.ɵɵelementStart(0, "div", 48);
156
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_2_For_1_Template_div_click_0_listener($event) { const rec_r8 = i0.ɵɵrestoreView(_r7).$implicit; const relEntity_r6 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.onRelatedRecordClick(relEntity_r6, rec_r8, $event)); });
157
- i0.ɵɵelementStart(1, "div", 49)(2, "span", 50);
152
+ i0.ɵɵelementStart(0, "div", 47);
153
+ i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_2_For_1_Template_div_click_0_listener($event) { const rec_r8 = i0.ɵɵrestoreView(_r7).$implicit; const relEntity_r6 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onRelatedRecordClick(relEntity_r6, rec_r8, $event)); });
154
+ i0.ɵɵelementStart(1, "div", 48)(2, "span", 49);
158
155
  i0.ɵɵtext(3);
159
156
  i0.ɵɵelementEnd();
160
- i0.ɵɵconditionalCreate(4, EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_2_For_1_Conditional_4_Template, 2, 1, "span", 51);
157
+ i0.ɵɵconditionalCreate(4, EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_2_For_1_Conditional_4_Template, 2, 1, "span", 50);
161
158
  i0.ɵɵelementEnd();
162
- i0.ɵɵelement(5, "i", 52);
159
+ i0.ɵɵelement(5, "i", 51);
163
160
  i0.ɵɵelementEnd();
164
161
  } if (rf & 2) {
165
- let tmp_25_0;
162
+ let tmp_24_0;
166
163
  const rec_r8 = ctx.$implicit;
167
164
  const relEntity_r6 = i0.ɵɵnextContext(3).$implicit;
168
- const ctx_r0 = i0.ɵɵnextContext(3);
165
+ const ctx_r0 = i0.ɵɵnextContext(2);
169
166
  i0.ɵɵadvance(3);
170
167
  i0.ɵɵtextInterpolate(ctx_r0.getRelatedRecordDisplayName(relEntity_r6, rec_r8));
171
168
  i0.ɵɵadvance();
172
- i0.ɵɵconditional((tmp_25_0 = ctx_r0.getRelatedRecordSubtitle(relEntity_r6, rec_r8)) ? 4 : -1, tmp_25_0);
169
+ i0.ɵɵconditional((tmp_24_0 = ctx_r0.getRelatedRecordSubtitle(relEntity_r6, rec_r8)) ? 4 : -1, tmp_24_0);
173
170
  } }
174
- function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
171
+ function EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
175
172
  const _r9 = i0.ɵɵgetCurrentView();
176
- i0.ɵɵelementStart(0, "div", 53);
177
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_2_Conditional_2_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r9); const relEntity_r6 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.onViewAllRelated(relEntity_r6, $event)); });
173
+ i0.ɵɵelementStart(0, "div", 52);
174
+ i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_2_Conditional_2_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r9); const relEntity_r6 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onViewAllRelated(relEntity_r6, $event)); });
178
175
  i0.ɵɵelementStart(1, "span");
179
176
  i0.ɵɵtext(2);
180
177
  i0.ɵɵelementEnd();
181
- i0.ɵɵelement(3, "i", 54);
178
+ i0.ɵɵelement(3, "i", 53);
182
179
  i0.ɵɵelementEnd();
183
180
  } if (rf & 2) {
184
181
  const relEntity_r6 = i0.ɵɵnextContext(3).$implicit;
185
182
  i0.ɵɵadvance(2);
186
183
  i0.ɵɵtextInterpolate1("View all ", relEntity_r6.count, " records");
187
184
  } }
188
- function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
189
- i0.ɵɵrepeaterCreate(0, EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_2_For_1_Template, 6, 2, "div", 46, i0.ɵɵrepeaterTrackByIndex);
190
- i0.ɵɵconditionalCreate(2, EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_2_Conditional_2_Template, 4, 1, "div", 47);
185
+ function EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
186
+ i0.ɵɵrepeaterCreate(0, EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_2_For_1_Template, 6, 2, "div", 45, i0.ɵɵrepeaterTrackByIndex);
187
+ i0.ɵɵconditionalCreate(2, EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_2_Conditional_2_Template, 4, 1, "div", 46);
191
188
  } if (rf & 2) {
192
189
  const relEntity_r6 = i0.ɵɵnextContext(2).$implicit;
193
190
  i0.ɵɵrepeater(relEntity_r6.records);
194
191
  i0.ɵɵadvance(2);
195
192
  i0.ɵɵconditional(relEntity_r6.count > 10 ? 2 : -1);
196
193
  } }
197
- function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
198
- i0.ɵɵelementStart(0, "div", 43);
199
- i0.ɵɵconditionalCreate(1, EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_1_Template, 2, 0, "div", 44)(2, EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Conditional_2_Template, 3, 1);
194
+ function EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
195
+ i0.ɵɵelementStart(0, "div", 42);
196
+ i0.ɵɵconditionalCreate(1, EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_1_Template, 2, 0, "div", 43)(2, EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Conditional_2_Template, 3, 1);
200
197
  i0.ɵɵelementEnd();
201
198
  } if (rf & 2) {
202
199
  const relEntity_r6 = i0.ɵɵnextContext().$implicit;
203
200
  i0.ɵɵadvance();
204
201
  i0.ɵɵconditional(relEntity_r6.isLoadingRecords ? 1 : 2);
205
202
  } }
206
- function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Template(rf, ctx) { if (rf & 1) {
203
+ function EntityRecordDetailPanelComponent_Conditional_18_For_1_Template(rf, ctx) { if (rf & 1) {
207
204
  const _r5 = i0.ɵɵgetCurrentView();
208
- i0.ɵɵelementStart(0, "div", 38)(1, "div", 39);
209
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Template_div_click_1_listener($event) { const relEntity_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.toggleRelatedEntityExpansion(relEntity_r6, $event)); });
210
- i0.ɵɵelement(2, "i", 40)(3, "i");
211
- i0.ɵɵelementStart(4, "span", 41);
205
+ i0.ɵɵelementStart(0, "div", 37)(1, "div", 38);
206
+ i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_18_For_1_Template_div_click_1_listener($event) { const relEntity_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.toggleRelatedEntityExpansion(relEntity_r6, $event)); });
207
+ i0.ɵɵelement(2, "i", 39)(3, "i");
208
+ i0.ɵɵelementStart(4, "span", 40);
212
209
  i0.ɵɵtext(5);
213
210
  i0.ɵɵelementEnd();
214
- i0.ɵɵelementStart(6, "span", 42);
211
+ i0.ɵɵelementStart(6, "span", 41);
215
212
  i0.ɵɵtext(7);
216
213
  i0.ɵɵelementEnd()();
217
- i0.ɵɵconditionalCreate(8, EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Conditional_8_Template, 3, 1, "div", 43);
214
+ i0.ɵɵconditionalCreate(8, EntityRecordDetailPanelComponent_Conditional_18_For_1_Conditional_8_Template, 3, 1, "div", 42);
218
215
  i0.ɵɵelementEnd();
219
216
  } if (rf & 2) {
220
217
  const relEntity_r6 = ctx.$implicit;
221
- const ctx_r0 = i0.ɵɵnextContext(3);
218
+ const ctx_r0 = i0.ɵɵnextContext(2);
222
219
  i0.ɵɵclassProp("expanded", relEntity_r6.isExpanded);
223
220
  i0.ɵɵadvance();
224
221
  i0.ɵɵclassProp("clickable", relEntity_r6.count > 0);
@@ -233,113 +230,108 @@ function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Tem
233
230
  i0.ɵɵadvance();
234
231
  i0.ɵɵconditional(relEntity_r6.isExpanded ? 8 : -1);
235
232
  } }
236
- function EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_Template(rf, ctx) { if (rf & 1) {
237
- i0.ɵɵrepeaterCreate(0, EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_For_1_Template, 9, 13, "div", 37, _forTrack1);
233
+ function EntityRecordDetailPanelComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
234
+ i0.ɵɵrepeaterCreate(0, EntityRecordDetailPanelComponent_Conditional_18_For_1_Template, 9, 13, "div", 36, _forTrack1);
238
235
  } if (rf & 2) {
239
- const ctx_r0 = i0.ɵɵnextContext(2);
236
+ const ctx_r0 = i0.ɵɵnextContext();
240
237
  i0.ɵɵrepeater(ctx_r0.relatedEntitiesWithRecords);
241
238
  } }
242
- function EntityRecordDetailPanelComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
243
- i0.ɵɵelementStart(0, "div", 13);
244
- i0.ɵɵconditionalCreate(1, EntityRecordDetailPanelComponent_Conditional_22_Conditional_1_Template, 2, 0, "div", 35)(2, EntityRecordDetailPanelComponent_Conditional_22_Conditional_2_Template, 2, 0, "div", 19)(3, EntityRecordDetailPanelComponent_Conditional_22_Conditional_3_Template, 2, 0);
239
+ function EntityRecordDetailPanelComponent_Conditional_19_ng_template_1_Template(rf, ctx) { if (rf & 1) {
240
+ i0.ɵɵelement(0, "i", 55);
241
+ i0.ɵɵelementStart(1, "span");
242
+ i0.ɵɵtext(2, "Organic Key Matches");
245
243
  i0.ɵɵelementEnd();
246
- } if (rf & 2) {
247
- const ctx_r0 = i0.ɵɵnextContext();
248
- i0.ɵɵadvance();
249
- i0.ɵɵconditional(ctx_r0.isLoadingRelationships ? 1 : ctx_r0.relatedEntitiesWithRecords.length === 0 ? 2 : 3);
250
244
  } }
251
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
252
- i0.ɵɵelementStart(0, "div", 35);
245
+ function EntityRecordDetailPanelComponent_Conditional_19_Conditional_2_Template(rf, ctx) { if (rf & 1) {
246
+ i0.ɵɵelementStart(0, "div", 11);
253
247
  i0.ɵɵelement(1, "mj-loading", 56);
254
248
  i0.ɵɵelementEnd();
255
249
  } }
256
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
257
- i0.ɵɵelementStart(0, "div", 19);
258
- i0.ɵɵtext(1, "No organic key matches");
259
- i0.ɵɵelementEnd();
250
+ function EntityRecordDetailPanelComponent_Conditional_19_Conditional_3_Template(rf, ctx) { if (rf & 1) {
251
+ i0.ɵɵelement(0, "mj-empty-state", 54);
260
252
  } }
261
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
262
- i0.ɵɵelementStart(0, "div", 44);
263
- i0.ɵɵelement(1, "mj-loading", 45);
253
+ function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
254
+ i0.ɵɵelementStart(0, "div", 43);
255
+ i0.ɵɵelement(1, "mj-loading", 44);
264
256
  i0.ɵɵelementEnd();
265
257
  } }
266
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_2_For_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
267
- i0.ɵɵelementStart(0, "span", 51);
258
+ function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_2_For_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
259
+ i0.ɵɵelementStart(0, "span", 50);
268
260
  i0.ɵɵtext(1);
269
261
  i0.ɵɵelementEnd();
270
262
  } if (rf & 2) {
271
263
  i0.ɵɵadvance();
272
264
  i0.ɵɵtextInterpolate(ctx);
273
265
  } }
274
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_2_For_1_Template(rf, ctx) { if (rf & 1) {
266
+ function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_2_For_1_Template(rf, ctx) { if (rf & 1) {
275
267
  const _r13 = i0.ɵɵgetCurrentView();
276
- i0.ɵɵelementStart(0, "div", 48);
277
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_2_For_1_Template_div_click_0_listener($event) { const rec_r14 = i0.ɵɵrestoreView(_r13).$implicit; const match_r12 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.onOrganicKeyRecordClick(match_r12, rec_r14, $event)); });
278
- i0.ɵɵelementStart(1, "div", 49)(2, "span", 50);
268
+ i0.ɵɵelementStart(0, "div", 47);
269
+ i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_2_For_1_Template_div_click_0_listener($event) { const rec_r14 = i0.ɵɵrestoreView(_r13).$implicit; const match_r12 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.onOrganicKeyRecordClick(match_r12, rec_r14, $event)); });
270
+ i0.ɵɵelementStart(1, "div", 48)(2, "span", 49);
279
271
  i0.ɵɵtext(3);
280
272
  i0.ɵɵelementEnd();
281
- i0.ɵɵconditionalCreate(4, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_2_For_1_Conditional_4_Template, 2, 1, "span", 51);
273
+ i0.ɵɵconditionalCreate(4, EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_2_For_1_Conditional_4_Template, 2, 1, "span", 50);
282
274
  i0.ɵɵelementEnd();
283
- i0.ɵɵelement(5, "i", 52);
275
+ i0.ɵɵelement(5, "i", 51);
284
276
  i0.ɵɵelementEnd();
285
277
  } if (rf & 2) {
286
- let tmp_26_0;
278
+ let tmp_25_0;
287
279
  const rec_r14 = ctx.$implicit;
288
280
  const match_r12 = i0.ɵɵnextContext(3).$implicit;
289
- const ctx_r0 = i0.ɵɵnextContext(4);
281
+ const ctx_r0 = i0.ɵɵnextContext(3);
290
282
  i0.ɵɵadvance(3);
291
283
  i0.ɵɵtextInterpolate(ctx_r0.getOrganicKeyRecordDisplayName(match_r12, rec_r14));
292
284
  i0.ɵɵadvance();
293
- i0.ɵɵconditional((tmp_26_0 = ctx_r0.getOrganicKeyRecordSubtitle(match_r12, rec_r14)) ? 4 : -1, tmp_26_0);
285
+ i0.ɵɵconditional((tmp_25_0 = ctx_r0.getOrganicKeyRecordSubtitle(match_r12, rec_r14)) ? 4 : -1, tmp_25_0);
294
286
  } }
295
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
287
+ function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
296
288
  const _r15 = i0.ɵɵgetCurrentView();
297
- i0.ɵɵelementStart(0, "div", 53);
298
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_2_Conditional_2_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r15); const match_r12 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.onViewAllOrganicKey(match_r12, $event)); });
289
+ i0.ɵɵelementStart(0, "div", 52);
290
+ i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_2_Conditional_2_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r15); const match_r12 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.onViewAllOrganicKey(match_r12, $event)); });
299
291
  i0.ɵɵelementStart(1, "span");
300
292
  i0.ɵɵtext(2);
301
293
  i0.ɵɵelementEnd();
302
- i0.ɵɵelement(3, "i", 54);
294
+ i0.ɵɵelement(3, "i", 53);
303
295
  i0.ɵɵelementEnd();
304
296
  } if (rf & 2) {
305
297
  const match_r12 = i0.ɵɵnextContext(3).$implicit;
306
298
  i0.ɵɵadvance(2);
307
299
  i0.ɵɵtextInterpolate1("View all ", match_r12.count, " records");
308
300
  } }
309
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
310
- i0.ɵɵrepeaterCreate(0, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_2_For_1_Template, 6, 2, "div", 46, i0.ɵɵrepeaterTrackByIndex);
311
- i0.ɵɵconditionalCreate(2, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_2_Conditional_2_Template, 4, 1, "div", 47);
301
+ function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
302
+ i0.ɵɵrepeaterCreate(0, EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_2_For_1_Template, 6, 2, "div", 45, i0.ɵɵrepeaterTrackByIndex);
303
+ i0.ɵɵconditionalCreate(2, EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_2_Conditional_2_Template, 4, 1, "div", 46);
312
304
  } if (rf & 2) {
313
305
  const match_r12 = i0.ɵɵnextContext(2).$implicit;
314
306
  i0.ɵɵrepeater(match_r12.records);
315
307
  i0.ɵɵadvance(2);
316
308
  i0.ɵɵconditional(match_r12.count > 10 ? 2 : -1);
317
309
  } }
318
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
319
- i0.ɵɵelementStart(0, "div", 43);
320
- i0.ɵɵconditionalCreate(1, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_1_Template, 2, 0, "div", 44)(2, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Conditional_2_Template, 3, 1);
310
+ function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
311
+ i0.ɵɵelementStart(0, "div", 42);
312
+ i0.ɵɵconditionalCreate(1, EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_1_Template, 2, 0, "div", 43)(2, EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Conditional_2_Template, 3, 1);
321
313
  i0.ɵɵelementEnd();
322
314
  } if (rf & 2) {
323
315
  const match_r12 = i0.ɵɵnextContext().$implicit;
324
316
  i0.ɵɵadvance();
325
317
  i0.ɵɵconditional(match_r12.isLoadingRecords ? 1 : 2);
326
318
  } }
327
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Template(rf, ctx) { if (rf & 1) {
319
+ function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Template(rf, ctx) { if (rf & 1) {
328
320
  const _r11 = i0.ɵɵgetCurrentView();
329
- i0.ɵɵelementStart(0, "div", 38)(1, "div", 39);
330
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Template_div_click_1_listener($event) { const match_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleOrganicKeyExpansion(match_r12, $event)); });
331
- i0.ɵɵelement(2, "i", 40)(3, "i");
332
- i0.ɵɵelementStart(4, "span", 41);
321
+ i0.ɵɵelementStart(0, "div", 37)(1, "div", 38);
322
+ i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Template_div_click_1_listener($event) { const match_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.toggleOrganicKeyExpansion(match_r12, $event)); });
323
+ i0.ɵɵelement(2, "i", 39)(3, "i");
324
+ i0.ɵɵelementStart(4, "span", 40);
333
325
  i0.ɵɵtext(5);
334
326
  i0.ɵɵelementEnd();
335
- i0.ɵɵelementStart(6, "span", 42);
327
+ i0.ɵɵelementStart(6, "span", 41);
336
328
  i0.ɵɵtext(7);
337
329
  i0.ɵɵelementEnd()();
338
- i0.ɵɵconditionalCreate(8, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Conditional_8_Template, 3, 1, "div", 43);
330
+ i0.ɵɵconditionalCreate(8, EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Conditional_8_Template, 3, 1, "div", 42);
339
331
  i0.ɵɵelementEnd();
340
332
  } if (rf & 2) {
341
333
  const match_r12 = ctx.$implicit;
342
- const ctx_r0 = i0.ɵɵnextContext(4);
334
+ const ctx_r0 = i0.ɵɵnextContext(3);
343
335
  i0.ɵɵclassProp("expanded", match_r12.isExpanded);
344
336
  i0.ɵɵadvance();
345
337
  i0.ɵɵclassProp("clickable", match_r12.count > 0);
@@ -354,39 +346,25 @@ function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Condition
354
346
  i0.ɵɵadvance();
355
347
  i0.ɵɵconditional(match_r12.isExpanded ? 8 : -1);
356
348
  } }
357
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_Template(rf, ctx) { if (rf & 1) {
358
- i0.ɵɵrepeaterCreate(0, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_For_1_Template, 9, 13, "div", 37, _forTrack1);
359
- } if (rf & 2) {
360
- const ctx_r0 = i0.ɵɵnextContext(3);
361
- i0.ɵɵrepeater(ctx_r0.organicKeyMatchesWithRecords);
362
- } }
363
- function EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Template(rf, ctx) { if (rf & 1) {
364
- i0.ɵɵelementStart(0, "div", 13);
365
- i0.ɵɵconditionalCreate(1, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_1_Template, 2, 0, "div", 35)(2, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_2_Template, 2, 0, "div", 19)(3, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Conditional_3_Template, 2, 0);
366
- i0.ɵɵelementEnd();
349
+ function EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_Template(rf, ctx) { if (rf & 1) {
350
+ i0.ɵɵrepeaterCreate(0, EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_For_1_Template, 9, 13, "div", 36, _forTrack1);
367
351
  } if (rf & 2) {
368
352
  const ctx_r0 = i0.ɵɵnextContext(2);
369
- i0.ɵɵadvance();
370
- i0.ɵɵconditional(ctx_r0.isLoadingOrganicKeys ? 1 : ctx_r0.organicKeyMatchesWithRecords.length === 0 ? 2 : 3);
353
+ i0.ɵɵrepeater(ctx_r0.organicKeyMatchesWithRecords);
371
354
  } }
372
- function EntityRecordDetailPanelComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
355
+ function EntityRecordDetailPanelComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
373
356
  const _r10 = i0.ɵɵgetCurrentView();
374
- i0.ɵɵelementStart(0, "div", 8)(1, "div", 9);
375
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Conditional_23_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleSection("organicKeys")); });
376
- i0.ɵɵelement(2, "i", 55);
377
- i0.ɵɵelementStart(3, "span", 11);
378
- i0.ɵɵtext(4, "Organic Key Matches");
379
- i0.ɵɵelementEnd();
380
- i0.ɵɵelement(5, "i", 12);
381
- i0.ɵɵelementEnd();
382
- i0.ɵɵconditionalCreate(6, EntityRecordDetailPanelComponent_Conditional_23_Conditional_6_Template, 4, 1, "div", 13);
357
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 8);
358
+ i0.ɵɵtwoWayListener("ExpandedChange", function EntityRecordDetailPanelComponent_Conditional_19_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.organicKeysSectionExpanded, $event) || (ctx_r0.organicKeysSectionExpanded = $event); return i0.ɵɵresetView($event); });
359
+ i0.ɵɵtemplate(1, EntityRecordDetailPanelComponent_Conditional_19_ng_template_1_Template, 3, 0, "ng-template", 9);
360
+ i0.ɵɵconditionalCreate(2, EntityRecordDetailPanelComponent_Conditional_19_Conditional_2_Template, 2, 0, "div", 11)(3, EntityRecordDetailPanelComponent_Conditional_19_Conditional_3_Template, 1, 0, "mj-empty-state", 54)(4, EntityRecordDetailPanelComponent_Conditional_19_Conditional_4_Template, 2, 0);
383
361
  i0.ɵɵelementEnd();
384
362
  } if (rf & 2) {
385
363
  const ctx_r0 = i0.ɵɵnextContext();
386
- i0.ɵɵadvance(5);
387
- i0.ɵɵclassProp("fa-chevron-down", ctx_r0.organicKeysSectionExpanded)("fa-chevron-right", !ctx_r0.organicKeysSectionExpanded);
388
- i0.ɵɵadvance();
389
- i0.ɵɵconditional(ctx_r0.organicKeysSectionExpanded ? 6 : -1);
364
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r0.organicKeysSectionExpanded);
365
+ i0.ɵɵproperty("TitleIconMuted", true);
366
+ i0.ɵɵadvance(2);
367
+ i0.ɵɵconditional(ctx_r0.isLoadingOrganicKeys ? 2 : ctx_r0.organicKeyMatchesWithRecords.length === 0 ? 3 : 4);
390
368
  } }
391
369
  /**
392
370
  * EntityRecordDetailPanelComponent - A reusable panel for displaying entity record details
@@ -1024,20 +1002,6 @@ export class EntityRecordDetailPanelComponent extends BaseAngularComponent {
1024
1002
  }
1025
1003
  return '';
1026
1004
  }
1027
- /**
1028
- * Toggle section expansion
1029
- */
1030
- toggleSection(section) {
1031
- if (section === 'details') {
1032
- this.detailsSectionExpanded = !this.detailsSectionExpanded;
1033
- }
1034
- else if (section === 'relationships') {
1035
- this.relationshipsSectionExpanded = !this.relationshipsSectionExpanded;
1036
- }
1037
- else {
1038
- this.organicKeysSectionExpanded = !this.organicKeysSectionExpanded;
1039
- }
1040
- }
1041
1005
  /**
1042
1006
  * Get only related entities that have records (count > 0)
1043
1007
  */
@@ -1085,7 +1049,7 @@ export class EntityRecordDetailPanelComponent extends BaseAngularComponent {
1085
1049
  return `fa-solid fa-${icon}`;
1086
1050
  }
1087
1051
  static ɵfac = function EntityRecordDetailPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EntityRecordDetailPanelComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone)); };
1088
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityRecordDetailPanelComponent, selectors: [["mj-entity-record-detail-panel"]], inputs: { entity: "entity", record: "record" }, outputs: { close: "close", openRecord: "openRecord", navigateToRelated: "navigateToRelated", openRelatedRecord: "openRelatedRecord", openForeignKeyRecord: "openForeignKeyRecord" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 28, vars: 13, consts: [[1, "entity-record-card-container"], [1, "panel-header"], [1, "panel-title-row"], [1, "entity-icon", 3, "class"], [1, "panel-title"], ["title", "Close", "aria-label", "Close panel", 1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "panel-content"], [1, "section"], [1, "section-header", 3, "click"], [1, "fa-solid", "fa-info-circle", "section-icon"], [1, "section-title"], [1, "fa-solid", "expand-icon"], [1, "section-content"], [1, "fa-solid", "fa-project-diagram", "section-icon"], [1, "panel-footer"], [1, "open-record-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "entity-icon"], [1, "empty-section"], [1, "field-row", "field-row-pk"], [1, "field-row", "field-row-fk"], [1, "field-row"], [1, "pk-row"], [1, "fa-solid", "fa-key", "pk-icon"], [1, "field-label"], ["title", "Copy ID", 1, "copy-btn", 3, "click"], [1, "fa-solid", "fa-copy"], [1, "fk-value-row"], [1, "field-value", "fk-display-value"], [1, "field-value", "fk-id-value"], [1, "fk-link-btn", 3, "title"], [1, "fk-link-btn", 3, "click", "title"], [3, "value"], [1, "field-value"], [1, "relationships-loading"], ["text", "Loading related records...", "size", "small"], [1, "related-entity-group", 3, "expanded"], [1, "related-entity-group"], [1, "related-entity-header", 3, "click"], [1, "fa-solid", "expand-chevron"], [1, "related-entity-name"], [1, "related-entity-count"], [1, "related-records-list"], [1, "records-loading"], ["text", "Loading...", "size", "small"], [1, "related-record-item"], [1, "view-all-link"], [1, "related-record-item", 3, "click"], [1, "record-info"], [1, "record-name"], [1, "record-subtitle"], [1, "fa-solid", "fa-external-link-alt", "record-open-icon"], [1, "view-all-link", 3, "click"], [1, "fa-solid", "fa-arrow-right"], [1, "fa-solid", "fa-link", "section-icon"], ["text", "Loading organic key matches...", "size", "small"]], template: function EntityRecordDetailPanelComponent_Template(rf, ctx) { if (rf & 1) {
1052
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityRecordDetailPanelComponent, selectors: [["mj-entity-record-detail-panel"]], inputs: { entity: "entity", record: "record" }, outputs: { close: "close", openRecord: "openRecord", navigateToRelated: "navigateToRelated", openRelatedRecord: "openRelatedRecord", openForeignKeyRecord: "openForeignKeyRecord" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 24, vars: 9, consts: [[1, "entity-record-card-container"], [1, "panel-header"], [1, "panel-title-row"], [1, "entity-icon", 3, "class"], [1, "panel-title"], ["title", "Close", "aria-label", "Close panel", 1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "panel-content"], [3, "ExpandedChange", "Expanded", "TitleIconMuted"], ["mjAccordionTitle", ""], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No details available"], [1, "relationships-loading"], ["Size", "compact", "Icon", "fa-solid fa-diagram-project", "Title", "No related records"], [3, "Expanded", "TitleIconMuted"], [1, "panel-footer"], [1, "open-record-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "entity-icon"], [1, "fa-solid", "fa-info-circle"], [1, "field-row", "field-row-pk"], [1, "field-row", "field-row-fk"], [1, "field-row"], [1, "pk-row"], [1, "fa-solid", "fa-key", "pk-icon"], [1, "field-label"], ["title", "Copy ID", 1, "copy-btn", 3, "click"], [1, "fa-solid", "fa-copy"], [1, "fk-value-row"], [1, "field-value", "fk-display-value"], [1, "field-value", "fk-id-value"], [1, "fk-link-btn", 3, "title"], [1, "fk-link-btn", 3, "click", "title"], [3, "value"], [1, "field-value"], [1, "fa-solid", "fa-project-diagram"], ["text", "Loading related records...", "size", "small"], [1, "related-entity-group", 3, "expanded"], [1, "related-entity-group"], [1, "related-entity-header", 3, "click"], [1, "fa-solid", "expand-chevron"], [1, "related-entity-name"], [1, "related-entity-count"], [1, "related-records-list"], [1, "records-loading"], ["text", "Loading...", "size", "small"], [1, "related-record-item"], [1, "view-all-link"], [1, "related-record-item", 3, "click"], [1, "record-info"], [1, "record-name"], [1, "record-subtitle"], [1, "fa-solid", "fa-external-link-alt", "record-open-icon"], [1, "view-all-link", 3, "click"], [1, "fa-solid", "fa-arrow-right"], ["Size", "compact", "Icon", "fa-solid fa-link", "Title", "No organic key matches"], [1, "fa-solid", "fa-link"], ["text", "Loading organic key matches...", "size", "small"]], template: function EntityRecordDetailPanelComponent_Template(rf, ctx) { if (rf & 1) {
1089
1053
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
1090
1054
  i0.ɵɵconditionalCreate(3, EntityRecordDetailPanelComponent_Conditional_3_Template, 1, 2, "i", 3);
1091
1055
  i0.ɵɵelementStart(4, "h3", 4);
@@ -1095,53 +1059,48 @@ export class EntityRecordDetailPanelComponent extends BaseAngularComponent {
1095
1059
  i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Template_button_click_6_listener() { return ctx.onClose(); });
1096
1060
  i0.ɵɵelement(7, "i", 6);
1097
1061
  i0.ɵɵelementEnd()();
1098
- i0.ɵɵelementStart(8, "div", 7)(9, "div", 8)(10, "div", 9);
1099
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Template_div_click_10_listener() { return ctx.toggleSection("details"); });
1100
- i0.ɵɵelement(11, "i", 10);
1101
- i0.ɵɵelementStart(12, "span", 11);
1102
- i0.ɵɵtext(13, "Details");
1103
- i0.ɵɵelementEnd();
1104
- i0.ɵɵelement(14, "i", 12);
1105
- i0.ɵɵelementEnd();
1106
- i0.ɵɵconditionalCreate(15, EntityRecordDetailPanelComponent_Conditional_15_Template, 4, 1, "div", 13);
1107
- i0.ɵɵelementEnd();
1108
- i0.ɵɵelementStart(16, "div", 8)(17, "div", 9);
1109
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Template_div_click_17_listener() { return ctx.toggleSection("relationships"); });
1110
- i0.ɵɵelement(18, "i", 14);
1111
- i0.ɵɵelementStart(19, "span", 11);
1112
- i0.ɵɵtext(20, "Related Records");
1062
+ i0.ɵɵelementStart(8, "div", 7)(9, "mj-accordion-panel", 8);
1063
+ i0.ɵɵtwoWayListener("ExpandedChange", function EntityRecordDetailPanelComponent_Template_mj_accordion_panel_ExpandedChange_9_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.detailsSectionExpanded, $event) || (ctx.detailsSectionExpanded = $event); return $event; });
1064
+ i0.ɵɵtemplate(10, EntityRecordDetailPanelComponent_ng_template_10_Template, 3, 0, "ng-template", 9);
1065
+ i0.ɵɵrepeaterCreate(11, EntityRecordDetailPanelComponent_For_12_Template, 4, 1, null, null, _forTrack0);
1066
+ i0.ɵɵconditionalCreate(13, EntityRecordDetailPanelComponent_Conditional_13_Template, 1, 0, "mj-empty-state", 10);
1113
1067
  i0.ɵɵelementEnd();
1114
- i0.ɵɵelement(21, "i", 12);
1068
+ i0.ɵɵelementStart(14, "mj-accordion-panel", 8);
1069
+ i0.ɵɵtwoWayListener("ExpandedChange", function EntityRecordDetailPanelComponent_Template_mj_accordion_panel_ExpandedChange_14_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.relationshipsSectionExpanded, $event) || (ctx.relationshipsSectionExpanded = $event); return $event; });
1070
+ i0.ɵɵtemplate(15, EntityRecordDetailPanelComponent_ng_template_15_Template, 3, 0, "ng-template", 9);
1071
+ i0.ɵɵconditionalCreate(16, EntityRecordDetailPanelComponent_Conditional_16_Template, 2, 0, "div", 11)(17, EntityRecordDetailPanelComponent_Conditional_17_Template, 1, 0, "mj-empty-state", 12)(18, EntityRecordDetailPanelComponent_Conditional_18_Template, 2, 0);
1115
1072
  i0.ɵɵelementEnd();
1116
- i0.ɵɵconditionalCreate(22, EntityRecordDetailPanelComponent_Conditional_22_Template, 4, 1, "div", 13);
1073
+ i0.ɵɵconditionalCreate(19, EntityRecordDetailPanelComponent_Conditional_19_Template, 5, 3, "mj-accordion-panel", 13);
1117
1074
  i0.ɵɵelementEnd();
1118
- i0.ɵɵconditionalCreate(23, EntityRecordDetailPanelComponent_Conditional_23_Template, 7, 5, "div", 8);
1119
- i0.ɵɵelementEnd();
1120
- i0.ɵɵelementStart(24, "div", 15)(25, "button", 16);
1121
- i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Template_button_click_25_listener() { return ctx.onOpenRecord(); });
1122
- i0.ɵɵelement(26, "i", 17);
1123
- i0.ɵɵtext(27, " Open Full Record ");
1075
+ i0.ɵɵelementStart(20, "div", 14)(21, "button", 15);
1076
+ i0.ɵɵlistener("click", function EntityRecordDetailPanelComponent_Template_button_click_21_listener() { return ctx.onOpenRecord(); });
1077
+ i0.ɵɵelement(22, "i", 16);
1078
+ i0.ɵɵtext(23, " Open Full Record ");
1124
1079
  i0.ɵɵelementEnd()()();
1125
1080
  } if (rf & 2) {
1126
1081
  i0.ɵɵadvance(3);
1127
1082
  i0.ɵɵconditional((ctx.entity == null ? null : ctx.entity.Icon) ? 3 : -1);
1128
1083
  i0.ɵɵadvance(2);
1129
1084
  i0.ɵɵtextInterpolate(ctx.recordTitle);
1130
- i0.ɵɵadvance(9);
1131
- i0.ɵɵclassProp("fa-chevron-down", ctx.detailsSectionExpanded)("fa-chevron-right", !ctx.detailsSectionExpanded);
1132
- i0.ɵɵadvance();
1133
- i0.ɵɵconditional(ctx.detailsSectionExpanded ? 15 : -1);
1134
- i0.ɵɵadvance(6);
1135
- i0.ɵɵclassProp("fa-chevron-down", ctx.relationshipsSectionExpanded)("fa-chevron-right", !ctx.relationshipsSectionExpanded);
1136
- i0.ɵɵadvance();
1137
- i0.ɵɵconditional(ctx.relationshipsSectionExpanded ? 22 : -1);
1085
+ i0.ɵɵadvance(4);
1086
+ i0.ɵɵtwoWayProperty("Expanded", ctx.detailsSectionExpanded);
1087
+ i0.ɵɵproperty("TitleIconMuted", true);
1088
+ i0.ɵɵadvance(2);
1089
+ i0.ɵɵrepeater(ctx.displayFields);
1090
+ i0.ɵɵadvance(2);
1091
+ i0.ɵɵconditional(ctx.displayFields.length === 0 ? 13 : -1);
1138
1092
  i0.ɵɵadvance();
1139
- i0.ɵɵconditional(ctx.organicKeyMatches.length > 0 || ctx.isLoadingOrganicKeys ? 23 : -1);
1140
- } }, dependencies: [i1.LoadingComponent, i2.PillComponent], styles: [".entity-record-card-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface);\n}\n\n.panel-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);\n flex-shrink: 0;\n}\n\n.panel-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n flex: 1;\n}\n\n.entity-icon[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-text-muted);\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n.panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n}\n\n.section[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 20px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n.section-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.section-icon[_ngcontent-%COMP%] {\n width: 20px;\n font-size: 14px;\n color: var(--mj-text-muted);\n margin-right: 10px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.loading-icon[_ngcontent-%COMP%] {\n margin-right: 8px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: transform 0.15s ease;\n}\n\n.section-content[_ngcontent-%COMP%] {\n padding: 0 20px 12px 20px;\n}\n\n.empty-section[_ngcontent-%COMP%] {\n padding: 12px 0;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n font-style: italic;\n}\n\n.relationships-loading[_ngcontent-%COMP%] {\n padding: 20px 0;\n display: flex;\n justify-content: center;\n}\n\n.field-row[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n.field-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.field-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 2px;\n}\n\n.field-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n word-break: break-word;\n}\n\n\n\n.field-row-pk[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 6px 0;\n}\n\n.pk-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n\n.pk-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.pk-row[_ngcontent-%COMP%] .field-label[_ngcontent-%COMP%] {\n margin-bottom: 0;\n flex: 1;\n}\n\n.copy-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.copy-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.copy-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.field-row-fk[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.fk-value-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fk-display-value[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.fk-link-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.fk-link-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.fk-link-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.fk-id-only[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n padding: 4px 8px;\n}\n\n.fk-id-value[_ngcontent-%COMP%] {\n font-size: 12px;\n font-family: monospace;\n color: var(--mj-text-muted);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.related-entity-group[_ngcontent-%COMP%] {\n margin-bottom: 4px;\n border-radius: 6px;\n overflow: hidden;\n}\n.related-entity-group.expanded[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n margin-bottom: 8px;\n}\n\n\n\n.related-entity-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n gap: 8px;\n transition: background 0.15s ease;\n}\n.related-entity-header.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n.related-entity-header.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n.related-entity-header.loading[_ngcontent-%COMP%] {\n opacity: 0.7;\n}\n\n.expand-chevron[_ngcontent-%COMP%] {\n width: 12px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: transform 0.15s ease;\n}\n\n.related-entity-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:nth-child(2) {\n width: 16px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.related-entity-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.related-entity-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n min-width: 24px;\n text-align: right;\n}\n\n\n\n.related-records-list[_ngcontent-%COMP%] {\n padding: 4px 8px 8px 32px;\n}\n\n.records-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 0;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.related-record-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n margin-bottom: 2px;\n background: var(--mj-bg-surface);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n border: 1px solid var(--mj-border-default);\n}\n.related-record-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 1px 4px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.related-record-item[_ngcontent-%COMP%]:hover .record-open-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.record-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.record-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.record-subtitle[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.record-open-icon[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-left: 8px;\n flex-shrink: 0;\n transition: color 0.15s ease;\n}\n\n.view-all-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 10px;\n margin-top: 4px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n.view-all-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.panel-footer[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.open-record-btn[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px 16px;\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: all 0.15s ease;\n}\n.open-record-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n.open-record-btn[_ngcontent-%COMP%]:active {\n transform: scale(0.98);\n}"] });
1093
+ i0.ɵɵtwoWayProperty("Expanded", ctx.relationshipsSectionExpanded);
1094
+ i0.ɵɵproperty("TitleIconMuted", true);
1095
+ i0.ɵɵadvance(2);
1096
+ i0.ɵɵconditional(ctx.isLoadingRelationships ? 16 : ctx.relatedEntitiesWithRecords.length === 0 ? 17 : 18);
1097
+ i0.ɵɵadvance(3);
1098
+ i0.ɵɵconditional(ctx.organicKeyMatches.length > 0 || ctx.isLoadingOrganicKeys ? 19 : -1);
1099
+ } }, dependencies: [i1.LoadingComponent, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJEmptyStateComponent, i3.PillComponent], styles: [".entity-record-card-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface);\n}\n\n.panel-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);\n flex-shrink: 0;\n}\n\n.panel-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n flex: 1;\n}\n\n.entity-icon[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-text-muted);\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n.panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n}\n\n\n\n\n.loading-icon[_ngcontent-%COMP%] {\n margin-right: 8px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.relationships-loading[_ngcontent-%COMP%] {\n padding: 20px 0;\n display: flex;\n justify-content: center;\n}\n\n.field-row[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n.field-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.field-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 2px;\n}\n\n.field-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n word-break: break-word;\n}\n\n\n\n.field-row-pk[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 6px 0;\n}\n\n.pk-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n\n.pk-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.pk-row[_ngcontent-%COMP%] .field-label[_ngcontent-%COMP%] {\n margin-bottom: 0;\n flex: 1;\n}\n\n.copy-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.copy-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.copy-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.field-row-fk[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.fk-value-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fk-display-value[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.fk-link-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.fk-link-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.fk-link-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.fk-id-only[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n padding: 4px 8px;\n}\n\n.fk-id-value[_ngcontent-%COMP%] {\n font-size: 12px;\n font-family: monospace;\n color: var(--mj-text-muted);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.related-entity-group[_ngcontent-%COMP%] {\n margin-bottom: 4px;\n border-radius: 6px;\n overflow: hidden;\n}\n.related-entity-group.expanded[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n margin-bottom: 8px;\n}\n\n\n\n.related-entity-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n gap: 8px;\n transition: background 0.15s ease;\n}\n.related-entity-header.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n.related-entity-header.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n.related-entity-header.loading[_ngcontent-%COMP%] {\n opacity: 0.7;\n}\n\n.expand-chevron[_ngcontent-%COMP%] {\n width: 12px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: transform 0.15s ease;\n}\n\n.related-entity-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:nth-child(2) {\n width: 16px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.related-entity-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.related-entity-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n min-width: 24px;\n text-align: right;\n}\n\n\n\n.related-records-list[_ngcontent-%COMP%] {\n padding: 4px 8px 8px 32px;\n}\n\n.records-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 0;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.related-record-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n margin-bottom: 2px;\n background: var(--mj-bg-surface);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n border: 1px solid var(--mj-border-default);\n}\n.related-record-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 1px 4px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.related-record-item[_ngcontent-%COMP%]:hover .record-open-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.record-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.record-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.record-subtitle[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.record-open-icon[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-left: 8px;\n flex-shrink: 0;\n transition: color 0.15s ease;\n}\n\n.view-all-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 10px;\n margin-top: 4px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n.view-all-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.panel-footer[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.open-record-btn[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px 16px;\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: all 0.15s ease;\n}\n.open-record-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n.open-record-btn[_ngcontent-%COMP%]:active {\n transform: scale(0.98);\n}"] });
1141
1100
  }
1142
1101
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityRecordDetailPanelComponent, [{
1143
1102
  type: Component,
1144
- args: [{ standalone: false, selector: 'mj-entity-record-detail-panel', template: "<div class=\"entity-record-card-container\">\n <!-- Header -->\n <div class=\"panel-header\">\n <div class=\"panel-title-row\">\n @if (entity?.Icon) {\n <i [class]=\"getEntityIconClass()\" class=\"entity-icon\"></i>\n }\n <h3 class=\"panel-title\">{{ recordTitle }}</h3>\n </div>\n <button class=\"close-btn\" (click)=\"onClose()\" title=\"Close\" aria-label=\"Close panel\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"panel-content\">\n <!-- Details Section -->\n <div class=\"section\">\n <div class=\"section-header\" (click)=\"toggleSection('details')\">\n <i class=\"fa-solid fa-info-circle section-icon\"></i>\n <span class=\"section-title\">Details</span>\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"detailsSectionExpanded\" [class.fa-chevron-right]=\"!detailsSectionExpanded\"></i>\n </div>\n\n @if (detailsSectionExpanded) {\n <div class=\"section-content\">\n @for (field of displayFields; track field.name) {\n <!-- Primary Key Field - Compact with copy button -->\n @if (field.type === 'primary-key') {\n <div class=\"field-row field-row-pk\">\n <div class=\"pk-row\">\n <i class=\"fa-solid fa-key pk-icon\"></i>\n <span class=\"field-label\">{{ field.label }}</span>\n <button class=\"copy-btn\" (click)=\"copyToClipboard(field.value, $event)\" title=\"Copy ID\">\n <i class=\"fa-solid fa-copy\"></i>\n </button>\n </div>\n </div>\n }\n <!-- Foreign Key Field - Show friendly name with open button -->\n @else if (field.type === 'foreign-key') {\n <div class=\"field-row field-row-fk\">\n <span class=\"field-label\">{{ field.label }}</span>\n <div class=\"fk-value-row\" [class.fk-id-only]=\"!hasFriendlyName(field)\">\n @if (hasFriendlyName(field)) {\n <span class=\"field-value fk-display-value\">{{ field.displayValue }}</span>\n } @else {\n <!-- No friendly name available, show ID in muted style -->\n <span class=\"field-value fk-id-value\">{{ field.value }}</span>\n }\n <!-- Always show open button for FK fields that have a related entity -->\n @if (field.relatedEntityName) {\n <button class=\"fk-link-btn\" (click)=\"onForeignKeyClick(field, $event)\" title=\"Open {{ field.relatedEntityName }} record\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n }\n </div>\n </div>\n }\n <!-- Enum Field - Show as pill -->\n @else if (field.type === 'enum') {\n <div class=\"field-row\">\n <span class=\"field-label\">{{ field.label }}</span>\n <mj-pill [value]=\"field.value\"></mj-pill>\n </div>\n }\n <!-- Regular Field -->\n @else {\n <div class=\"field-row\">\n <span class=\"field-label\">{{ field.label }}</span>\n <span class=\"field-value\">{{ field.value }}</span>\n </div>\n }\n }\n\n @if (displayFields.length === 0) {\n <div class=\"empty-section\">No details available</div>\n }\n </div>\n }\n </div>\n\n <!-- Relationships Section -->\n <div class=\"section\">\n <div class=\"section-header\" (click)=\"toggleSection('relationships')\">\n <i class=\"fa-solid fa-project-diagram section-icon\"></i>\n <span class=\"section-title\">Related Records</span>\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"relationshipsSectionExpanded\" [class.fa-chevron-right]=\"!relationshipsSectionExpanded\"></i>\n </div>\n\n @if (relationshipsSectionExpanded) {\n <div class=\"section-content\">\n @if (isLoadingRelationships) {\n <div class=\"relationships-loading\">\n <mj-loading text=\"Loading related records...\" size=\"small\"></mj-loading>\n </div>\n } @else if (relatedEntitiesWithRecords.length === 0) {\n <div class=\"empty-section\">No related records</div>\n } @else {\n @for (relEntity of relatedEntitiesWithRecords; track relEntity.relatedEntityName) {\n <div class=\"related-entity-group\" [class.expanded]=\"relEntity.isExpanded\">\n <!-- Header row - click to expand -->\n <div\n class=\"related-entity-header\"\n [class.clickable]=\"relEntity.count > 0\"\n (click)=\"toggleRelatedEntityExpansion(relEntity, $event)\">\n <i class=\"fa-solid expand-chevron\"\n [class.fa-chevron-down]=\"relEntity.isExpanded\"\n [class.fa-chevron-right]=\"!relEntity.isExpanded\"></i>\n <i [class]=\"getRelatedEntityIcon(relEntity)\"></i>\n <span class=\"related-entity-name\">{{ relEntity.relatedEntityName }}</span>\n <span class=\"related-entity-count\">{{ relEntity.count }}</span>\n </div>\n\n <!-- Expanded records list -->\n @if (relEntity.isExpanded) {\n <div class=\"related-records-list\">\n @if (relEntity.isLoadingRecords) {\n <div class=\"records-loading\">\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n @for (rec of relEntity.records; track $index) {\n <div class=\"related-record-item\" (click)=\"onRelatedRecordClick(relEntity, rec, $event)\">\n <div class=\"record-info\">\n <span class=\"record-name\">{{ getRelatedRecordDisplayName(relEntity, rec) }}</span>\n @if (getRelatedRecordSubtitle(relEntity, rec); as subtitle) {\n <span class=\"record-subtitle\">{{ subtitle }}</span>\n }\n </div>\n <i class=\"fa-solid fa-external-link-alt record-open-icon\"></i>\n </div>\n }\n\n <!-- View All link if there are more records -->\n @if (relEntity.count > 10) {\n <div class=\"view-all-link\" (click)=\"onViewAllRelated(relEntity, $event)\">\n <span>View all {{ relEntity.count }} records</span>\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n\n <!-- Organic Key Matches Section -->\n @if (organicKeyMatches.length > 0 || isLoadingOrganicKeys) {\n <div class=\"section\">\n <div class=\"section-header\" (click)=\"toggleSection('organicKeys')\">\n <i class=\"fa-solid fa-link section-icon\"></i>\n <span class=\"section-title\">Organic Key Matches</span>\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"organicKeysSectionExpanded\" [class.fa-chevron-right]=\"!organicKeysSectionExpanded\"></i>\n </div>\n\n @if (organicKeysSectionExpanded) {\n <div class=\"section-content\">\n @if (isLoadingOrganicKeys) {\n <div class=\"relationships-loading\">\n <mj-loading text=\"Loading organic key matches...\" size=\"small\"></mj-loading>\n </div>\n } @else if (organicKeyMatchesWithRecords.length === 0) {\n <div class=\"empty-section\">No organic key matches</div>\n } @else {\n @for (match of organicKeyMatchesWithRecords; track match.relatedEntityName) {\n <div class=\"related-entity-group\" [class.expanded]=\"match.isExpanded\">\n <div\n class=\"related-entity-header\"\n [class.clickable]=\"match.count > 0\"\n (click)=\"toggleOrganicKeyExpansion(match, $event)\">\n <i class=\"fa-solid expand-chevron\"\n [class.fa-chevron-down]=\"match.isExpanded\"\n [class.fa-chevron-right]=\"!match.isExpanded\"></i>\n <i [class]=\"getOrganicKeyEntityIcon(match)\"></i>\n <span class=\"related-entity-name\">{{ match.relatedEntityName }}</span>\n <span class=\"related-entity-count\">{{ match.count }}</span>\n </div>\n\n @if (match.isExpanded) {\n <div class=\"related-records-list\">\n @if (match.isLoadingRecords) {\n <div class=\"records-loading\">\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n @for (rec of match.records; track $index) {\n <div class=\"related-record-item\" (click)=\"onOrganicKeyRecordClick(match, rec, $event)\">\n <div class=\"record-info\">\n <span class=\"record-name\">{{ getOrganicKeyRecordDisplayName(match, rec) }}</span>\n @if (getOrganicKeyRecordSubtitle(match, rec); as subtitle) {\n <span class=\"record-subtitle\">{{ subtitle }}</span>\n }\n </div>\n <i class=\"fa-solid fa-external-link-alt record-open-icon\"></i>\n </div>\n }\n\n @if (match.count > 10) {\n <div class=\"view-all-link\" (click)=\"onViewAllOrganicKey(match, $event)\">\n <span>View all {{ match.count }} records</span>\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Footer -->\n <div class=\"panel-footer\">\n <button class=\"open-record-btn\" (click)=\"onOpenRecord()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n Open Full Record\n </button>\n </div>\n</div>\n", styles: [".entity-record-card-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface);\n}\n\n.panel-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);\n flex-shrink: 0;\n}\n\n.panel-title-row {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n flex: 1;\n}\n\n.entity-icon {\n font-size: 18px;\n color: var(--mj-text-muted);\n flex-shrink: 0;\n}\n\n.panel-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.close-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.close-btn:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n.panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n}\n\n.section {\n margin-bottom: 8px;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n padding: 12px 20px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n.section-header:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.section-icon {\n width: 20px;\n font-size: 14px;\n color: var(--mj-text-muted);\n margin-right: 10px;\n}\n\n.section-title {\n flex: 1;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.loading-icon {\n margin-right: 8px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.expand-icon {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: transform 0.15s ease;\n}\n\n.section-content {\n padding: 0 20px 12px 20px;\n}\n\n.empty-section {\n padding: 12px 0;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n font-style: italic;\n}\n\n.relationships-loading {\n padding: 20px 0;\n display: flex;\n justify-content: center;\n}\n\n.field-row {\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n.field-row:last-child {\n border-bottom: none;\n}\n\n.field-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 2px;\n}\n\n.field-value {\n font-size: 14px;\n color: var(--mj-text-secondary);\n word-break: break-word;\n}\n\n/* Primary Key Field - Compact row with key icon and copy button */\n.field-row-pk {\n flex-direction: row;\n padding: 6px 0;\n}\n\n.pk-row {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n\n.pk-icon {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.pk-row .field-label {\n margin-bottom: 0;\n flex: 1;\n}\n\n.copy-btn {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.copy-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.copy-btn i {\n font-size: 12px;\n}\n\n/* Foreign Key Field - Display name with link button */\n.field-row-fk {\n padding: 8px 0;\n}\n\n.fk-value-row {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fk-display-value {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.fk-link-btn {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.fk-link-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.fk-link-btn i {\n font-size: 11px;\n}\n\n/* FK without friendly name - show ID in muted style */\n.fk-id-only {\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n padding: 4px 8px;\n}\n\n.fk-id-value {\n font-size: 12px;\n font-family: monospace;\n color: var(--mj-text-muted);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Related Entity Group - expandable container */\n.related-entity-group {\n margin-bottom: 4px;\n border-radius: 6px;\n overflow: hidden;\n}\n.related-entity-group.expanded {\n background: var(--mj-bg-surface-card);\n margin-bottom: 8px;\n}\n\n/* Header row */\n.related-entity-header {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n gap: 8px;\n transition: background 0.15s ease;\n}\n.related-entity-header.clickable {\n cursor: pointer;\n}\n.related-entity-header.clickable:hover {\n background: var(--mj-bg-surface-sunken);\n}\n.related-entity-header.loading {\n opacity: 0.7;\n}\n\n.expand-chevron {\n width: 12px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: transform 0.15s ease;\n}\n\n.related-entity-header i:nth-child(2) {\n width: 16px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.related-entity-name {\n flex: 1;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.related-entity-count {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n min-width: 24px;\n text-align: right;\n}\n\n/* Expanded records list */\n.related-records-list {\n padding: 4px 8px 8px 32px;\n}\n\n.records-loading {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 0;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.related-record-item {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n margin-bottom: 2px;\n background: var(--mj-bg-surface);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n border: 1px solid var(--mj-border-default);\n}\n.related-record-item:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 1px 4px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.related-record-item:hover .record-open-icon {\n color: var(--mj-brand-primary);\n}\n\n.record-info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.record-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.record-subtitle {\n font-size: 11px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.record-open-icon {\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-left: 8px;\n flex-shrink: 0;\n transition: color 0.15s ease;\n}\n\n.view-all-link {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 10px;\n margin-top: 4px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n.view-all-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.panel-footer {\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.open-record-btn {\n width: 100%;\n padding: 12px 16px;\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: all 0.15s ease;\n}\n.open-record-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n.open-record-btn:active {\n transform: scale(0.98);\n}\n"] }]
1103
+ args: [{ standalone: false, selector: 'mj-entity-record-detail-panel', template: "<div class=\"entity-record-card-container\">\n <!-- Header -->\n <div class=\"panel-header\">\n <div class=\"panel-title-row\">\n @if (entity?.Icon) {\n <i [class]=\"getEntityIconClass()\" class=\"entity-icon\"></i>\n }\n <h3 class=\"panel-title\">{{ recordTitle }}</h3>\n </div>\n <button class=\"close-btn\" (click)=\"onClose()\" title=\"Close\" aria-label=\"Close panel\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"panel-content\">\n <!-- Details Section -->\n <mj-accordion-panel [(Expanded)]=\"detailsSectionExpanded\" [TitleIconMuted]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>Details</span>\n </ng-template>\n\n @for (field of displayFields; track field.name) {\n <!-- Primary Key Field - Compact with copy button -->\n @if (field.type === 'primary-key') {\n <div class=\"field-row field-row-pk\">\n <div class=\"pk-row\">\n <i class=\"fa-solid fa-key pk-icon\"></i>\n <span class=\"field-label\">{{ field.label }}</span>\n <button class=\"copy-btn\" (click)=\"copyToClipboard(field.value, $event)\" title=\"Copy ID\">\n <i class=\"fa-solid fa-copy\"></i>\n </button>\n </div>\n </div>\n }\n <!-- Foreign Key Field - Show friendly name with open button -->\n @else if (field.type === 'foreign-key') {\n <div class=\"field-row field-row-fk\">\n <span class=\"field-label\">{{ field.label }}</span>\n <div class=\"fk-value-row\" [class.fk-id-only]=\"!hasFriendlyName(field)\">\n @if (hasFriendlyName(field)) {\n <span class=\"field-value fk-display-value\">{{ field.displayValue }}</span>\n } @else {\n <!-- No friendly name available, show ID in muted style -->\n <span class=\"field-value fk-id-value\">{{ field.value }}</span>\n }\n <!-- Always show open button for FK fields that have a related entity -->\n @if (field.relatedEntityName) {\n <button class=\"fk-link-btn\" (click)=\"onForeignKeyClick(field, $event)\" title=\"Open {{ field.relatedEntityName }} record\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n }\n </div>\n </div>\n }\n <!-- Enum Field - Show as pill -->\n @else if (field.type === 'enum') {\n <div class=\"field-row\">\n <span class=\"field-label\">{{ field.label }}</span>\n <mj-pill [value]=\"field.value\"></mj-pill>\n </div>\n }\n <!-- Regular Field -->\n @else {\n <div class=\"field-row\">\n <span class=\"field-label\">{{ field.label }}</span>\n <span class=\"field-value\">{{ field.value }}</span>\n </div>\n }\n }\n\n @if (displayFields.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No details available\" />\n }\n </mj-accordion-panel>\n\n <!-- Relationships Section -->\n <mj-accordion-panel [(Expanded)]=\"relationshipsSectionExpanded\" [TitleIconMuted]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-project-diagram\"></i>\n <span>Related Records</span>\n </ng-template>\n\n @if (isLoadingRelationships) {\n <div class=\"relationships-loading\">\n <mj-loading text=\"Loading related records...\" size=\"small\"></mj-loading>\n </div>\n } @else if (relatedEntitiesWithRecords.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-diagram-project\"\n Title=\"No related records\" />\n } @else {\n @for (relEntity of relatedEntitiesWithRecords; track relEntity.relatedEntityName) {\n <div class=\"related-entity-group\" [class.expanded]=\"relEntity.isExpanded\">\n <!-- Header row - click to expand -->\n <div\n class=\"related-entity-header\"\n [class.clickable]=\"relEntity.count > 0\"\n (click)=\"toggleRelatedEntityExpansion(relEntity, $event)\">\n <i class=\"fa-solid expand-chevron\"\n [class.fa-chevron-down]=\"relEntity.isExpanded\"\n [class.fa-chevron-right]=\"!relEntity.isExpanded\"></i>\n <i [class]=\"getRelatedEntityIcon(relEntity)\"></i>\n <span class=\"related-entity-name\">{{ relEntity.relatedEntityName }}</span>\n <span class=\"related-entity-count\">{{ relEntity.count }}</span>\n </div>\n\n <!-- Expanded records list -->\n @if (relEntity.isExpanded) {\n <div class=\"related-records-list\">\n @if (relEntity.isLoadingRecords) {\n <div class=\"records-loading\">\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n @for (rec of relEntity.records; track $index) {\n <div class=\"related-record-item\" (click)=\"onRelatedRecordClick(relEntity, rec, $event)\">\n <div class=\"record-info\">\n <span class=\"record-name\">{{ getRelatedRecordDisplayName(relEntity, rec) }}</span>\n @if (getRelatedRecordSubtitle(relEntity, rec); as subtitle) {\n <span class=\"record-subtitle\">{{ subtitle }}</span>\n }\n </div>\n <i class=\"fa-solid fa-external-link-alt record-open-icon\"></i>\n </div>\n }\n\n <!-- View All link if there are more records -->\n @if (relEntity.count > 10) {\n <div class=\"view-all-link\" (click)=\"onViewAllRelated(relEntity, $event)\">\n <span>View all {{ relEntity.count }} records</span>\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n }\n </mj-accordion-panel>\n\n <!-- Organic Key Matches Section -->\n @if (organicKeyMatches.length > 0 || isLoadingOrganicKeys) {\n <mj-accordion-panel [(Expanded)]=\"organicKeysSectionExpanded\" [TitleIconMuted]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-link\"></i>\n <span>Organic Key Matches</span>\n </ng-template>\n\n @if (isLoadingOrganicKeys) {\n <div class=\"relationships-loading\">\n <mj-loading text=\"Loading organic key matches...\" size=\"small\"></mj-loading>\n </div>\n } @else if (organicKeyMatchesWithRecords.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-link\"\n Title=\"No organic key matches\" />\n } @else {\n @for (match of organicKeyMatchesWithRecords; track match.relatedEntityName) {\n <div class=\"related-entity-group\" [class.expanded]=\"match.isExpanded\">\n <div\n class=\"related-entity-header\"\n [class.clickable]=\"match.count > 0\"\n (click)=\"toggleOrganicKeyExpansion(match, $event)\">\n <i class=\"fa-solid expand-chevron\"\n [class.fa-chevron-down]=\"match.isExpanded\"\n [class.fa-chevron-right]=\"!match.isExpanded\"></i>\n <i [class]=\"getOrganicKeyEntityIcon(match)\"></i>\n <span class=\"related-entity-name\">{{ match.relatedEntityName }}</span>\n <span class=\"related-entity-count\">{{ match.count }}</span>\n </div>\n\n @if (match.isExpanded) {\n <div class=\"related-records-list\">\n @if (match.isLoadingRecords) {\n <div class=\"records-loading\">\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n @for (rec of match.records; track $index) {\n <div class=\"related-record-item\" (click)=\"onOrganicKeyRecordClick(match, rec, $event)\">\n <div class=\"record-info\">\n <span class=\"record-name\">{{ getOrganicKeyRecordDisplayName(match, rec) }}</span>\n @if (getOrganicKeyRecordSubtitle(match, rec); as subtitle) {\n <span class=\"record-subtitle\">{{ subtitle }}</span>\n }\n </div>\n <i class=\"fa-solid fa-external-link-alt record-open-icon\"></i>\n </div>\n }\n\n @if (match.count > 10) {\n <div class=\"view-all-link\" (click)=\"onViewAllOrganicKey(match, $event)\">\n <span>View all {{ match.count }} records</span>\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n }\n </mj-accordion-panel>\n }\n </div>\n\n <!-- Footer -->\n <div class=\"panel-footer\">\n <button class=\"open-record-btn\" (click)=\"onOpenRecord()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n Open Full Record\n </button>\n </div>\n</div>\n", styles: [".entity-record-card-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface);\n}\n\n.panel-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);\n flex-shrink: 0;\n}\n\n.panel-title-row {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n flex: 1;\n}\n\n.entity-icon {\n font-size: 18px;\n color: var(--mj-text-muted);\n flex-shrink: 0;\n}\n\n.panel-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.close-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.close-btn:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n.panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n}\n\n/* Section header / chevron / title / icon / body chrome is fully provided by\n <mj-accordion-panel> (muted icons via [TitleIconMuted]). No bespoke chrome here. */\n.loading-icon {\n margin-right: 8px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.relationships-loading {\n padding: 20px 0;\n display: flex;\n justify-content: center;\n}\n\n.field-row {\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n.field-row:last-child {\n border-bottom: none;\n}\n\n.field-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 2px;\n}\n\n.field-value {\n font-size: 14px;\n color: var(--mj-text-secondary);\n word-break: break-word;\n}\n\n/* Primary Key Field - Compact row with key icon and copy button */\n.field-row-pk {\n flex-direction: row;\n padding: 6px 0;\n}\n\n.pk-row {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n\n.pk-icon {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.pk-row .field-label {\n margin-bottom: 0;\n flex: 1;\n}\n\n.copy-btn {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.copy-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.copy-btn i {\n font-size: 12px;\n}\n\n/* Foreign Key Field - Display name with link button */\n.field-row-fk {\n padding: 8px 0;\n}\n\n.fk-value-row {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fk-display-value {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.fk-link-btn {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n.fk-link-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.fk-link-btn i {\n font-size: 11px;\n}\n\n/* FK without friendly name - show ID in muted style */\n.fk-id-only {\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n padding: 4px 8px;\n}\n\n.fk-id-value {\n font-size: 12px;\n font-family: monospace;\n color: var(--mj-text-muted);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Related Entity Group - expandable container */\n.related-entity-group {\n margin-bottom: 4px;\n border-radius: 6px;\n overflow: hidden;\n}\n.related-entity-group.expanded {\n background: var(--mj-bg-surface-card);\n margin-bottom: 8px;\n}\n\n/* Header row */\n.related-entity-header {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n gap: 8px;\n transition: background 0.15s ease;\n}\n.related-entity-header.clickable {\n cursor: pointer;\n}\n.related-entity-header.clickable:hover {\n background: var(--mj-bg-surface-sunken);\n}\n.related-entity-header.loading {\n opacity: 0.7;\n}\n\n.expand-chevron {\n width: 12px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: transform 0.15s ease;\n}\n\n.related-entity-header i:nth-child(2) {\n width: 16px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.related-entity-name {\n flex: 1;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.related-entity-count {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n min-width: 24px;\n text-align: right;\n}\n\n/* Expanded records list */\n.related-records-list {\n padding: 4px 8px 8px 32px;\n}\n\n.records-loading {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 0;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.related-record-item {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n margin-bottom: 2px;\n background: var(--mj-bg-surface);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n border: 1px solid var(--mj-border-default);\n}\n.related-record-item:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 1px 4px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.related-record-item:hover .record-open-icon {\n color: var(--mj-brand-primary);\n}\n\n.record-info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.record-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.record-subtitle {\n font-size: 11px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.record-open-icon {\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-left: 8px;\n flex-shrink: 0;\n transition: color 0.15s ease;\n}\n\n.view-all-link {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 10px;\n margin-top: 4px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n.view-all-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.panel-footer {\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.open-record-btn {\n width: 100%;\n padding: 12px 16px;\n border: none;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: all 0.15s ease;\n}\n.open-record-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n.open-record-btn:active {\n transform: scale(0.98);\n}\n"] }]
1145
1104
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], { entity: [{
1146
1105
  type: Input
1147
1106
  }], record: [{