@memberjunction/ng-entity-viewer 5.43.0 → 5.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/aggregate-panel/aggregate-panel.component.d.ts +5 -0
- package/dist/lib/aggregate-panel/aggregate-panel.component.d.ts.map +1 -1
- package/dist/lib/aggregate-panel/aggregate-panel.component.js +45 -47
- package/dist/lib/aggregate-panel/aggregate-panel.component.js.map +1 -1
- package/dist/lib/entity-cards/entity-cards.component.js +7 -10
- package/dist/lib/entity-cards/entity-cards.component.js.map +1 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts +10 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts.map +1 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.js +35 -34
- package/dist/lib/entity-data-grid/entity-data-grid.component.js.map +1 -1
- package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.d.ts +0 -4
- package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.d.ts.map +1 -1
- package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js +166 -207
- package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.d.ts +109 -5
- package/dist/lib/entity-viewer/entity-viewer.component.d.ts.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.js +287 -42
- package/dist/lib/entity-viewer/entity-viewer.component.js.map +1 -1
- package/dist/lib/recycle-bin/recycle-bin.component.js +21 -44
- package/dist/lib/recycle-bin/recycle-bin.component.js.map +1 -1
- package/dist/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.js +19 -20
- package/dist/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.js.map +1 -1
- package/dist/lib/view-config-panel/view-config-panel.component.js +268 -301
- package/dist/lib/view-config-panel/view-config-panel.component.js.map +1 -1
- package/dist/lib/view-selector/view-selector.component.d.ts +26 -1
- package/dist/lib/view-selector/view-selector.component.d.ts.map +1 -1
- package/dist/lib/view-selector/view-selector.component.js +118 -76
- package/dist/lib/view-selector/view-selector.component.js.map +1 -1
- package/dist/lib/view-types/descriptors/grid-view-type.d.ts +7 -0
- package/dist/lib/view-types/descriptors/grid-view-type.d.ts.map +1 -1
- package/dist/lib/view-types/descriptors/grid-view-type.js +7 -0
- package/dist/lib/view-types/descriptors/grid-view-type.js.map +1 -1
- package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts +18 -1
- package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts.map +1 -1
- package/dist/lib/view-types/renderers/grid-view-renderer.component.js +29 -3
- package/dist/lib/view-types/renderers/grid-view-renderer.component.js.map +1 -1
- package/dist/lib/view-types/renderers/map-view-renderer.component.d.ts.map +1 -1
- package/dist/lib/view-types/renderers/map-view-renderer.component.js +11 -14
- package/dist/lib/view-types/renderers/map-view-renderer.component.js.map +1 -1
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.d.ts.map +1 -1
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.js +12 -14
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.js.map +1 -1
- package/dist/lib/view-types/view-type.contracts.d.ts +44 -0
- package/dist/lib/view-types/view-type.contracts.d.ts.map +1 -1
- package/dist/lib/view-types/view-type.contracts.js +6 -0
- package/dist/lib/view-types/view-type.contracts.js.map +1 -1
- package/dist/lib/view-workspace/view-workspace.component.d.ts +32 -1
- package/dist/lib/view-workspace/view-workspace.component.d.ts.map +1 -1
- package/dist/lib/view-workspace/view-workspace.component.js +68 -7
- package/dist/lib/view-workspace/view-workspace.component.js.map +1 -1
- package/dist/module.d.ts +1 -1
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +10 -1
- package/dist/module.js.map +1 -1
- package/package.json +18 -17
- package/dist/__tests__/entity-cards-selection.test.d.ts +0 -2
- package/dist/__tests__/entity-cards-selection.test.d.ts.map +0 -1
- package/dist/__tests__/entity-cards-selection.test.js +0 -149
- package/dist/__tests__/entity-cards-selection.test.js.map +0 -1
- package/dist/__tests__/entity-cards-viewmodel.test.d.ts +0 -2
- package/dist/__tests__/entity-cards-viewmodel.test.d.ts.map +0 -1
- package/dist/__tests__/entity-cards-viewmodel.test.js +0 -208
- package/dist/__tests__/entity-cards-viewmodel.test.js.map +0 -1
- package/dist/__tests__/highlight.test.d.ts +0 -2
- package/dist/__tests__/highlight.test.d.ts.map +0 -1
- package/dist/__tests__/highlight.test.js +0 -67
- package/dist/__tests__/highlight.test.js.map +0 -1
- package/dist/__tests__/index.test.d.ts +0 -2
- package/dist/__tests__/index.test.d.ts.map +0 -1
- package/dist/__tests__/index.test.js +0 -7
- package/dist/__tests__/index.test.js.map +0 -1
- package/dist/__tests__/view-types.test.d.ts +0 -2
- package/dist/__tests__/view-types.test.d.ts.map +0 -1
- package/dist/__tests__/view-types.test.js +0 -102
- 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 "
|
|
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",
|
|
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
|
|
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",
|
|
19
|
-
i0.ɵɵelement(2, "i",
|
|
20
|
-
i0.ɵɵelementStart(3, "span",
|
|
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",
|
|
24
|
-
i0.ɵɵlistener("click", function
|
|
25
|
-
i0.ɵɵelement(6, "i",
|
|
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
|
|
33
|
-
i0.ɵɵelementStart(0, "span",
|
|
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
|
|
42
|
-
i0.ɵɵelementStart(0, "span",
|
|
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
|
|
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",
|
|
53
|
-
i0.ɵɵlistener("click", function
|
|
54
|
-
i0.ɵɵelement(1, "i",
|
|
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
|
|
61
|
-
i0.ɵɵelementStart(0, "div",
|
|
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",
|
|
65
|
-
i0.ɵɵconditionalCreate(4,
|
|
66
|
-
i0.ɵɵconditionalCreate(6,
|
|
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(
|
|
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
|
|
81
|
-
i0.ɵɵelementStart(0, "div",
|
|
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",
|
|
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
|
|
94
|
-
i0.ɵɵelementStart(0, "div",
|
|
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",
|
|
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
|
|
108
|
-
i0.ɵɵconditionalCreate(0,
|
|
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
|
|
114
|
-
i0.ɵɵ
|
|
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
|
|
119
|
-
i0.ɵɵ
|
|
120
|
-
i0.ɵɵ
|
|
121
|
-
i0.ɵɵ
|
|
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
|
|
131
|
-
i0.ɵɵelementStart(0, "div",
|
|
132
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
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
|
|
136
|
-
i0.ɵɵ
|
|
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
|
|
141
|
-
i0.ɵɵelementStart(0, "div",
|
|
142
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
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
|
|
146
|
-
i0.ɵɵelementStart(0, "span",
|
|
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
|
|
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",
|
|
156
|
-
i0.ɵɵlistener("click", function
|
|
157
|
-
i0.ɵɵelementStart(1, "div",
|
|
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,
|
|
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",
|
|
159
|
+
i0.ɵɵelement(5, "i", 51);
|
|
163
160
|
i0.ɵɵelementEnd();
|
|
164
161
|
} if (rf & 2) {
|
|
165
|
-
let
|
|
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(
|
|
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((
|
|
169
|
+
i0.ɵɵconditional((tmp_24_0 = ctx_r0.getRelatedRecordSubtitle(relEntity_r6, rec_r8)) ? 4 : -1, tmp_24_0);
|
|
173
170
|
} }
|
|
174
|
-
function
|
|
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",
|
|
177
|
-
i0.ɵɵlistener("click", function
|
|
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",
|
|
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
|
|
189
|
-
i0.ɵɵrepeaterCreate(0,
|
|
190
|
-
i0.ɵɵconditionalCreate(2,
|
|
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
|
|
198
|
-
i0.ɵɵelementStart(0, "div",
|
|
199
|
-
i0.ɵɵconditionalCreate(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
|
|
203
|
+
function EntityRecordDetailPanelComponent_Conditional_18_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
207
204
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
208
|
-
i0.ɵɵelementStart(0, "div",
|
|
209
|
-
i0.ɵɵlistener("click", function
|
|
210
|
-
i0.ɵɵelement(2, "i",
|
|
211
|
-
i0.ɵɵelementStart(4, "span",
|
|
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",
|
|
211
|
+
i0.ɵɵelementStart(6, "span", 41);
|
|
215
212
|
i0.ɵɵtext(7);
|
|
216
213
|
i0.ɵɵelementEnd()();
|
|
217
|
-
i0.ɵɵconditionalCreate(8,
|
|
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(
|
|
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
|
|
237
|
-
i0.ɵɵrepeaterCreate(0,
|
|
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(
|
|
236
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
240
237
|
i0.ɵɵrepeater(ctx_r0.relatedEntitiesWithRecords);
|
|
241
238
|
} }
|
|
242
|
-
function
|
|
243
|
-
i0.ɵɵ
|
|
244
|
-
i0.ɵɵ
|
|
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
|
|
252
|
-
i0.ɵɵelementStart(0, "div",
|
|
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
|
|
257
|
-
i0.ɵɵ
|
|
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
|
|
262
|
-
i0.ɵɵelementStart(0, "div",
|
|
263
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
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
|
|
267
|
-
i0.ɵɵelementStart(0, "span",
|
|
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
|
|
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",
|
|
277
|
-
i0.ɵɵlistener("click", function
|
|
278
|
-
i0.ɵɵelementStart(1, "div",
|
|
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,
|
|
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",
|
|
275
|
+
i0.ɵɵelement(5, "i", 51);
|
|
284
276
|
i0.ɵɵelementEnd();
|
|
285
277
|
} if (rf & 2) {
|
|
286
|
-
let
|
|
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(
|
|
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((
|
|
285
|
+
i0.ɵɵconditional((tmp_25_0 = ctx_r0.getOrganicKeyRecordSubtitle(match_r12, rec_r14)) ? 4 : -1, tmp_25_0);
|
|
294
286
|
} }
|
|
295
|
-
function
|
|
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",
|
|
298
|
-
i0.ɵɵlistener("click", function
|
|
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",
|
|
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
|
|
310
|
-
i0.ɵɵrepeaterCreate(0,
|
|
311
|
-
i0.ɵɵconditionalCreate(2,
|
|
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
|
|
319
|
-
i0.ɵɵelementStart(0, "div",
|
|
320
|
-
i0.ɵɵconditionalCreate(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
|
|
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",
|
|
330
|
-
i0.ɵɵlistener("click", function
|
|
331
|
-
i0.ɵɵelement(2, "i",
|
|
332
|
-
i0.ɵɵelementStart(4, "span",
|
|
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",
|
|
327
|
+
i0.ɵɵelementStart(6, "span", 41);
|
|
336
328
|
i0.ɵɵtext(7);
|
|
337
329
|
i0.ɵɵelementEnd()();
|
|
338
|
-
i0.ɵɵconditionalCreate(8,
|
|
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(
|
|
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
|
|
358
|
-
i0.ɵɵrepeaterCreate(0,
|
|
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.ɵɵ
|
|
370
|
-
i0.ɵɵconditional(ctx_r0.isLoadingOrganicKeys ? 1 : ctx_r0.organicKeyMatchesWithRecords.length === 0 ? 2 : 3);
|
|
353
|
+
i0.ɵɵrepeater(ctx_r0.organicKeyMatchesWithRecords);
|
|
371
354
|
} }
|
|
372
|
-
function
|
|
355
|
+
function EntityRecordDetailPanelComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
373
356
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
374
|
-
i0.ɵɵelementStart(0, "
|
|
375
|
-
i0.ɵɵ
|
|
376
|
-
i0.ɵɵ
|
|
377
|
-
i0.ɵɵ
|
|
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.ɵɵ
|
|
387
|
-
i0.ɵɵ
|
|
388
|
-
i0.ɵɵadvance();
|
|
389
|
-
i0.ɵɵconditional(ctx_r0.
|
|
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:
|
|
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, "
|
|
1099
|
-
i0.ɵɵ
|
|
1100
|
-
i0.ɵɵ
|
|
1101
|
-
i0.ɵɵ
|
|
1102
|
-
i0.ɵɵ
|
|
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.ɵɵ
|
|
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(
|
|
1073
|
+
i0.ɵɵconditionalCreate(19, EntityRecordDetailPanelComponent_Conditional_19_Template, 5, 3, "mj-accordion-panel", 13);
|
|
1117
1074
|
i0.ɵɵelementEnd();
|
|
1118
|
-
i0.ɵɵ
|
|
1119
|
-
i0.ɵɵ
|
|
1120
|
-
i0.ɵɵ
|
|
1121
|
-
i0.ɵɵ
|
|
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(
|
|
1131
|
-
i0.ɵɵ
|
|
1132
|
-
i0.ɵɵ
|
|
1133
|
-
i0.ɵɵ
|
|
1134
|
-
i0.ɵɵ
|
|
1135
|
-
i0.ɵɵ
|
|
1136
|
-
i0.ɵɵ
|
|
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.ɵɵ
|
|
1140
|
-
|
|
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: [{
|