@memberjunction/ng-versions 5.11.0 → 5.12.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/label-create/label-create.component.js +2 -2
- package/dist/lib/label-detail/label-detail.component.js +245 -245
- package/dist/lib/label-detail/label-detail.component.js.map +1 -1
- package/dist/lib/panel/slide-panel.component.js +2 -2
- package/dist/lib/record-micro-view/record-micro-view.component.js +2 -2
- package/package.json +6 -6
|
@@ -19,8 +19,8 @@ function MjLabelDetailComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
|
19
19
|
i0.ɵɵtextInterpolate(ctx_r0.Label.Description);
|
|
20
20
|
} }
|
|
21
21
|
function MjLabelDetailComponent_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
-
i0.ɵɵelementStart(0, "div", 21)(1, "div",
|
|
23
|
-
i0.ɵɵelement(2, "i",
|
|
22
|
+
i0.ɵɵelementStart(0, "div", 21)(1, "div", 31);
|
|
23
|
+
i0.ɵɵelement(2, "i", 32);
|
|
24
24
|
i0.ɵɵelementEnd();
|
|
25
25
|
i0.ɵɵelementStart(3, "div", 24)(4, "span", 25);
|
|
26
26
|
i0.ɵɵtext(5);
|
|
@@ -34,8 +34,8 @@ function MjLabelDetailComponent_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
|
34
34
|
i0.ɵɵtextInterpolate(ctx_r0.FormatDuration(ctx_r0.Label.CreationDurationMS));
|
|
35
35
|
} }
|
|
36
36
|
function MjLabelDetailComponent_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
-
i0.ɵɵelementStart(0, "div", 21)(1, "div",
|
|
38
|
-
i0.ɵɵelement(2, "i",
|
|
37
|
+
i0.ɵɵelementStart(0, "div", 21)(1, "div", 33);
|
|
38
|
+
i0.ɵɵelement(2, "i", 34);
|
|
39
39
|
i0.ɵɵelementEnd();
|
|
40
40
|
i0.ɵɵelementStart(3, "div", 24)(4, "span", 25);
|
|
41
41
|
i0.ɵɵtext(5);
|
|
@@ -49,7 +49,7 @@ function MjLabelDetailComponent_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
|
49
49
|
i0.ɵɵtextInterpolate(ctx_r0.ChildLabels.length);
|
|
50
50
|
} }
|
|
51
51
|
function MjLabelDetailComponent_Conditional_41_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
-
i0.ɵɵelementStart(0, "span",
|
|
52
|
+
i0.ɵɵelementStart(0, "span", 38);
|
|
53
53
|
i0.ɵɵtext(1);
|
|
54
54
|
i0.ɵɵelementEnd();
|
|
55
55
|
} if (rf & 2) {
|
|
@@ -59,30 +59,30 @@ function MjLabelDetailComponent_Conditional_41_Conditional_7_Template(rf, ctx) {
|
|
|
59
59
|
} }
|
|
60
60
|
function MjLabelDetailComponent_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
61
61
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
62
|
-
i0.ɵɵelementStart(0, "div",
|
|
62
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "button", 35);
|
|
63
63
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_41_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnTabChange("overview")); });
|
|
64
|
-
i0.ɵɵelement(2, "i",
|
|
64
|
+
i0.ɵɵelement(2, "i", 36);
|
|
65
65
|
i0.ɵɵtext(3, " Overview ");
|
|
66
66
|
i0.ɵɵelementEnd();
|
|
67
|
-
i0.ɵɵelementStart(4, "button",
|
|
67
|
+
i0.ɵɵelementStart(4, "button", 35);
|
|
68
68
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_41_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnTabChange("snapshots")); });
|
|
69
|
-
i0.ɵɵelement(5, "i",
|
|
69
|
+
i0.ɵɵelement(5, "i", 37);
|
|
70
70
|
i0.ɵɵtext(6, " Snapshots ");
|
|
71
|
-
i0.ɵɵconditionalCreate(7, MjLabelDetailComponent_Conditional_41_Conditional_7_Template, 2, 1, "span",
|
|
71
|
+
i0.ɵɵconditionalCreate(7, MjLabelDetailComponent_Conditional_41_Conditional_7_Template, 2, 1, "span", 38);
|
|
72
72
|
i0.ɵɵelementEnd();
|
|
73
|
-
i0.ɵɵelementStart(8, "button",
|
|
73
|
+
i0.ɵɵelementStart(8, "button", 35);
|
|
74
74
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_41_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnTabChange("dependencies")); });
|
|
75
|
-
i0.ɵɵelement(9, "i",
|
|
75
|
+
i0.ɵɵelement(9, "i", 39);
|
|
76
76
|
i0.ɵɵtext(10, " Dependencies ");
|
|
77
77
|
i0.ɵɵelementEnd();
|
|
78
|
-
i0.ɵɵelementStart(11, "button",
|
|
78
|
+
i0.ɵɵelementStart(11, "button", 35);
|
|
79
79
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_41_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnTabChange("changes")); });
|
|
80
|
-
i0.ɵɵelement(12, "i",
|
|
80
|
+
i0.ɵɵelement(12, "i", 40);
|
|
81
81
|
i0.ɵɵtext(13, " Changes ");
|
|
82
82
|
i0.ɵɵelementEnd();
|
|
83
|
-
i0.ɵɵelementStart(14, "button",
|
|
83
|
+
i0.ɵɵelementStart(14, "button", 35);
|
|
84
84
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_41_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnTabChange("history")); });
|
|
85
|
-
i0.ɵɵelement(15, "i",
|
|
85
|
+
i0.ɵɵelement(15, "i", 41);
|
|
86
86
|
i0.ɵɵtext(16, " History ");
|
|
87
87
|
i0.ɵɵelementEnd()();
|
|
88
88
|
} if (rf & 2) {
|
|
@@ -102,18 +102,18 @@ function MjLabelDetailComponent_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
|
102
102
|
} }
|
|
103
103
|
function MjLabelDetailComponent_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
104
104
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
105
|
-
i0.ɵɵelementStart(0, "div",
|
|
105
|
+
i0.ɵɵelementStart(0, "div", 29)(1, "button", 42);
|
|
106
106
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_42_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnBackFromMicroView()); });
|
|
107
|
-
i0.ɵɵelement(2, "i",
|
|
107
|
+
i0.ɵɵelement(2, "i", 43);
|
|
108
108
|
i0.ɵɵelementEnd();
|
|
109
|
-
i0.ɵɵelementStart(3, "div",
|
|
109
|
+
i0.ɵɵelementStart(3, "div", 44)(4, "span", 45);
|
|
110
110
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_42_Template_span_click_4_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnBackFromMicroView()); });
|
|
111
|
-
i0.ɵɵelement(5, "i",
|
|
111
|
+
i0.ɵɵelement(5, "i", 46);
|
|
112
112
|
i0.ɵɵtext(6, " Snapshots ");
|
|
113
113
|
i0.ɵɵelementEnd();
|
|
114
|
-
i0.ɵɵelement(7, "i",
|
|
115
|
-
i0.ɵɵelementStart(8, "span",
|
|
116
|
-
i0.ɵɵelement(9, "i",
|
|
114
|
+
i0.ɵɵelement(7, "i", 47);
|
|
115
|
+
i0.ɵɵelementStart(8, "span", 48);
|
|
116
|
+
i0.ɵɵelement(9, "i", 49);
|
|
117
117
|
i0.ɵɵtext(10);
|
|
118
118
|
i0.ɵɵelementEnd()()();
|
|
119
119
|
} if (rf & 2) {
|
|
@@ -122,14 +122,14 @@ function MjLabelDetailComponent_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
|
122
122
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.BreadcrumbLabel, " ");
|
|
123
123
|
} }
|
|
124
124
|
function MjLabelDetailComponent_Conditional_43_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
125
|
+
i0.ɵɵelement(0, "mj-loading", 50);
|
|
126
126
|
} }
|
|
127
127
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
-
i0.ɵɵelementStart(0, "div",
|
|
128
|
+
i0.ɵɵelementStart(0, "div", 56)(1, "span", 57);
|
|
129
129
|
i0.ɵɵtext(2, "Entity");
|
|
130
130
|
i0.ɵɵelementEnd();
|
|
131
|
-
i0.ɵɵelementStart(3, "span",
|
|
132
|
-
i0.ɵɵelement(4, "i",
|
|
131
|
+
i0.ɵɵelementStart(3, "span", 58);
|
|
132
|
+
i0.ɵɵelement(4, "i", 63);
|
|
133
133
|
i0.ɵɵtext(5);
|
|
134
134
|
i0.ɵɵelementEnd()();
|
|
135
135
|
} if (rf & 2) {
|
|
@@ -140,10 +140,10 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_23_Temp
|
|
|
140
140
|
i0.ɵɵtextInterpolate1("", ctx_r0.Label.Entity ?? ctx_r0.resolveEntityName(ctx_r0.Label.EntityID), " ");
|
|
141
141
|
} }
|
|
142
142
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵelementStart(0, "div",
|
|
143
|
+
i0.ɵɵelementStart(0, "div", 56)(1, "span", 57);
|
|
144
144
|
i0.ɵɵtext(2, "Record ID");
|
|
145
145
|
i0.ɵɵelementEnd();
|
|
146
|
-
i0.ɵɵelementStart(3, "span",
|
|
146
|
+
i0.ɵɵelementStart(3, "span", 64);
|
|
147
147
|
i0.ɵɵtext(4);
|
|
148
148
|
i0.ɵɵelementEnd()();
|
|
149
149
|
} if (rf & 2) {
|
|
@@ -152,10 +152,10 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_24_Temp
|
|
|
152
152
|
i0.ɵɵtextInterpolate(ctx_r0.FormatRecordID(ctx_r0.Label.RecordID));
|
|
153
153
|
} }
|
|
154
154
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
155
|
-
i0.ɵɵelementStart(0, "div",
|
|
155
|
+
i0.ɵɵelementStart(0, "div", 56)(1, "span", 57);
|
|
156
156
|
i0.ɵɵtext(2, "External Ref");
|
|
157
157
|
i0.ɵɵelementEnd();
|
|
158
|
-
i0.ɵɵelementStart(3, "span",
|
|
158
|
+
i0.ɵɵelementStart(3, "span", 64);
|
|
159
159
|
i0.ɵɵtext(4);
|
|
160
160
|
i0.ɵɵelementEnd()();
|
|
161
161
|
} if (rf & 2) {
|
|
@@ -164,7 +164,7 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_25_Temp
|
|
|
164
164
|
i0.ɵɵtextInterpolate(ctx_r0.Label.ExternalSystemID);
|
|
165
165
|
} }
|
|
166
166
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
-
i0.ɵɵelementStart(0, "span",
|
|
167
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
168
168
|
i0.ɵɵtext(1);
|
|
169
169
|
i0.ɵɵelementEnd();
|
|
170
170
|
} if (rf & 2) {
|
|
@@ -173,26 +173,26 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Cond
|
|
|
173
173
|
i0.ɵɵtextInterpolate(ctx_r0.OverviewRecordName);
|
|
174
174
|
} }
|
|
175
175
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
176
|
-
i0.ɵɵelementStart(0, "span",
|
|
176
|
+
i0.ɵɵelementStart(0, "span", 69);
|
|
177
177
|
i0.ɵɵtext(1, "Loading...");
|
|
178
178
|
i0.ɵɵelementEnd();
|
|
179
179
|
} }
|
|
180
180
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
181
181
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
182
|
-
i0.ɵɵelementStart(0, "div",
|
|
183
|
-
i0.ɵɵelement(2, "i",
|
|
184
|
-
i0.ɵɵelementStart(3, "div",
|
|
185
|
-
i0.ɵɵconditionalCreate(4, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Conditional_4_Template, 2, 1, "span",
|
|
186
|
-
i0.ɵɵconditionalCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Conditional_5_Template, 2, 0, "span",
|
|
187
|
-
i0.ɵɵelementStart(6, "span",
|
|
182
|
+
i0.ɵɵelementStart(0, "div", 61)(1, "div", 65);
|
|
183
|
+
i0.ɵɵelement(2, "i", 66);
|
|
184
|
+
i0.ɵɵelementStart(3, "div", 67);
|
|
185
|
+
i0.ɵɵconditionalCreate(4, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Conditional_4_Template, 2, 1, "span", 68);
|
|
186
|
+
i0.ɵɵconditionalCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Conditional_5_Template, 2, 0, "span", 69);
|
|
187
|
+
i0.ɵɵelementStart(6, "span", 70);
|
|
188
188
|
i0.ɵɵtext(7);
|
|
189
189
|
i0.ɵɵelementEnd();
|
|
190
|
-
i0.ɵɵelementStart(8, "span",
|
|
190
|
+
i0.ɵɵelementStart(8, "span", 71);
|
|
191
191
|
i0.ɵɵtext(9);
|
|
192
192
|
i0.ɵɵelementEnd()()();
|
|
193
|
-
i0.ɵɵelementStart(10, "button",
|
|
193
|
+
i0.ɵɵelementStart(10, "button", 72);
|
|
194
194
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OnOpenOverviewRecord()); });
|
|
195
|
-
i0.ɵɵelement(11, "i",
|
|
195
|
+
i0.ɵɵelement(11, "i", 73);
|
|
196
196
|
i0.ɵɵtext(12, " Open ");
|
|
197
197
|
i0.ɵɵelementEnd()();
|
|
198
198
|
} if (rf & 2) {
|
|
@@ -209,11 +209,11 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Temp
|
|
|
209
209
|
i0.ɵɵtextInterpolate(ctx_r0.FormatRecordID(ctx_r0.Label.RecordID));
|
|
210
210
|
} }
|
|
211
211
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
212
|
-
i0.ɵɵelementStart(0, "div",
|
|
213
|
-
i0.ɵɵelement(2, "i",
|
|
212
|
+
i0.ɵɵelementStart(0, "div", 52)(1, "h3", 53);
|
|
213
|
+
i0.ɵɵelement(2, "i", 74);
|
|
214
214
|
i0.ɵɵtext(3, " Description ");
|
|
215
215
|
i0.ɵɵelementEnd();
|
|
216
|
-
i0.ɵɵelementStart(4, "p",
|
|
216
|
+
i0.ɵɵelementStart(4, "p", 75);
|
|
217
217
|
i0.ɵɵtext(5);
|
|
218
218
|
i0.ɵɵelementEnd()();
|
|
219
219
|
} if (rf & 2) {
|
|
@@ -222,11 +222,11 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_27_Temp
|
|
|
222
222
|
i0.ɵɵtextInterpolate(ctx_r0.Label.Description);
|
|
223
223
|
} }
|
|
224
224
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
225
|
-
i0.ɵɵelementStart(0, "div",
|
|
225
|
+
i0.ɵɵelementStart(0, "div", 56)(1, "span", 57);
|
|
226
226
|
i0.ɵɵtext(2, "Created By");
|
|
227
227
|
i0.ɵɵelementEnd();
|
|
228
|
-
i0.ɵɵelementStart(3, "span",
|
|
229
|
-
i0.ɵɵelement(4, "i",
|
|
228
|
+
i0.ɵɵelementStart(3, "span", 58);
|
|
229
|
+
i0.ɵɵelement(4, "i", 76);
|
|
230
230
|
i0.ɵɵtext(5);
|
|
231
231
|
i0.ɵɵelementEnd()();
|
|
232
232
|
} if (rf & 2) {
|
|
@@ -235,10 +235,10 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_38_Temp
|
|
|
235
235
|
i0.ɵɵtextInterpolate1("", ctx_r0.Label.CreatedByUser, " ");
|
|
236
236
|
} }
|
|
237
237
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
238
|
-
i0.ɵɵelementStart(0, "div",
|
|
238
|
+
i0.ɵɵelementStart(0, "div", 56)(1, "span", 57);
|
|
239
239
|
i0.ɵɵtext(2, "Capture Duration");
|
|
240
240
|
i0.ɵɵelementEnd();
|
|
241
|
-
i0.ɵɵelementStart(3, "span",
|
|
241
|
+
i0.ɵɵelementStart(3, "span", 58);
|
|
242
242
|
i0.ɵɵtext(4);
|
|
243
243
|
i0.ɵɵelementEnd()();
|
|
244
244
|
} if (rf & 2) {
|
|
@@ -263,12 +263,12 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Cond
|
|
|
263
263
|
i0.ɵɵconditional(ctx_r0.IsParentLabel(pl_r5) ? 0 : -1);
|
|
264
264
|
} }
|
|
265
265
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
266
|
-
i0.ɵɵelementStart(0, "div",
|
|
267
|
-
i0.ɵɵelement(1, "i",
|
|
268
|
-
i0.ɵɵelementStart(2, "span",
|
|
266
|
+
i0.ɵɵelementStart(0, "div", 78);
|
|
267
|
+
i0.ɵɵelement(1, "i", 80);
|
|
268
|
+
i0.ɵɵelementStart(2, "span", 81);
|
|
269
269
|
i0.ɵɵtext(3, "Parent:");
|
|
270
270
|
i0.ɵɵelementEnd();
|
|
271
|
-
i0.ɵɵelementStart(4, "span",
|
|
271
|
+
i0.ɵɵelementStart(4, "span", 82);
|
|
272
272
|
i0.ɵɵrepeaterCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_4_For_6_Template, 1, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);
|
|
273
273
|
i0.ɵɵelementEnd()();
|
|
274
274
|
} if (rf & 2) {
|
|
@@ -277,7 +277,7 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Cond
|
|
|
277
277
|
i0.ɵɵrepeater(ctx_r0.AllLabels);
|
|
278
278
|
} }
|
|
279
279
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
280
|
-
i0.ɵɵelementStart(0, "span",
|
|
280
|
+
i0.ɵɵelementStart(0, "span", 85);
|
|
281
281
|
i0.ɵɵtext(1);
|
|
282
282
|
i0.ɵɵpipe(2, "slice");
|
|
283
283
|
i0.ɵɵelementEnd();
|
|
@@ -287,7 +287,7 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Cond
|
|
|
287
287
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind3(2, 1, child_r6.RecordID, 0, 12), "...");
|
|
288
288
|
} }
|
|
289
289
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
290
|
-
i0.ɵɵelementStart(0, "span",
|
|
290
|
+
i0.ɵɵelementStart(0, "span", 85);
|
|
291
291
|
i0.ɵɵtext(1);
|
|
292
292
|
i0.ɵɵelementEnd();
|
|
293
293
|
} if (rf & 2) {
|
|
@@ -296,13 +296,13 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Cond
|
|
|
296
296
|
i0.ɵɵtextInterpolate1("", child_r6.ItemCount, " items");
|
|
297
297
|
} }
|
|
298
298
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
299
|
-
i0.ɵɵelementStart(0, "div",
|
|
300
|
-
i0.ɵɵelement(1, "i",
|
|
301
|
-
i0.ɵɵelementStart(2, "span",
|
|
299
|
+
i0.ɵɵelementStart(0, "div", 83);
|
|
300
|
+
i0.ɵɵelement(1, "i", 84);
|
|
301
|
+
i0.ɵɵelementStart(2, "span", 82);
|
|
302
302
|
i0.ɵɵtext(3);
|
|
303
303
|
i0.ɵɵelementEnd();
|
|
304
|
-
i0.ɵɵconditionalCreate(4, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_For_2_Conditional_4_Template, 3, 5, "span",
|
|
305
|
-
i0.ɵɵconditionalCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_For_2_Conditional_5_Template, 2, 1, "span",
|
|
304
|
+
i0.ɵɵconditionalCreate(4, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_For_2_Conditional_4_Template, 3, 5, "span", 85);
|
|
305
|
+
i0.ɵɵconditionalCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_For_2_Conditional_5_Template, 2, 1, "span", 85);
|
|
306
306
|
i0.ɵɵelementEnd();
|
|
307
307
|
} if (rf & 2) {
|
|
308
308
|
const child_r6 = ctx.$implicit;
|
|
@@ -314,8 +314,8 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Cond
|
|
|
314
314
|
i0.ɵɵconditional(child_r6.ItemCount ? 5 : -1);
|
|
315
315
|
} }
|
|
316
316
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
317
|
-
i0.ɵɵelementStart(0, "div",
|
|
318
|
-
i0.ɵɵrepeaterCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_For_2_Template, 6, 3, "div",
|
|
317
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
318
|
+
i0.ɵɵrepeaterCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_For_2_Template, 6, 3, "div", 83, i0.ɵɵrepeaterTrackByIdentity);
|
|
319
319
|
i0.ɵɵelementEnd();
|
|
320
320
|
} if (rf & 2) {
|
|
321
321
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
@@ -323,12 +323,12 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Cond
|
|
|
323
323
|
i0.ɵɵrepeater(ctx_r0.ChildLabels);
|
|
324
324
|
} }
|
|
325
325
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Template(rf, ctx) { if (rf & 1) {
|
|
326
|
-
i0.ɵɵelementStart(0, "div",
|
|
327
|
-
i0.ɵɵelement(2, "i",
|
|
326
|
+
i0.ɵɵelementStart(0, "div", 52)(1, "h3", 53);
|
|
327
|
+
i0.ɵɵelement(2, "i", 77);
|
|
328
328
|
i0.ɵɵtext(3, " Hierarchy ");
|
|
329
329
|
i0.ɵɵelementEnd();
|
|
330
|
-
i0.ɵɵconditionalCreate(4, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_4_Template, 7, 0, "div",
|
|
331
|
-
i0.ɵɵconditionalCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_Template, 3, 0, "div",
|
|
330
|
+
i0.ɵɵconditionalCreate(4, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_4_Template, 7, 0, "div", 78);
|
|
331
|
+
i0.ɵɵconditionalCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Conditional_5_Template, 3, 0, "div", 79);
|
|
332
332
|
i0.ɵɵelementEnd();
|
|
333
333
|
} if (rf & 2) {
|
|
334
334
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
@@ -338,54 +338,54 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Temp
|
|
|
338
338
|
i0.ɵɵconditional(ctx_r0.ChildLabels.length > 0 ? 5 : -1);
|
|
339
339
|
} }
|
|
340
340
|
function MjLabelDetailComponent_Conditional_43_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
341
|
-
i0.ɵɵelementStart(0, "div",
|
|
342
|
-
i0.ɵɵelement(3, "i",
|
|
341
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "div", 52)(2, "h3", 53);
|
|
342
|
+
i0.ɵɵelement(3, "i", 54);
|
|
343
343
|
i0.ɵɵtext(4, " Label Details ");
|
|
344
344
|
i0.ɵɵelementEnd();
|
|
345
|
-
i0.ɵɵelementStart(5, "div",
|
|
345
|
+
i0.ɵɵelementStart(5, "div", 55)(6, "div", 56)(7, "span", 57);
|
|
346
346
|
i0.ɵɵtext(8, "Name");
|
|
347
347
|
i0.ɵɵelementEnd();
|
|
348
|
-
i0.ɵɵelementStart(9, "span",
|
|
348
|
+
i0.ɵɵelementStart(9, "span", 58);
|
|
349
349
|
i0.ɵɵtext(10);
|
|
350
350
|
i0.ɵɵelementEnd()();
|
|
351
|
-
i0.ɵɵelementStart(11, "div",
|
|
351
|
+
i0.ɵɵelementStart(11, "div", 56)(12, "span", 57);
|
|
352
352
|
i0.ɵɵtext(13, "Status");
|
|
353
353
|
i0.ɵɵelementEnd();
|
|
354
|
-
i0.ɵɵelementStart(14, "span",
|
|
354
|
+
i0.ɵɵelementStart(14, "span", 58)(15, "span", 59);
|
|
355
355
|
i0.ɵɵtext(16);
|
|
356
356
|
i0.ɵɵelementEnd()()();
|
|
357
|
-
i0.ɵɵelementStart(17, "div",
|
|
357
|
+
i0.ɵɵelementStart(17, "div", 56)(18, "span", 57);
|
|
358
358
|
i0.ɵɵtext(19, "Scope");
|
|
359
359
|
i0.ɵɵelementEnd();
|
|
360
|
-
i0.ɵɵelementStart(20, "span",
|
|
361
|
-
i0.ɵɵelement(21, "i",
|
|
360
|
+
i0.ɵɵelementStart(20, "span", 58);
|
|
361
|
+
i0.ɵɵelement(21, "i", 60);
|
|
362
362
|
i0.ɵɵtext(22);
|
|
363
363
|
i0.ɵɵelementEnd()();
|
|
364
|
-
i0.ɵɵconditionalCreate(23, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_23_Template, 6, 3, "div",
|
|
365
|
-
i0.ɵɵconditionalCreate(24, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_24_Template, 5, 1, "div",
|
|
366
|
-
i0.ɵɵconditionalCreate(25, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_25_Template, 5, 1, "div",
|
|
364
|
+
i0.ɵɵconditionalCreate(23, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_23_Template, 6, 3, "div", 56);
|
|
365
|
+
i0.ɵɵconditionalCreate(24, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_24_Template, 5, 1, "div", 56);
|
|
366
|
+
i0.ɵɵconditionalCreate(25, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_25_Template, 5, 1, "div", 56);
|
|
367
367
|
i0.ɵɵelementEnd()();
|
|
368
|
-
i0.ɵɵconditionalCreate(26, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Template, 13, 6, "div",
|
|
369
|
-
i0.ɵɵconditionalCreate(27, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_27_Template, 6, 1, "div",
|
|
370
|
-
i0.ɵɵelementStart(28, "div",
|
|
371
|
-
i0.ɵɵelement(30, "i",
|
|
368
|
+
i0.ɵɵconditionalCreate(26, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_26_Template, 13, 6, "div", 61);
|
|
369
|
+
i0.ɵɵconditionalCreate(27, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_27_Template, 6, 1, "div", 52);
|
|
370
|
+
i0.ɵɵelementStart(28, "div", 52)(29, "h3", 53);
|
|
371
|
+
i0.ɵɵelement(30, "i", 62);
|
|
372
372
|
i0.ɵɵtext(31, " Creation ");
|
|
373
373
|
i0.ɵɵelementEnd();
|
|
374
|
-
i0.ɵɵelementStart(32, "div",
|
|
374
|
+
i0.ɵɵelementStart(32, "div", 55)(33, "div", 56)(34, "span", 57);
|
|
375
375
|
i0.ɵɵtext(35, "Created");
|
|
376
376
|
i0.ɵɵelementEnd();
|
|
377
|
-
i0.ɵɵelementStart(36, "span",
|
|
377
|
+
i0.ɵɵelementStart(36, "span", 58);
|
|
378
378
|
i0.ɵɵtext(37);
|
|
379
379
|
i0.ɵɵelementEnd()();
|
|
380
|
-
i0.ɵɵconditionalCreate(38, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_38_Template, 6, 1, "div",
|
|
381
|
-
i0.ɵɵconditionalCreate(39, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_39_Template, 5, 1, "div",
|
|
382
|
-
i0.ɵɵelementStart(40, "div",
|
|
380
|
+
i0.ɵɵconditionalCreate(38, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_38_Template, 6, 1, "div", 56);
|
|
381
|
+
i0.ɵɵconditionalCreate(39, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_39_Template, 5, 1, "div", 56);
|
|
382
|
+
i0.ɵɵelementStart(40, "div", 56)(41, "span", 57);
|
|
383
383
|
i0.ɵɵtext(42, "Items Captured");
|
|
384
384
|
i0.ɵɵelementEnd();
|
|
385
|
-
i0.ɵɵelementStart(43, "span",
|
|
385
|
+
i0.ɵɵelementStart(43, "span", 58);
|
|
386
386
|
i0.ɵɵtext(44);
|
|
387
387
|
i0.ɵɵelementEnd()()()();
|
|
388
|
-
i0.ɵɵconditionalCreate(45, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Template, 6, 2, "div",
|
|
388
|
+
i0.ɵɵconditionalCreate(45, MjLabelDetailComponent_Conditional_43_Conditional_2_Conditional_45_Template, 6, 2, "div", 52);
|
|
389
389
|
i0.ɵɵelementEnd();
|
|
390
390
|
} if (rf & 2) {
|
|
391
391
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -421,37 +421,37 @@ function MjLabelDetailComponent_Conditional_43_Conditional_2_Template(rf, ctx) {
|
|
|
421
421
|
i0.ɵɵconditional(ctx_r0.Label.ParentID || ctx_r0.ChildLabels.length > 0 ? 45 : -1);
|
|
422
422
|
} }
|
|
423
423
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
424
|
-
i0.ɵɵelement(0, "i",
|
|
424
|
+
i0.ɵɵelement(0, "i", 92);
|
|
425
425
|
} }
|
|
426
426
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
427
|
-
i0.ɵɵelement(0, "i",
|
|
427
|
+
i0.ɵɵelement(0, "i", 93);
|
|
428
428
|
} }
|
|
429
429
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
430
|
-
i0.ɵɵelement(0, "i",
|
|
430
|
+
i0.ɵɵelement(0, "i", 92);
|
|
431
431
|
} }
|
|
432
432
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
433
|
-
i0.ɵɵelement(0, "i",
|
|
433
|
+
i0.ɵɵelement(0, "i", 95);
|
|
434
434
|
} }
|
|
435
435
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
436
|
-
i0.ɵɵelement(0, "i",
|
|
436
|
+
i0.ɵɵelement(0, "i", 96);
|
|
437
437
|
} }
|
|
438
438
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
439
|
-
i0.ɵɵelement(0, "i",
|
|
439
|
+
i0.ɵɵelement(0, "i", 95);
|
|
440
440
|
} }
|
|
441
441
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
442
|
-
i0.ɵɵelementStart(0, "div",
|
|
443
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
442
|
+
i0.ɵɵelementStart(0, "div", 110);
|
|
443
|
+
i0.ɵɵelement(1, "mj-loading", 112);
|
|
444
444
|
i0.ɵɵelementEnd();
|
|
445
445
|
} }
|
|
446
446
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_2_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
447
447
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
448
|
-
i0.ɵɵelementStart(0, "div",
|
|
448
|
+
i0.ɵɵelementStart(0, "div", 114);
|
|
449
449
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_2_For_1_Template_div_click_0_listener() { const item_r11 = i0.ɵɵrestoreView(_r10).$implicit; const group_r9 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenMicroView(group_r9.EntityName, item_r11.RecordID, item_r11.RecordChangeID, item_r11.DisplayName)); });
|
|
450
|
-
i0.ɵɵelement(1, "i",
|
|
451
|
-
i0.ɵɵelementStart(2, "span",
|
|
450
|
+
i0.ɵɵelement(1, "i", 115);
|
|
451
|
+
i0.ɵɵelementStart(2, "span", 116);
|
|
452
452
|
i0.ɵɵtext(3);
|
|
453
453
|
i0.ɵɵelementEnd();
|
|
454
|
-
i0.ɵɵelement(4, "i",
|
|
454
|
+
i0.ɵɵelement(4, "i", 117);
|
|
455
455
|
i0.ɵɵelementEnd();
|
|
456
456
|
} if (rf & 2) {
|
|
457
457
|
const item_r11 = ctx.$implicit;
|
|
@@ -459,18 +459,18 @@ function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_
|
|
|
459
459
|
i0.ɵɵtextInterpolate(item_r11.DisplayName);
|
|
460
460
|
} }
|
|
461
461
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
462
|
-
i0.ɵɵrepeaterCreate(0, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_2_For_1_Template, 5, 1, "div",
|
|
462
|
+
i0.ɵɵrepeaterCreate(0, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_2_For_1_Template, 5, 1, "div", 113, i0.ɵɵrepeaterTrackByIdentity);
|
|
463
463
|
} if (rf & 2) {
|
|
464
464
|
const group_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
465
465
|
i0.ɵɵrepeater(group_r9.Items);
|
|
466
466
|
} }
|
|
467
467
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
468
468
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
469
|
-
i0.ɵɵelementStart(0, "div",
|
|
469
|
+
i0.ɵɵelementStart(0, "div", 119);
|
|
470
470
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_3_For_2_Template_div_click_0_listener() { const item_r13 = i0.ɵɵrestoreView(_r12).$implicit; const group_r9 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenMicroView(group_r9.EntityName, item_r13.RecordID, item_r13.RecordChangeID, item_r13.DisplayName)); });
|
|
471
|
-
i0.ɵɵelementStart(1, "div",
|
|
472
|
-
i0.ɵɵelement(2, "i",
|
|
473
|
-
i0.ɵɵelementStart(3, "span",
|
|
471
|
+
i0.ɵɵelementStart(1, "div", 120);
|
|
472
|
+
i0.ɵɵelement(2, "i", 121);
|
|
473
|
+
i0.ɵɵelementStart(3, "span", 122);
|
|
474
474
|
i0.ɵɵtext(4);
|
|
475
475
|
i0.ɵɵelementEnd()()();
|
|
476
476
|
} if (rf & 2) {
|
|
@@ -479,8 +479,8 @@ function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_
|
|
|
479
479
|
i0.ɵɵtextInterpolate(item_r13.DisplayName);
|
|
480
480
|
} }
|
|
481
481
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
482
|
-
i0.ɵɵelementStart(0, "div",
|
|
483
|
-
i0.ɵɵrepeaterCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_3_For_2_Template, 5, 1, "div",
|
|
482
|
+
i0.ɵɵelementStart(0, "div", 111);
|
|
483
|
+
i0.ɵɵrepeaterCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_3_For_2_Template, 5, 1, "div", 118, i0.ɵɵrepeaterTrackByIdentity);
|
|
484
484
|
i0.ɵɵelementEnd();
|
|
485
485
|
} if (rf & 2) {
|
|
486
486
|
const group_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -488,10 +488,10 @@ function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_
|
|
|
488
488
|
i0.ɵɵrepeater(group_r9.Items);
|
|
489
489
|
} }
|
|
490
490
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
491
|
-
i0.ɵɵelementStart(0, "div",
|
|
492
|
-
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_1_Template, 2, 0, "div",
|
|
491
|
+
i0.ɵɵelementStart(0, "div", 109);
|
|
492
|
+
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_1_Template, 2, 0, "div", 110);
|
|
493
493
|
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_2_Template, 2, 0);
|
|
494
|
-
i0.ɵɵconditionalCreate(3, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_3_Template, 3, 0, "div",
|
|
494
|
+
i0.ɵɵconditionalCreate(3, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Conditional_3_Template, 3, 0, "div", 111);
|
|
495
495
|
i0.ɵɵelementEnd();
|
|
496
496
|
} if (rf & 2) {
|
|
497
497
|
const group_r9 = i0.ɵɵnextContext().$implicit;
|
|
@@ -505,15 +505,15 @@ function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_
|
|
|
505
505
|
} }
|
|
506
506
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Template(rf, ctx) { if (rf & 1) {
|
|
507
507
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
508
|
-
i0.ɵɵelementStart(0, "div",
|
|
508
|
+
i0.ɵɵelementStart(0, "div", 102)(1, "div", 104);
|
|
509
509
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Template_div_click_1_listener() { const group_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleSnapshotGroup(group_r9)); });
|
|
510
|
-
i0.ɵɵelement(2, "i",
|
|
511
|
-
i0.ɵɵelementStart(4, "span",
|
|
510
|
+
i0.ɵɵelement(2, "i", 105)(3, "i", 106);
|
|
511
|
+
i0.ɵɵelementStart(4, "span", 107);
|
|
512
512
|
i0.ɵɵtext(5);
|
|
513
|
-
i0.ɵɵelementStart(6, "span",
|
|
513
|
+
i0.ɵɵelementStart(6, "span", 108);
|
|
514
514
|
i0.ɵɵtext(7);
|
|
515
515
|
i0.ɵɵelementEnd()()();
|
|
516
|
-
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Template, 4, 3, "div",
|
|
516
|
+
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Conditional_8_Template, 4, 3, "div", 109);
|
|
517
517
|
i0.ɵɵelementEnd();
|
|
518
518
|
} if (rf & 2) {
|
|
519
519
|
const group_r9 = ctx.$implicit;
|
|
@@ -529,43 +529,43 @@ function MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Template(rf,
|
|
|
529
529
|
i0.ɵɵconditional(group_r9.IsExpanded ? 8 : -1);
|
|
530
530
|
} }
|
|
531
531
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
532
|
-
i0.ɵɵelementStart(0, "div",
|
|
533
|
-
i0.ɵɵelement(1, "i",
|
|
532
|
+
i0.ɵɵelementStart(0, "div", 103);
|
|
533
|
+
i0.ɵɵelement(1, "i", 123);
|
|
534
534
|
i0.ɵɵelementStart(2, "p");
|
|
535
535
|
i0.ɵɵtext(3, "No snapshot items found.");
|
|
536
536
|
i0.ɵɵelementEnd()();
|
|
537
537
|
} }
|
|
538
538
|
function MjLabelDetailComponent_Conditional_43_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
539
539
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
540
|
-
i0.ɵɵelementStart(0, "div",
|
|
541
|
-
i0.ɵɵelement(3, "i",
|
|
542
|
-
i0.ɵɵelementStart(4, "input",
|
|
540
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "div", 86)(2, "div", 87);
|
|
541
|
+
i0.ɵɵelement(3, "i", 88);
|
|
542
|
+
i0.ɵɵelementStart(4, "input", 89);
|
|
543
543
|
i0.ɵɵlistener("ngModelChange", function MjLabelDetailComponent_Conditional_43_Conditional_3_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnSnapshotSearchChange($event)); });
|
|
544
544
|
i0.ɵɵelementEnd()();
|
|
545
|
-
i0.ɵɵelementStart(5, "div",
|
|
545
|
+
i0.ɵɵelementStart(5, "div", 90)(6, "button", 91);
|
|
546
546
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_3_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnSnapshotSortChange("name")); });
|
|
547
|
-
i0.ɵɵconditionalCreate(7, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_7_Template, 1, 0, "i",
|
|
548
|
-
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_8_Template, 1, 0, "i",
|
|
549
|
-
i0.ɵɵconditionalCreate(9, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_9_Template, 1, 0, "i",
|
|
547
|
+
i0.ɵɵconditionalCreate(7, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_7_Template, 1, 0, "i", 92);
|
|
548
|
+
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_8_Template, 1, 0, "i", 93);
|
|
549
|
+
i0.ɵɵconditionalCreate(9, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_9_Template, 1, 0, "i", 92);
|
|
550
550
|
i0.ɵɵelementEnd();
|
|
551
|
-
i0.ɵɵelementStart(10, "button",
|
|
551
|
+
i0.ɵɵelementStart(10, "button", 94);
|
|
552
552
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnSnapshotSortChange("count")); });
|
|
553
|
-
i0.ɵɵconditionalCreate(11, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_11_Template, 1, 0, "i",
|
|
554
|
-
i0.ɵɵconditionalCreate(12, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_12_Template, 1, 0, "i",
|
|
555
|
-
i0.ɵɵconditionalCreate(13, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_13_Template, 1, 0, "i",
|
|
553
|
+
i0.ɵɵconditionalCreate(11, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_11_Template, 1, 0, "i", 95);
|
|
554
|
+
i0.ɵɵconditionalCreate(12, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_12_Template, 1, 0, "i", 96);
|
|
555
|
+
i0.ɵɵconditionalCreate(13, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_13_Template, 1, 0, "i", 95);
|
|
556
556
|
i0.ɵɵelementEnd()();
|
|
557
|
-
i0.ɵɵelementStart(14, "div",
|
|
557
|
+
i0.ɵɵelementStart(14, "div", 97)(15, "button", 98);
|
|
558
558
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_3_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SnapshotViewMode = "list"); });
|
|
559
|
-
i0.ɵɵelement(16, "i",
|
|
559
|
+
i0.ɵɵelement(16, "i", 99);
|
|
560
560
|
i0.ɵɵelementEnd();
|
|
561
|
-
i0.ɵɵelementStart(17, "button",
|
|
561
|
+
i0.ɵɵelementStart(17, "button", 98);
|
|
562
562
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_3_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SnapshotViewMode = "card"); });
|
|
563
|
-
i0.ɵɵelement(18, "i",
|
|
563
|
+
i0.ɵɵelement(18, "i", 100);
|
|
564
564
|
i0.ɵɵelementEnd()()();
|
|
565
|
-
i0.ɵɵelementStart(19, "div",
|
|
566
|
-
i0.ɵɵrepeaterCreate(20, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Template, 9, 7, "div",
|
|
565
|
+
i0.ɵɵelementStart(19, "div", 101);
|
|
566
|
+
i0.ɵɵrepeaterCreate(20, MjLabelDetailComponent_Conditional_43_Conditional_3_For_21_Template, 9, 7, "div", 102, i0.ɵɵrepeaterTrackByIdentity);
|
|
567
567
|
i0.ɵɵelementEnd();
|
|
568
|
-
i0.ɵɵconditionalCreate(22, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_22_Template, 4, 0, "div",
|
|
568
|
+
i0.ɵɵconditionalCreate(22, MjLabelDetailComponent_Conditional_43_Conditional_3_Conditional_22_Template, 4, 0, "div", 103);
|
|
569
569
|
i0.ɵɵelementEnd();
|
|
570
570
|
} if (rf & 2) {
|
|
571
571
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -597,13 +597,13 @@ function MjLabelDetailComponent_Conditional_43_Conditional_3_Template(rf, ctx) {
|
|
|
597
597
|
i0.ɵɵconditional(ctx_r0.FilteredSnapshotGroups.length === 0 ? 22 : -1);
|
|
598
598
|
} }
|
|
599
599
|
function MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
600
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
600
|
+
i0.ɵɵelement(0, "mj-loading", 124);
|
|
601
601
|
} }
|
|
602
602
|
function MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Conditional_7_For_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
603
603
|
i0.ɵɵelementContainer(0);
|
|
604
604
|
} }
|
|
605
605
|
function MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Conditional_7_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
606
|
-
i0.ɵɵtemplate(0, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Conditional_7_For_1_ng_container_0_Template, 1, 0, "ng-container",
|
|
606
|
+
i0.ɵɵtemplate(0, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Conditional_7_For_1_ng_container_0_Template, 1, 0, "ng-container", 131);
|
|
607
607
|
} if (rf & 2) {
|
|
608
608
|
const node_r14 = ctx.$implicit;
|
|
609
609
|
i0.ɵɵnextContext(4);
|
|
@@ -617,21 +617,21 @@ function MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Condi
|
|
|
617
617
|
i0.ɵɵrepeater(ctx_r0.DependencyTree);
|
|
618
618
|
} }
|
|
619
619
|
function MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
620
|
-
i0.ɵɵelementStart(0, "div",
|
|
620
|
+
i0.ɵɵelementStart(0, "div", 130)(1, "p");
|
|
621
621
|
i0.ɵɵtext(2, "No dependent entities found.");
|
|
622
622
|
i0.ɵɵelementEnd()();
|
|
623
623
|
} }
|
|
624
624
|
function MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
625
|
-
i0.ɵɵelementStart(0, "div",
|
|
626
|
-
i0.ɵɵelement(2, "i",
|
|
627
|
-
i0.ɵɵelementStart(3, "span",
|
|
625
|
+
i0.ɵɵelementStart(0, "div", 125)(1, "div", 126);
|
|
626
|
+
i0.ɵɵelement(2, "i", 127);
|
|
627
|
+
i0.ɵɵelementStart(3, "span", 128);
|
|
628
628
|
i0.ɵɵtext(4);
|
|
629
629
|
i0.ɵɵelementEnd();
|
|
630
|
-
i0.ɵɵelementStart(5, "span",
|
|
630
|
+
i0.ɵɵelementStart(5, "span", 129);
|
|
631
631
|
i0.ɵɵtext(6, "Root");
|
|
632
632
|
i0.ɵɵelementEnd()();
|
|
633
633
|
i0.ɵɵconditionalCreate(7, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Conditional_7_Template, 2, 0);
|
|
634
|
-
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Conditional_8_Template, 3, 0, "div",
|
|
634
|
+
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Conditional_8_Template, 3, 0, "div", 130);
|
|
635
635
|
i0.ɵɵelementEnd();
|
|
636
636
|
} if (rf & 2) {
|
|
637
637
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
@@ -645,17 +645,17 @@ function MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Templ
|
|
|
645
645
|
i0.ɵɵconditional(ctx_r0.DependencyTree.length === 0 ? 8 : -1);
|
|
646
646
|
} }
|
|
647
647
|
function MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
648
|
-
i0.ɵɵelementStart(0, "div",
|
|
649
|
-
i0.ɵɵelement(1, "i",
|
|
648
|
+
i0.ɵɵelementStart(0, "div", 103);
|
|
649
|
+
i0.ɵɵelement(1, "i", 132);
|
|
650
650
|
i0.ɵɵelementStart(2, "p");
|
|
651
651
|
i0.ɵɵtext(3, "No entity associated with this label.");
|
|
652
652
|
i0.ɵɵelementEnd()();
|
|
653
653
|
} }
|
|
654
654
|
function MjLabelDetailComponent_Conditional_43_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
655
|
-
i0.ɵɵelementStart(0, "div",
|
|
656
|
-
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_1_Template, 1, 0, "mj-loading",
|
|
657
|
-
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Template, 9, 5, "div",
|
|
658
|
-
i0.ɵɵconditionalCreate(3, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_3_Template, 4, 0, "div",
|
|
655
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
656
|
+
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_1_Template, 1, 0, "mj-loading", 124);
|
|
657
|
+
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_2_Template, 9, 5, "div", 125);
|
|
658
|
+
i0.ɵɵconditionalCreate(3, MjLabelDetailComponent_Conditional_43_Conditional_4_Conditional_3_Template, 4, 0, "div", 103);
|
|
659
659
|
i0.ɵɵelementEnd();
|
|
660
660
|
} if (rf & 2) {
|
|
661
661
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -667,16 +667,16 @@ function MjLabelDetailComponent_Conditional_43_Conditional_4_Template(rf, ctx) {
|
|
|
667
667
|
i0.ɵɵconditional(!ctx_r0.IsLoadingDependencies && !ctx_r0.Label.EntityID ? 3 : -1);
|
|
668
668
|
} }
|
|
669
669
|
function MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
670
|
-
i0.ɵɵelement(0, "i",
|
|
670
|
+
i0.ɵɵelement(0, "i", 141);
|
|
671
671
|
} if (rf & 2) {
|
|
672
672
|
const node_r17 = i0.ɵɵnextContext().$implicit;
|
|
673
673
|
i0.ɵɵclassProp("expanded", node_r17.IsExpanded);
|
|
674
674
|
} }
|
|
675
675
|
function MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
676
|
-
i0.ɵɵelement(0, "span",
|
|
676
|
+
i0.ɵɵelement(0, "span", 136);
|
|
677
677
|
} }
|
|
678
678
|
function MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
679
|
-
i0.ɵɵelementStart(0, "span",
|
|
679
|
+
i0.ɵɵelementStart(0, "span", 140);
|
|
680
680
|
i0.ɵɵtext(1);
|
|
681
681
|
i0.ɵɵelementEnd();
|
|
682
682
|
} if (rf & 2) {
|
|
@@ -688,7 +688,7 @@ function MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_10_For_
|
|
|
688
688
|
i0.ɵɵelementContainer(0);
|
|
689
689
|
} }
|
|
690
690
|
function MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_10_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
691
|
-
i0.ɵɵtemplate(0, MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_10_For_1_ng_container_0_Template, 1, 0, "ng-container",
|
|
691
|
+
i0.ɵɵtemplate(0, MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_10_For_1_ng_container_0_Template, 1, 0, "ng-container", 131);
|
|
692
692
|
} if (rf & 2) {
|
|
693
693
|
const child_r18 = ctx.$implicit;
|
|
694
694
|
i0.ɵɵnextContext(3);
|
|
@@ -703,18 +703,18 @@ function MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_10_Temp
|
|
|
703
703
|
} }
|
|
704
704
|
function MjLabelDetailComponent_Conditional_43_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
705
705
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
706
|
-
i0.ɵɵelementStart(0, "div",
|
|
706
|
+
i0.ɵɵelementStart(0, "div", 133)(1, "div", 134);
|
|
707
707
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_ng_template_5_Template_div_click_1_listener() { const node_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ToggleDependencyNode(node_r17)); });
|
|
708
|
-
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_2_Template, 1, 2, "i",
|
|
709
|
-
i0.ɵɵconditionalCreate(3, MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_3_Template, 1, 0, "span",
|
|
710
|
-
i0.ɵɵelement(4, "i",
|
|
711
|
-
i0.ɵɵelementStart(5, "span",
|
|
708
|
+
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_2_Template, 1, 2, "i", 135);
|
|
709
|
+
i0.ɵɵconditionalCreate(3, MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_3_Template, 1, 0, "span", 136);
|
|
710
|
+
i0.ɵɵelement(4, "i", 137);
|
|
711
|
+
i0.ɵɵelementStart(5, "span", 138);
|
|
712
712
|
i0.ɵɵtext(6);
|
|
713
713
|
i0.ɵɵelementEnd();
|
|
714
|
-
i0.ɵɵelementStart(7, "span",
|
|
714
|
+
i0.ɵɵelementStart(7, "span", 139);
|
|
715
715
|
i0.ɵɵtext(8);
|
|
716
716
|
i0.ɵɵelementEnd();
|
|
717
|
-
i0.ɵɵconditionalCreate(9, MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_9_Template, 2, 2, "span",
|
|
717
|
+
i0.ɵɵconditionalCreate(9, MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_9_Template, 2, 2, "span", 140);
|
|
718
718
|
i0.ɵɵelementEnd();
|
|
719
719
|
i0.ɵɵconditionalCreate(10, MjLabelDetailComponent_Conditional_43_ng_template_5_Conditional_10_Template, 2, 0);
|
|
720
720
|
i0.ɵɵelementEnd();
|
|
@@ -738,25 +738,25 @@ function MjLabelDetailComponent_Conditional_43_ng_template_5_Template(rf, ctx) {
|
|
|
738
738
|
i0.ɵɵconditional(node_r17.IsExpanded && node_r17.Children.length > 0 ? 10 : -1);
|
|
739
739
|
} }
|
|
740
740
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
741
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
741
|
+
i0.ɵɵelement(0, "mj-loading", 142);
|
|
742
742
|
} }
|
|
743
743
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
744
744
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
745
|
-
i0.ɵɵelementStart(0, "div",
|
|
745
|
+
i0.ɵɵelementStart(0, "div", 148)(1, "button", 150);
|
|
746
746
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_16_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.ExpandAllDiffGroups()); });
|
|
747
|
-
i0.ɵɵelement(2, "i",
|
|
747
|
+
i0.ɵɵelement(2, "i", 151);
|
|
748
748
|
i0.ɵɵelementStart(3, "span");
|
|
749
749
|
i0.ɵɵtext(4, "Expand All");
|
|
750
750
|
i0.ɵɵelementEnd()();
|
|
751
|
-
i0.ɵɵelementStart(5, "button",
|
|
751
|
+
i0.ɵɵelementStart(5, "button", 152);
|
|
752
752
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_16_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r19); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.CollapseAllDiffGroups()); });
|
|
753
|
-
i0.ɵɵelement(6, "i",
|
|
753
|
+
i0.ɵɵelement(6, "i", 153);
|
|
754
754
|
i0.ɵɵelementStart(7, "span");
|
|
755
755
|
i0.ɵɵtext(8, "Collapse All");
|
|
756
756
|
i0.ɵɵelementEnd()()();
|
|
757
757
|
} }
|
|
758
758
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
759
|
-
i0.ɵɵelementStart(0, "span",
|
|
759
|
+
i0.ɵɵelementStart(0, "span", 168);
|
|
760
760
|
i0.ɵɵtext(1);
|
|
761
761
|
i0.ɵɵpipe(2, "slice");
|
|
762
762
|
i0.ɵɵelementEnd();
|
|
@@ -766,10 +766,10 @@ function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Condi
|
|
|
766
766
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, field_r22.OldValue, 0, 40));
|
|
767
767
|
} }
|
|
768
768
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
769
|
-
i0.ɵɵelement(0, "i",
|
|
769
|
+
i0.ɵɵelement(0, "i", 169);
|
|
770
770
|
} }
|
|
771
771
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
772
|
-
i0.ɵɵelementStart(0, "span",
|
|
772
|
+
i0.ɵɵelementStart(0, "span", 170);
|
|
773
773
|
i0.ɵɵtext(1);
|
|
774
774
|
i0.ɵɵpipe(2, "slice");
|
|
775
775
|
i0.ɵɵelementEnd();
|
|
@@ -779,12 +779,12 @@ function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Condi
|
|
|
779
779
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, field_r22.NewValue, 0, 40));
|
|
780
780
|
} }
|
|
781
781
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
782
|
-
i0.ɵɵelementStart(0, "div",
|
|
782
|
+
i0.ɵɵelementStart(0, "div", 166)(1, "span", 167);
|
|
783
783
|
i0.ɵɵtext(2);
|
|
784
784
|
i0.ɵɵelementEnd();
|
|
785
|
-
i0.ɵɵconditionalCreate(3, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Conditional_3_Template, 3, 5, "span",
|
|
786
|
-
i0.ɵɵconditionalCreate(4, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Conditional_4_Template, 1, 0, "i",
|
|
787
|
-
i0.ɵɵconditionalCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Conditional_5_Template, 3, 5, "span",
|
|
785
|
+
i0.ɵɵconditionalCreate(3, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Conditional_3_Template, 3, 5, "span", 168);
|
|
786
|
+
i0.ɵɵconditionalCreate(4, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Conditional_4_Template, 1, 0, "i", 169);
|
|
787
|
+
i0.ɵɵconditionalCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Conditional_5_Template, 3, 5, "span", 170);
|
|
788
788
|
i0.ɵɵelementEnd();
|
|
789
789
|
} if (rf & 2) {
|
|
790
790
|
const field_r22 = ctx.$implicit;
|
|
@@ -800,8 +800,8 @@ function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Condi
|
|
|
800
800
|
i0.ɵɵconditional(field_r22.NewValue ? 5 : -1);
|
|
801
801
|
} }
|
|
802
802
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
803
|
-
i0.ɵɵelementStart(0, "div",
|
|
804
|
-
i0.ɵɵrepeaterCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Template, 6, 5, "div",
|
|
803
|
+
i0.ɵɵelementStart(0, "div", 165);
|
|
804
|
+
i0.ɵɵrepeaterCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_For_2_Template, 6, 5, "div", 166, i0.ɵɵrepeaterTrackByIdentity);
|
|
805
805
|
i0.ɵɵelementEnd();
|
|
806
806
|
} if (rf & 2) {
|
|
807
807
|
const record_r23 = i0.ɵɵnextContext().$implicit;
|
|
@@ -809,13 +809,13 @@ function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Condi
|
|
|
809
809
|
i0.ɵɵrepeater(record_r23.FieldChanges);
|
|
810
810
|
} }
|
|
811
811
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
812
|
-
i0.ɵɵelementStart(0, "div",
|
|
813
|
-
i0.ɵɵelement(2, "i",
|
|
814
|
-
i0.ɵɵelementStart(3, "span",
|
|
812
|
+
i0.ɵɵelementStart(0, "div", 161)(1, "div", 162);
|
|
813
|
+
i0.ɵɵelement(2, "i", 163);
|
|
814
|
+
i0.ɵɵelementStart(3, "span", 164);
|
|
815
815
|
i0.ɵɵtext(4);
|
|
816
816
|
i0.ɵɵpipe(5, "slice");
|
|
817
817
|
i0.ɵɵelementEnd()();
|
|
818
|
-
i0.ɵɵconditionalCreate(6, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_Template, 3, 0, "div",
|
|
818
|
+
i0.ɵɵconditionalCreate(6, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Conditional_6_Template, 3, 0, "div", 165);
|
|
819
819
|
i0.ɵɵelementEnd();
|
|
820
820
|
} if (rf & 2) {
|
|
821
821
|
const record_r23 = ctx.$implicit;
|
|
@@ -829,8 +829,8 @@ function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Condi
|
|
|
829
829
|
i0.ɵɵconditional(record_r23.FieldChanges.length > 0 ? 6 : -1);
|
|
830
830
|
} }
|
|
831
831
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
832
|
-
i0.ɵɵelementStart(0, "div",
|
|
833
|
-
i0.ɵɵrepeaterCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Template, 7, 9, "div",
|
|
832
|
+
i0.ɵɵelementStart(0, "div", 160);
|
|
833
|
+
i0.ɵɵrepeaterCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_For_2_Template, 7, 9, "div", 161, i0.ɵɵrepeaterTrackByIdentity);
|
|
834
834
|
i0.ɵɵelementEnd();
|
|
835
835
|
} if (rf & 2) {
|
|
836
836
|
const group_r21 = i0.ɵɵnextContext().$implicit;
|
|
@@ -839,16 +839,16 @@ function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Condi
|
|
|
839
839
|
} }
|
|
840
840
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
841
841
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
842
|
-
i0.ɵɵelementStart(0, "div",
|
|
842
|
+
i0.ɵɵelementStart(0, "div", 154)(1, "div", 155);
|
|
843
843
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Template_div_click_1_listener() { const group_r21 = i0.ɵɵrestoreView(_r20).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.ToggleDiffGroup(group_r21)); });
|
|
844
|
-
i0.ɵɵelement(2, "i",
|
|
845
|
-
i0.ɵɵelementStart(4, "span",
|
|
844
|
+
i0.ɵɵelement(2, "i", 156)(3, "i", 157);
|
|
845
|
+
i0.ɵɵelementStart(4, "span", 158);
|
|
846
846
|
i0.ɵɵtext(5);
|
|
847
847
|
i0.ɵɵelementEnd();
|
|
848
|
-
i0.ɵɵelementStart(6, "span",
|
|
848
|
+
i0.ɵɵelementStart(6, "span", 159);
|
|
849
849
|
i0.ɵɵtext(7);
|
|
850
850
|
i0.ɵɵelementEnd()();
|
|
851
|
-
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_Template, 3, 0, "div",
|
|
851
|
+
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Conditional_8_Template, 3, 0, "div", 160);
|
|
852
852
|
i0.ɵɵelementEnd();
|
|
853
853
|
} if (rf & 2) {
|
|
854
854
|
const group_r21 = ctx.$implicit;
|
|
@@ -865,8 +865,8 @@ function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Condi
|
|
|
865
865
|
i0.ɵɵconditional(group_r21.IsExpanded ? 8 : -1);
|
|
866
866
|
} }
|
|
867
867
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
868
|
-
i0.ɵɵelementStart(0, "div",
|
|
869
|
-
i0.ɵɵrepeaterCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Template, 9, 7, "div",
|
|
868
|
+
i0.ɵɵelementStart(0, "div", 149);
|
|
869
|
+
i0.ɵɵrepeaterCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_For_2_Template, 9, 7, "div", 154, i0.ɵɵrepeaterTrackByIdentity);
|
|
870
870
|
i0.ɵɵelementEnd();
|
|
871
871
|
} if (rf & 2) {
|
|
872
872
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
@@ -874,34 +874,34 @@ function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Condi
|
|
|
874
874
|
i0.ɵɵrepeater(ctx_r0.DiffResult.EntityGroups);
|
|
875
875
|
} }
|
|
876
876
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
877
|
-
i0.ɵɵelementStart(0, "div",
|
|
878
|
-
i0.ɵɵelement(1, "i",
|
|
877
|
+
i0.ɵɵelementStart(0, "div", 103);
|
|
878
|
+
i0.ɵɵelement(1, "i", 171);
|
|
879
879
|
i0.ɵɵelementStart(2, "p");
|
|
880
880
|
i0.ɵɵtext(3, "No changes detected since this label was created.");
|
|
881
881
|
i0.ɵɵelementEnd()();
|
|
882
882
|
} }
|
|
883
883
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
884
|
-
i0.ɵɵelementStart(0, "div",
|
|
884
|
+
i0.ɵɵelementStart(0, "div", 143)(1, "div", 144)(2, "span", 145);
|
|
885
885
|
i0.ɵɵtext(3);
|
|
886
886
|
i0.ɵɵelementEnd();
|
|
887
|
-
i0.ɵɵelementStart(4, "span",
|
|
887
|
+
i0.ɵɵelementStart(4, "span", 146);
|
|
888
888
|
i0.ɵɵtext(5, "Changed");
|
|
889
889
|
i0.ɵɵelementEnd()();
|
|
890
|
-
i0.ɵɵelementStart(6, "div",
|
|
890
|
+
i0.ɵɵelementStart(6, "div", 144)(7, "span", 147);
|
|
891
891
|
i0.ɵɵtext(8);
|
|
892
892
|
i0.ɵɵelementEnd();
|
|
893
|
-
i0.ɵɵelementStart(9, "span",
|
|
893
|
+
i0.ɵɵelementStart(9, "span", 146);
|
|
894
894
|
i0.ɵɵtext(10, "Unchanged");
|
|
895
895
|
i0.ɵɵelementEnd()();
|
|
896
|
-
i0.ɵɵelementStart(11, "div",
|
|
896
|
+
i0.ɵɵelementStart(11, "div", 144)(12, "span", 147);
|
|
897
897
|
i0.ɵɵtext(13);
|
|
898
898
|
i0.ɵɵelementEnd();
|
|
899
|
-
i0.ɵɵelementStart(14, "span",
|
|
899
|
+
i0.ɵɵelementStart(14, "span", 146);
|
|
900
900
|
i0.ɵɵtext(15, "Entities");
|
|
901
901
|
i0.ɵɵelementEnd()()();
|
|
902
|
-
i0.ɵɵconditionalCreate(16, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_16_Template, 9, 0, "div",
|
|
903
|
-
i0.ɵɵconditionalCreate(17, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_Template, 3, 0, "div",
|
|
904
|
-
i0.ɵɵconditionalCreate(18, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_18_Template, 4, 0, "div",
|
|
902
|
+
i0.ɵɵconditionalCreate(16, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_16_Template, 9, 0, "div", 148);
|
|
903
|
+
i0.ɵɵconditionalCreate(17, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_17_Template, 3, 0, "div", 149);
|
|
904
|
+
i0.ɵɵconditionalCreate(18, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Conditional_18_Template, 4, 0, "div", 103);
|
|
905
905
|
} if (rf & 2) {
|
|
906
906
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
907
907
|
i0.ɵɵadvance(3);
|
|
@@ -918,8 +918,8 @@ function MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Templ
|
|
|
918
918
|
i0.ɵɵconditional(ctx_r0.DiffResult.EntityGroups.length === 0 && ctx_r0.DiffResult.Summary.Changed === 0 ? 18 : -1);
|
|
919
919
|
} }
|
|
920
920
|
function MjLabelDetailComponent_Conditional_43_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
921
|
-
i0.ɵɵelementStart(0, "div",
|
|
922
|
-
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_1_Template, 1, 0, "mj-loading",
|
|
921
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
922
|
+
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_1_Template, 1, 0, "mj-loading", 142);
|
|
923
923
|
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_Conditional_7_Conditional_2_Template, 19, 6);
|
|
924
924
|
i0.ɵɵelementEnd();
|
|
925
925
|
} if (rf & 2) {
|
|
@@ -930,7 +930,7 @@ function MjLabelDetailComponent_Conditional_43_Conditional_7_Template(rf, ctx) {
|
|
|
930
930
|
i0.ɵɵconditional(!ctx_r0.IsLoadingDiff && ctx_r0.DiffResult ? 2 : -1);
|
|
931
931
|
} }
|
|
932
932
|
function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
933
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
933
|
+
i0.ɵɵelement(0, "mj-loading", 172);
|
|
934
934
|
} }
|
|
935
935
|
function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_0_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
936
936
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -942,17 +942,17 @@ function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Condi
|
|
|
942
942
|
i0.ɵɵtextInterpolate1(" \u00B7 ", restore_r24.FailedItems, " failed");
|
|
943
943
|
} }
|
|
944
944
|
function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_0_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
945
|
-
i0.ɵɵelementStart(0, "div",
|
|
946
|
-
i0.ɵɵelement(2, "i",
|
|
945
|
+
i0.ɵɵelementStart(0, "div", 175)(1, "div", 176);
|
|
946
|
+
i0.ɵɵelement(2, "i", 177);
|
|
947
947
|
i0.ɵɵelementEnd();
|
|
948
|
-
i0.ɵɵelementStart(3, "div",
|
|
948
|
+
i0.ɵɵelementStart(3, "div", 178)(4, "span", 179);
|
|
949
949
|
i0.ɵɵtext(5);
|
|
950
950
|
i0.ɵɵelementEnd();
|
|
951
|
-
i0.ɵɵelementStart(6, "span",
|
|
951
|
+
i0.ɵɵelementStart(6, "span", 180);
|
|
952
952
|
i0.ɵɵtext(7);
|
|
953
953
|
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_0_For_6_Conditional_8_Template, 2, 1, "span");
|
|
954
954
|
i0.ɵɵelementEnd()();
|
|
955
|
-
i0.ɵɵelementStart(9, "span",
|
|
955
|
+
i0.ɵɵelementStart(9, "span", 181);
|
|
956
956
|
i0.ɵɵtext(10);
|
|
957
957
|
i0.ɵɵelementEnd()();
|
|
958
958
|
} if (rf & 2) {
|
|
@@ -970,12 +970,12 @@ function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Condi
|
|
|
970
970
|
i0.ɵɵtextInterpolate(ctx_r0.FormatRelativeDate(restore_r24.__mj_CreatedAt));
|
|
971
971
|
} }
|
|
972
972
|
function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
973
|
-
i0.ɵɵelementStart(0, "div",
|
|
974
|
-
i0.ɵɵelement(2, "i",
|
|
973
|
+
i0.ɵɵelementStart(0, "div", 52)(1, "h3", 53);
|
|
974
|
+
i0.ɵɵelement(2, "i", 173);
|
|
975
975
|
i0.ɵɵtext(3, " Restore Operations ");
|
|
976
976
|
i0.ɵɵelementEnd();
|
|
977
|
-
i0.ɵɵelementStart(4, "div",
|
|
978
|
-
i0.ɵɵrepeaterCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_0_For_6_Template, 11, 6, "div",
|
|
977
|
+
i0.ɵɵelementStart(4, "div", 174);
|
|
978
|
+
i0.ɵɵrepeaterCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_0_For_6_Template, 11, 6, "div", 175, i0.ɵɵrepeaterTrackByIdentity);
|
|
979
979
|
i0.ɵɵelementEnd()();
|
|
980
980
|
} if (rf & 2) {
|
|
981
981
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
@@ -983,16 +983,16 @@ function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Condi
|
|
|
983
983
|
i0.ɵɵrepeater(ctx_r0.Restores);
|
|
984
984
|
} }
|
|
985
985
|
function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_1_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
986
|
-
i0.ɵɵelementStart(0, "div",
|
|
987
|
-
i0.ɵɵelement(2, "i",
|
|
986
|
+
i0.ɵɵelementStart(0, "div", 175)(1, "div", 183);
|
|
987
|
+
i0.ɵɵelement(2, "i", 184);
|
|
988
988
|
i0.ɵɵelementEnd();
|
|
989
|
-
i0.ɵɵelementStart(3, "div",
|
|
989
|
+
i0.ɵɵelementStart(3, "div", 178)(4, "span", 179);
|
|
990
990
|
i0.ɵɵtext(5);
|
|
991
991
|
i0.ɵɵelementEnd();
|
|
992
|
-
i0.ɵɵelementStart(6, "span",
|
|
992
|
+
i0.ɵɵelementStart(6, "span", 180)(7, "span", 185);
|
|
993
993
|
i0.ɵɵtext(8);
|
|
994
994
|
i0.ɵɵelementEnd()()();
|
|
995
|
-
i0.ɵɵelementStart(9, "span",
|
|
995
|
+
i0.ɵɵelementStart(9, "span", 181);
|
|
996
996
|
i0.ɵɵtext(10);
|
|
997
997
|
i0.ɵɵelementEnd()();
|
|
998
998
|
} if (rf & 2) {
|
|
@@ -1008,12 +1008,12 @@ function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Condi
|
|
|
1008
1008
|
i0.ɵɵtextInterpolate(ctx_r0.FormatRelativeDate(related_r25.__mj_CreatedAt));
|
|
1009
1009
|
} }
|
|
1010
1010
|
function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1011
|
-
i0.ɵɵelementStart(0, "div",
|
|
1012
|
-
i0.ɵɵelement(2, "i",
|
|
1011
|
+
i0.ɵɵelementStart(0, "div", 52)(1, "h3", 53);
|
|
1012
|
+
i0.ɵɵelement(2, "i", 182);
|
|
1013
1013
|
i0.ɵɵtext(3, " Related Labels ");
|
|
1014
1014
|
i0.ɵɵelementEnd();
|
|
1015
|
-
i0.ɵɵelementStart(4, "div",
|
|
1016
|
-
i0.ɵɵrepeaterCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_1_For_6_Template, 11, 4, "div",
|
|
1015
|
+
i0.ɵɵelementStart(4, "div", 174);
|
|
1016
|
+
i0.ɵɵrepeaterCreate(5, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_1_For_6_Template, 11, 4, "div", 175, i0.ɵɵrepeaterTrackByIdentity);
|
|
1017
1017
|
i0.ɵɵelementEnd()();
|
|
1018
1018
|
} if (rf & 2) {
|
|
1019
1019
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
@@ -1021,16 +1021,16 @@ function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Condi
|
|
|
1021
1021
|
i0.ɵɵrepeater(ctx_r0.RelatedLabels);
|
|
1022
1022
|
} }
|
|
1023
1023
|
function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1024
|
-
i0.ɵɵelementStart(0, "div",
|
|
1025
|
-
i0.ɵɵelement(1, "i",
|
|
1024
|
+
i0.ɵɵelementStart(0, "div", 103);
|
|
1025
|
+
i0.ɵɵelement(1, "i", 186);
|
|
1026
1026
|
i0.ɵɵelementStart(2, "p");
|
|
1027
1027
|
i0.ɵɵtext(3, "No restore history or related labels found.");
|
|
1028
1028
|
i0.ɵɵelementEnd()();
|
|
1029
1029
|
} }
|
|
1030
1030
|
function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1031
|
-
i0.ɵɵconditionalCreate(0, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_0_Template, 7, 0, "div",
|
|
1032
|
-
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_1_Template, 7, 0, "div",
|
|
1033
|
-
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_2_Template, 4, 0, "div",
|
|
1031
|
+
i0.ɵɵconditionalCreate(0, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_0_Template, 7, 0, "div", 52);
|
|
1032
|
+
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_1_Template, 7, 0, "div", 52);
|
|
1033
|
+
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Conditional_2_Template, 4, 0, "div", 103);
|
|
1034
1034
|
} if (rf & 2) {
|
|
1035
1035
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
1036
1036
|
i0.ɵɵconditional(ctx_r0.Restores.length > 0 ? 0 : -1);
|
|
@@ -1040,8 +1040,8 @@ function MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Templ
|
|
|
1040
1040
|
i0.ɵɵconditional(ctx_r0.Restores.length === 0 && ctx_r0.RelatedLabels.length === 0 ? 2 : -1);
|
|
1041
1041
|
} }
|
|
1042
1042
|
function MjLabelDetailComponent_Conditional_43_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1043
|
-
i0.ɵɵelementStart(0, "div",
|
|
1044
|
-
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_1_Template, 1, 0, "mj-loading",
|
|
1043
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
1044
|
+
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_1_Template, 1, 0, "mj-loading", 172);
|
|
1045
1045
|
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_Conditional_8_Conditional_2_Template, 3, 3);
|
|
1046
1046
|
i0.ɵɵelementEnd();
|
|
1047
1047
|
} if (rf & 2) {
|
|
@@ -1052,14 +1052,14 @@ function MjLabelDetailComponent_Conditional_43_Conditional_8_Template(rf, ctx) {
|
|
|
1052
1052
|
i0.ɵɵconditional(!ctx_r0.IsLoadingHistory ? 2 : -1);
|
|
1053
1053
|
} }
|
|
1054
1054
|
function MjLabelDetailComponent_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
1055
|
-
i0.ɵɵelementStart(0, "div",
|
|
1056
|
-
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_1_Template, 1, 0, "mj-loading",
|
|
1057
|
-
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_Conditional_2_Template, 46, 16, "div",
|
|
1058
|
-
i0.ɵɵconditionalCreate(3, MjLabelDetailComponent_Conditional_43_Conditional_3_Template, 23, 16, "div",
|
|
1059
|
-
i0.ɵɵconditionalCreate(4, MjLabelDetailComponent_Conditional_43_Conditional_4_Template, 4, 3, "div",
|
|
1055
|
+
i0.ɵɵelementStart(0, "div", 30);
|
|
1056
|
+
i0.ɵɵconditionalCreate(1, MjLabelDetailComponent_Conditional_43_Conditional_1_Template, 1, 0, "mj-loading", 50);
|
|
1057
|
+
i0.ɵɵconditionalCreate(2, MjLabelDetailComponent_Conditional_43_Conditional_2_Template, 46, 16, "div", 51);
|
|
1058
|
+
i0.ɵɵconditionalCreate(3, MjLabelDetailComponent_Conditional_43_Conditional_3_Template, 23, 16, "div", 51);
|
|
1059
|
+
i0.ɵɵconditionalCreate(4, MjLabelDetailComponent_Conditional_43_Conditional_4_Template, 4, 3, "div", 51);
|
|
1060
1060
|
i0.ɵɵtemplate(5, MjLabelDetailComponent_Conditional_43_ng_template_5_Template, 11, 10, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
1061
|
-
i0.ɵɵconditionalCreate(7, MjLabelDetailComponent_Conditional_43_Conditional_7_Template, 3, 2, "div",
|
|
1062
|
-
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_8_Template, 3, 2, "div",
|
|
1061
|
+
i0.ɵɵconditionalCreate(7, MjLabelDetailComponent_Conditional_43_Conditional_7_Template, 3, 2, "div", 51);
|
|
1062
|
+
i0.ɵɵconditionalCreate(8, MjLabelDetailComponent_Conditional_43_Conditional_8_Template, 3, 2, "div", 51);
|
|
1063
1063
|
i0.ɵɵelementEnd();
|
|
1064
1064
|
} if (rf & 2) {
|
|
1065
1065
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -1078,7 +1078,7 @@ function MjLabelDetailComponent_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
|
1078
1078
|
} }
|
|
1079
1079
|
function MjLabelDetailComponent_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
1080
1080
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
1081
|
-
i0.ɵɵelementStart(0, "div",
|
|
1081
|
+
i0.ɵɵelementStart(0, "div", 30)(1, "mj-record-micro-view", 187);
|
|
1082
1082
|
i0.ɵɵlistener("Close", function MjLabelDetailComponent_Conditional_44_Template_mj_record_micro_view_Close_1_listener() { i0.ɵɵrestoreView(_r26); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnBackFromMicroView()); })("EntityLinkClick", function MjLabelDetailComponent_Conditional_44_Template_mj_record_micro_view_EntityLinkClick_1_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnEntityLinkClick($event)); })("OpenRecord", function MjLabelDetailComponent_Conditional_44_Template_mj_record_micro_view_OpenRecord_1_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnOpenRecordClick($event)); });
|
|
1083
1083
|
i0.ɵɵelementEnd()();
|
|
1084
1084
|
} if (rf & 2) {
|
|
@@ -1975,7 +1975,7 @@ export class MjLabelDetailComponent {
|
|
|
1975
1975
|
static ɵfac = function MjLabelDetailComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MjLabelDetailComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
1976
1976
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelDetailComponent, selectors: [["mj-label-detail-panel"]], hostBindings: function MjLabelDetailComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1977
1977
|
i0.ɵɵlistener("keydown.escape", function MjLabelDetailComponent_keydown_escape_HostBindingHandler() { return ctx.OnEscapeKey(); }, i0.ɵɵresolveDocument);
|
|
1978
|
-
} }, inputs: { Label: "Label", AllLabels: "AllLabels", ItemCountMap: "ItemCountMap" }, outputs: { Close: "Close", LabelUpdated: "LabelUpdated", EntityLinkClick: "EntityLinkClick" }, standalone: false, decls: 45, vars: 22, consts: [["depNode", ""], [1, "panel-backdrop", 3, "click"], [1, "detail-panel"], [1, "resize-handle", 3, "mousedown"], [1, "resize-handle-grip"], [1, "panel-header"], [1, "header-info"], [1, "header-title-row"], [1, "header-scope-icon"], [1, "header-title"], [1, "header-status", 3, "ngClass"], [1, "header-scope-badge"], [1, "header-description"], [1, "header-actions"], ["title", "Archive this label", 1, "header-action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-box-archive"], ["title", "View changes", 1, "header-action-btn", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "summary-kpis"], [1, "summary-kpi"], [1, "kpi-mini-icon", 2, "background", "
|
|
1978
|
+
} }, inputs: { Label: "Label", AllLabels: "AllLabels", ItemCountMap: "ItemCountMap" }, outputs: { Close: "Close", LabelUpdated: "LabelUpdated", EntityLinkClick: "EntityLinkClick" }, standalone: false, decls: 45, vars: 22, consts: [["depNode", ""], [1, "panel-backdrop", 3, "click"], [1, "detail-panel"], [1, "resize-handle", 3, "mousedown"], [1, "resize-handle-grip"], [1, "panel-header"], [1, "header-info"], [1, "header-title-row"], [1, "header-scope-icon"], [1, "header-title"], [1, "header-status", 3, "ngClass"], [1, "header-scope-badge"], [1, "header-description"], [1, "header-actions"], ["title", "Archive this label", 1, "header-action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-box-archive"], ["title", "View changes", 1, "header-action-btn", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "summary-kpis"], [1, "summary-kpi"], [1, "kpi-mini-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-camera"], [1, "kpi-mini-content"], [1, "kpi-mini-value"], [1, "kpi-mini-label"], [1, "fa-solid", "fa-table"], [1, "tab-bar"], [1, "breadcrumb-bar"], [1, "tab-content"], [1, "kpi-mini-icon", 2, "background", "rgba(16, 185, 129, 0.1)", "color", "#10b981"], [1, "fa-solid", "fa-stopwatch"], [1, "kpi-mini-icon", 2, "background", "rgba(245, 158, 11, 0.1)", "color", "#f59e0b"], [1, "fa-solid", "fa-layer-group"], [1, "tab", 3, "click"], [1, "fa-solid", "fa-info-circle", "tab-icon"], [1, "fa-solid", "fa-camera", "tab-icon"], [1, "tab-count"], [1, "fa-solid", "fa-diagram-project", "tab-icon"], [1, "fa-solid", "fa-code-compare", "tab-icon"], [1, "fa-solid", "fa-clock-rotate-left", "tab-icon"], [1, "breadcrumb-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "breadcrumb-trail"], [1, "breadcrumb-item", "clickable", 3, "click"], [1, "fa-solid", "fa-camera", "breadcrumb-icon"], [1, "fa-solid", "fa-chevron-right", "breadcrumb-separator"], [1, "breadcrumb-item", "current"], [1, "fa-solid", "fa-file-lines", "breadcrumb-icon"], ["text", "Loading label data..."], [1, "tab-pane"], [1, "detail-section"], [1, "section-title"], [1, "fa-solid", "fa-info-circle", "section-icon"], [1, "detail-grid"], [1, "detail-field"], [1, "field-label"], [1, "field-value"], [1, "inline-badge", 3, "ngClass"], [2, "margin-right", "6px"], [1, "record-card"], [1, "fa-solid", "fa-clock", "section-icon"], [2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [1, "field-value", "field-mono"], [1, "record-card-main"], [1, "record-card-icon"], [1, "record-card-info"], [1, "record-card-name"], [1, "record-card-name", "record-card-name-loading"], [1, "record-card-entity"], [1, "record-card-id"], ["title", "Open record", 1, "record-card-open-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-align-left", "section-icon"], [1, "description-text"], [1, "fa-solid", "fa-user", 2, "margin-right", "6px", "opacity", "0.5"], [1, "fa-solid", "fa-sitemap", "section-icon"], [1, "hierarchy-item", "parent"], [1, "hierarchy-children"], [1, "fa-solid", "fa-arrow-up", "hierarchy-icon"], [1, "hierarchy-label"], [1, "hierarchy-name"], [1, "hierarchy-item", "child"], [1, "fa-solid", "fa-arrow-turn-down-right", "hierarchy-icon"], [1, "hierarchy-meta"], [1, "snapshot-toolbar"], [1, "snapshot-search"], [1, "fa-solid", "fa-search", "snapshot-search-icon"], ["type", "text", "placeholder", "Search by entity or record...", 1, "snapshot-search-input", 3, "ngModelChange", "ngModel"], [1, "snapshot-sort-toggle"], ["title", "Sort by name", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-arrow-down-a-z"], [1, "fa-solid", "fa-arrow-up-z-a"], ["title", "Sort by record count", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-arrow-down-9-1"], [1, "fa-solid", "fa-arrow-up-1-9"], [1, "snapshot-view-toggle"], [1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-list"], [1, "fa-solid", "fa-grip"], [1, "snapshot-groups"], [1, "snapshot-group"], [1, "tab-empty"], [1, "group-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "group-chevron"], [1, "group-entity-icon"], [1, "group-name"], [1, "group-count-inline"], [1, "group-content"], [1, "group-names-loading"], [1, "snapshot-cards"], ["text", "Loading record names...", "size", "small"], [1, "snapshot-list-item"], [1, "snapshot-list-item", 3, "click"], [1, "fa-solid", "fa-file-lines", "snapshot-item-icon"], [1, "snapshot-item-name"], [1, "fa-solid", "fa-chevron-right", "snapshot-item-arrow"], [1, "snapshot-card"], [1, "snapshot-card", 3, "click"], [1, "snapshot-card-header"], [1, "fa-solid", "fa-file-lines"], [1, "snapshot-card-name"], [1, "fa-solid", "fa-camera", "tab-empty-icon"], ["text", "Loading dependencies..."], [1, "dep-root"], [1, "dep-root-entity"], [1, "dep-root-icon"], [1, "dep-root-name"], [1, "dep-root-badge"], [1, "dep-empty"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "fa-solid", "fa-diagram-project", "tab-empty-icon"], [1, "dep-node"], [1, "dep-node-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "dep-chevron", 3, "expanded"], [1, "dep-node-spacer"], [1, "dep-node-icon"], [1, "dep-node-name"], [1, "dep-node-field"], [1, "dep-node-count"], [1, "fa-solid", "fa-chevron-right", "dep-chevron"], ["text", "Computing differences..."], [1, "diff-summary"], [1, "diff-stat"], [1, "diff-stat-value", "change-modified"], [1, "diff-stat-label"], [1, "diff-stat-value"], [1, "diff-toolbar"], [1, "diff-groups"], ["title", "Expand all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-down"], ["title", "Collapse all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-up"], [1, "diff-group"], [1, "diff-group-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "diff-chevron"], [1, "diff-group-icon"], [1, "diff-group-name"], [1, "diff-group-count", "change-modified"], [1, "diff-group-content"], [1, "diff-record"], [1, "diff-record-header"], [3, "ngClass"], [1, "diff-record-id"], [1, "diff-fields"], [1, "diff-field", 3, "ngClass"], [1, "diff-field-name"], [1, "diff-field-old"], [1, "fa-solid", "fa-arrow-right", "diff-field-arrow"], [1, "diff-field-new"], [1, "fa-solid", "fa-circle-check", "tab-empty-icon", 2, "color", "#10b981"], ["text", "Loading history..."], [1, "fa-solid", "fa-clock-rotate-left", "section-icon"], [1, "history-list"], [1, "history-item"], [1, "history-item-icon", 3, "ngClass"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "history-item-content"], [1, "history-item-title"], [1, "history-item-meta"], [1, "history-item-date"], [1, "fa-solid", "fa-tags", "section-icon"], [1, "history-item-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-tag"], [1, "inline-badge", "small", 3, "ngClass"], [1, "fa-solid", "fa-clock-rotate-left", "tab-empty-icon"], [3, "Close", "EntityLinkClick", "OpenRecord", "Data", "Inline"]], template: function MjLabelDetailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1979
1979
|
i0.ɵɵelementStart(0, "div", 1);
|
|
1980
1980
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Template_div_click_0_listener() { return ctx.OnBackdropClick(); });
|
|
1981
1981
|
i0.ɵɵelementEnd();
|
|
@@ -2017,8 +2017,8 @@ export class MjLabelDetailComponent {
|
|
|
2017
2017
|
i0.ɵɵelementStart(29, "span", 26);
|
|
2018
2018
|
i0.ɵɵtext(30, "Items");
|
|
2019
2019
|
i0.ɵɵelementEnd()()();
|
|
2020
|
-
i0.ɵɵelementStart(31, "div", 21)(32, "div",
|
|
2021
|
-
i0.ɵɵelement(33, "i",
|
|
2020
|
+
i0.ɵɵelementStart(31, "div", 21)(32, "div", 22);
|
|
2021
|
+
i0.ɵɵelement(33, "i", 27);
|
|
2022
2022
|
i0.ɵɵelementEnd();
|
|
2023
2023
|
i0.ɵɵelementStart(34, "div", 24)(35, "span", 25);
|
|
2024
2024
|
i0.ɵɵtext(36);
|
|
@@ -2029,10 +2029,10 @@ export class MjLabelDetailComponent {
|
|
|
2029
2029
|
i0.ɵɵconditionalCreate(39, MjLabelDetailComponent_Conditional_39_Template, 8, 1, "div", 21);
|
|
2030
2030
|
i0.ɵɵconditionalCreate(40, MjLabelDetailComponent_Conditional_40_Template, 8, 1, "div", 21);
|
|
2031
2031
|
i0.ɵɵelementEnd();
|
|
2032
|
-
i0.ɵɵconditionalCreate(41, MjLabelDetailComponent_Conditional_41_Template, 17, 11, "div",
|
|
2033
|
-
i0.ɵɵconditionalCreate(42, MjLabelDetailComponent_Conditional_42_Template, 11, 1, "div",
|
|
2034
|
-
i0.ɵɵconditionalCreate(43, MjLabelDetailComponent_Conditional_43_Template, 9, 6, "div",
|
|
2035
|
-
i0.ɵɵconditionalCreate(44, MjLabelDetailComponent_Conditional_44_Template, 2, 2, "div",
|
|
2032
|
+
i0.ɵɵconditionalCreate(41, MjLabelDetailComponent_Conditional_41_Template, 17, 11, "div", 28);
|
|
2033
|
+
i0.ɵɵconditionalCreate(42, MjLabelDetailComponent_Conditional_42_Template, 11, 1, "div", 29);
|
|
2034
|
+
i0.ɵɵconditionalCreate(43, MjLabelDetailComponent_Conditional_43_Template, 9, 6, "div", 30);
|
|
2035
|
+
i0.ɵɵconditionalCreate(44, MjLabelDetailComponent_Conditional_44_Template, 2, 2, "div", 30);
|
|
2036
2036
|
i0.ɵɵelementEnd();
|
|
2037
2037
|
} if (rf & 2) {
|
|
2038
2038
|
i0.ɵɵclassProp("visible", ctx.IsVisible);
|
|
@@ -2069,11 +2069,11 @@ export class MjLabelDetailComponent {
|
|
|
2069
2069
|
i0.ɵɵconditional(!ctx.ShowMicroView ? 43 : -1);
|
|
2070
2070
|
i0.ɵɵadvance();
|
|
2071
2071
|
i0.ɵɵconditional(ctx.ShowMicroView && ctx.MicroViewRecord ? 44 : -1);
|
|
2072
|
-
} }, dependencies: [i1.NgClass, i1.NgTemplateOutlet, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoadingComponent, i4.MjRecordMicroViewComponent, i1.SlicePipe], styles: ["\n\n\n\n\n\n\n.panel-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0);\n z-index: 1000;\n transition: background 0.3s ease;\n pointer-events: none;\n}\n\n.panel-backdrop.visible[_ngcontent-%COMP%] {\n background: rgba(0, 0, 0, 0.3);\n pointer-events: auto;\n}\n\n\n\n\n\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n height: 100vh;\n background: var(--card-background, #ffffff);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.12);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transform: translateX(100%);\n transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n \n\n min-width: 400px;\n max-width: 92vw;\n}\n\n.detail-panel.visible[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n\n\n\n\n\n\n\n.resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n left: -4px;\n top: 0;\n width: 8px;\n height: 100%;\n cursor: col-resize;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover .resize-handle-grip[_ngcontent-%COMP%], \n.resize-handle[_ngcontent-%COMP%]:active .resize-handle-grip[_ngcontent-%COMP%] {\n opacity: 1;\n background: #6366f1;\n}\n\n.resize-handle-grip[_ngcontent-%COMP%] {\n width: 3px;\n height: 40px;\n background: var(--border-color, #d1d5db);\n border-radius: 3px;\n opacity: 0;\n transition: opacity 0.2s ease, background 0.2s ease;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover {\n background: rgba(99, 102, 241, 0.04);\n}\n\n\n\n\n\n\n\n\n.breadcrumb-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 24px;\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n flex-shrink: 0;\n background: var(--hover-background, #f9fafb);\n}\n\n.breadcrumb-back[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 13px;\n flex-shrink: 0;\n}\n\n.breadcrumb-back[_ngcontent-%COMP%]:hover {\n background: var(--card-background, #ffffff);\n color: #6366f1;\n border-color: #6366f1;\n}\n\n.breadcrumb-trail[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n overflow: hidden;\n}\n\n.breadcrumb-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 5px;\n color: var(--text-secondary, #6b7280);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.breadcrumb-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: color 0.15s ease;\n}\n\n.breadcrumb-item.clickable[_ngcontent-%COMP%]:hover {\n color: #6366f1;\n}\n\n.breadcrumb-item.current[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n}\n\n.breadcrumb-separator[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--text-tertiary, #d1d5db);\n flex-shrink: 0;\n}\n\n.breadcrumb-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n flex-shrink: 0;\n}\n\n\n\n\n\n\n\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 20px 24px 16px;\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n flex-shrink: 0;\n}\n\n.header-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.header-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.header-scope-icon[_ngcontent-%COMP%] {\n color: #6366f1;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.header-title[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.header-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.header-scope-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: rgba(99, 102, 241, 0.08);\n color: #6366f1;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.header-description[_ngcontent-%COMP%] {\n margin: 8px 0 0 0;\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n line-height: 1.5;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n margin-left: 16px;\n}\n\n.header-action-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 14px;\n}\n\n.header-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n border-color: var(--border-hover, #d1d5db);\n}\n\n.header-action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: none;\n border: none;\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 16px;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n}\n\n\n\n.status-active[_ngcontent-%COMP%] { background: rgba(16, 185, 129, 0.1); color: #059669; }\n.status-archived[_ngcontent-%COMP%] { background: rgba(107, 114, 128, 0.1); color: #6b7280; }\n.status-restored[_ngcontent-%COMP%] { background: rgba(245, 158, 11, 0.1); color: #d97706; }\n\n\n\n\n\n\n\n\n.summary-kpis[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n flex-shrink: 0;\n overflow-x: auto;\n}\n\n.summary-kpi[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: var(--hover-background, #f9fafb);\n border-radius: 10px;\n flex-shrink: 0;\n}\n\n.kpi-mini-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border-radius: 8px;\n font-size: 15px;\n flex-shrink: 0;\n}\n\n.kpi-mini-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.kpi-mini-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1;\n}\n\n.kpi-mini-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n margin-top: 2px;\n}\n\n\n\n\n\n\n\n\n.tab-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n padding: 0 24px;\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n flex-shrink: 0;\n overflow-x: auto;\n}\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--text-primary, #1f2937);\n background: var(--hover-background, #f9fafb);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: #6366f1;\n border-bottom-color: #6366f1;\n font-weight: 600;\n}\n\n.tab-icon[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.tab-count[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: rgba(99, 102, 241, 0.1);\n color: #6366f1;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n\n\n\n\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.tab-pane[_ngcontent-%COMP%] {\n padding: 20px 24px;\n animation: _ngcontent-%COMP%_tabFadeIn 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_tabFadeIn {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.tab-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.tab-empty-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n color: var(--text-tertiary, #d1d5db);\n margin-bottom: 12px;\n}\n\n.tab-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-tertiary, #9ca3af);\n margin: 0;\n}\n\n\n\n\n\n\n\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 14px 0;\n padding-bottom: 10px;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.section-icon[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #9ca3af);\n font-size: 14px;\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 14px;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.field-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--text-tertiary, #9ca3af);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.field-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-primary, #1f2937);\n display: flex;\n align-items: center;\n}\n\n.field-mono[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n word-break: break-all;\n}\n\n.field-record-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #6366f1;\n}\n\n\n\n.record-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 16px 18px;\n background: rgba(99, 102, 241, 0.04);\n border: 1px solid rgba(99, 102, 241, 0.15);\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.record-card-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n flex: 1;\n}\n\n.record-card-icon[_ngcontent-%COMP%] {\n font-size: 22px;\n color: #6366f1;\n flex-shrink: 0;\n}\n\n.record-card-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.record-card-name[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.record-card-name-loading[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #9ca3af);\n font-weight: 500;\n font-style: italic;\n}\n\n.record-card-entity[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n}\n\n.record-card-id[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n font-family: 'SF Mono', 'Fira Code', monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.record-card-open-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #6366f1;\n color: #ffffff;\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n white-space: nowrap;\n}\n\n.record-card-open-btn[_ngcontent-%COMP%]:hover {\n background: #4f46e5;\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);\n}\n\n.inline-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.inline-badge.small[_ngcontent-%COMP%] {\n padding: 2px 8px;\n font-size: 11px;\n}\n\n.description-text[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n line-height: 1.6;\n margin: 0;\n}\n\n\n\n.hierarchy-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 14px;\n transition: background 0.15s ease;\n}\n\n.hierarchy-item[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.hierarchy-icon[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #9ca3af);\n font-size: 13px;\n width: 16px;\n text-align: center;\n}\n\n.hierarchy-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--text-tertiary, #9ca3af);\n text-transform: uppercase;\n}\n\n.hierarchy-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n}\n\n.hierarchy-meta[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n font-family: monospace;\n}\n\n.hierarchy-children[_ngcontent-%COMP%] {\n margin-left: 16px;\n border-left: 2px solid var(--border-color, #e5e7eb);\n padding-left: 8px;\n}\n\n\n\n\n\n\n\n\n.snapshot-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 16px;\n}\n\n.snapshot-search[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n}\n\n.snapshot-search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-tertiary, #9ca3af);\n font-size: 13px;\n}\n\n.snapshot-search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px 8px 36px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.snapshot-search-input[_ngcontent-%COMP%]:focus {\n border-color: #6366f1;\n}\n\n.snapshot-sort-toggle[_ngcontent-%COMP%], \n.snapshot-view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.toggle-btn-sm[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n background: transparent;\n border: none;\n cursor: pointer;\n color: var(--text-tertiary, #9ca3af);\n transition: all 0.15s ease;\n font-size: 12px;\n}\n\n.toggle-btn-sm[_ngcontent-%COMP%]:hover {\n color: var(--text-primary, #1f2937);\n}\n\n.toggle-btn-sm.active[_ngcontent-%COMP%] {\n color: #6366f1;\n background: rgba(99, 102, 241, 0.08);\n}\n\n.toggle-btn-sm[_ngcontent-%COMP%] + .toggle-btn-sm[_ngcontent-%COMP%] {\n border-left: 1px solid var(--border-color, #e5e7eb);\n}\n\n\n\n.snapshot-groups[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.snapshot-group[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.group-header[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.group-chevron[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n transition: transform 0.2s ease;\n width: 14px;\n text-align: center;\n}\n\n.group-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.group-entity-icon[_ngcontent-%COMP%] {\n color: #3b82f6;\n font-size: 14px;\n}\n\n.group-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n flex: 1;\n}\n\n.group-count-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n margin-left: 6px;\n background: rgba(59, 130, 246, 0.1);\n color: #3b82f6;\n border-radius: 10px;\n font-size: 12px;\n font-weight: 600;\n vertical-align: middle;\n}\n\n.group-content[_ngcontent-%COMP%] {\n border-top: 1px solid var(--border-color, #f3f4f6);\n animation: _ngcontent-%COMP%_tabFadeIn 0.15s ease;\n}\n\n.group-names-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 8px 14px;\n}\n\n\n\n.snapshot-list-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px 10px 40px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.snapshot-list-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.snapshot-list-item[_ngcontent-%COMP%]:hover {\n background: rgba(99, 102, 241, 0.04);\n}\n\n.snapshot-item-icon[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #9ca3af);\n font-size: 13px;\n}\n\n.snapshot-item-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.snapshot-item-id[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n font-family: monospace;\n}\n\n.snapshot-item-arrow[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #d1d5db);\n font-size: 11px;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.snapshot-list-item[_ngcontent-%COMP%]:hover .snapshot-item-arrow[_ngcontent-%COMP%] {\n color: #6366f1;\n transform: translateX(2px);\n}\n\n\n\n.snapshot-cards[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 10px;\n padding: 12px 14px;\n}\n\n.snapshot-card[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--hover-background, #f9fafb);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.snapshot-card[_ngcontent-%COMP%]:hover {\n border-color: #6366f1;\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.1);\n}\n\n.snapshot-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n}\n\n.snapshot-card-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #9ca3af);\n font-size: 12px;\n}\n\n.snapshot-card-name[_ngcontent-%COMP%] {\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.snapshot-card-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n font-family: monospace;\n}\n\n\n\n\n\n\n\n\n.dep-root[_ngcontent-%COMP%] {\n padding: 4px 0;\n}\n\n.dep-root-entity[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n background: rgba(99, 102, 241, 0.06);\n border: 1px solid rgba(99, 102, 241, 0.15);\n border-radius: 10px;\n margin-bottom: 12px;\n}\n\n.dep-root-icon[_ngcontent-%COMP%] {\n color: #6366f1;\n font-size: 16px;\n}\n\n.dep-root-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n flex: 1;\n}\n\n.dep-root-badge[_ngcontent-%COMP%] {\n padding: 2px 10px;\n background: #6366f1;\n color: #ffffff;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.dep-node[_ngcontent-%COMP%] {\n margin-left: 8px;\n border-left: 2px solid var(--border-color, #e5e7eb);\n}\n\n.dep-node-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-radius: 6px;\n}\n\n.dep-node-header[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.dep-chevron[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--text-tertiary, #9ca3af);\n transition: transform 0.2s ease;\n width: 12px;\n text-align: center;\n}\n\n.dep-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.dep-node-spacer[_ngcontent-%COMP%] {\n width: 12px;\n}\n\n.dep-node-icon[_ngcontent-%COMP%] {\n color: #3b82f6;\n font-size: 13px;\n}\n\n.dep-node-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n}\n\n.dep-node-field[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n font-style: italic;\n}\n\n.dep-node-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n padding: 1px 8px;\n background: var(--hover-background, #f3f4f6);\n border-radius: 8px;\n}\n\n.dep-empty[_ngcontent-%COMP%] {\n padding: 20px;\n text-align: center;\n}\n\n.dep-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-tertiary, #9ca3af);\n margin: 0;\n}\n\n\n\n\n\n\n\n\n.diff-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.diff-stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 12px 20px;\n background: var(--hover-background, #f9fafb);\n border-radius: 10px;\n min-width: 80px;\n}\n\n.diff-stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1;\n}\n\n.diff-stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n margin-top: 4px;\n}\n\n\n\n.diff-toolbar[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.toolbar-action-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 6px;\n background: var(--card-background, #ffffff);\n color: var(--text-secondary, #6b7280);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toolbar-action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.toolbar-action-btn[_ngcontent-%COMP%]:hover {\n border-color: #6366f1;\n color: #6366f1;\n background: rgba(99, 102, 241, 0.06);\n}\n\n.diff-groups[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.diff-group[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.diff-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.diff-group-header[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.diff-chevron[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n transition: transform 0.2s ease;\n width: 14px;\n text-align: center;\n}\n\n.diff-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.diff-group-icon[_ngcontent-%COMP%] {\n color: #3b82f6;\n font-size: 14px;\n}\n\n.diff-group-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n flex: 1;\n}\n\n.diff-group-count[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n padding: 2px 10px;\n border-radius: 10px;\n}\n\n.diff-group-content[_ngcontent-%COMP%] {\n border-top: 1px solid var(--border-color, #f3f4f6);\n animation: _ngcontent-%COMP%_tabFadeIn 0.15s ease;\n}\n\n.diff-record[_ngcontent-%COMP%] {\n padding: 10px 14px 10px 40px;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.diff-record[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.diff-record-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n.diff-record-id[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n font-family: monospace;\n}\n\n.diff-fields[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin-left: 22px;\n}\n\n.diff-field[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 12px;\n}\n\n.diff-field-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n min-width: 100px;\n}\n\n.diff-field-old[_ngcontent-%COMP%] {\n color: #ef4444;\n text-decoration: line-through;\n opacity: 0.7;\n font-family: monospace;\n font-size: 12px;\n}\n\n.diff-field-arrow[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #9ca3af);\n font-size: 10px;\n}\n\n.diff-field-new[_ngcontent-%COMP%] {\n color: #10b981;\n font-family: monospace;\n font-size: 12px;\n}\n\n\n\n.change-added[_ngcontent-%COMP%] { color: #10b981; }\n.change-modified[_ngcontent-%COMP%] { color: #f59e0b; }\n.change-removed[_ngcontent-%COMP%] { color: #ef4444; }\n\n.diff-field.change-added[_ngcontent-%COMP%] { background: rgba(16, 185, 129, 0.06); }\n.diff-field.change-modified[_ngcontent-%COMP%] { background: rgba(245, 158, 11, 0.06); }\n.diff-field.change-removed[_ngcontent-%COMP%] { background: rgba(239, 68, 68, 0.06); }\n\n\n\n\n\n\n\n\n.history-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.history-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 8px;\n transition: background 0.15s ease;\n}\n\n.history-item[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.history-item-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.history-item-icon.status-complete[_ngcontent-%COMP%] { background: rgba(16, 185, 129, 0.1); color: #10b981; }\n.history-item-icon.status-error[_ngcontent-%COMP%] { background: rgba(239, 68, 68, 0.1); color: #ef4444; }\n.history-item-icon.status-partial[_ngcontent-%COMP%] { background: rgba(245, 158, 11, 0.1); color: #f59e0b; }\n.history-item-icon.status-in-progress[_ngcontent-%COMP%] { background: rgba(59, 130, 246, 0.1); color: #3b82f6; }\n.history-item-icon.status-pending[_ngcontent-%COMP%] { background: rgba(107, 114, 128, 0.1); color: #6b7280; }\n\n.history-item-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.history-item-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n}\n\n.history-item-meta[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.history-item-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n flex-shrink: 0;\n}\n\n\n\n\n\n\n\n\n@media (max-width: 1024px) {\n .detail-panel[_ngcontent-%COMP%] {\n min-width: 360px;\n }\n\n .summary-kpis[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 768px) {\n .detail-panel[_ngcontent-%COMP%] {\n width: 100% !important;\n min-width: unset;\n }\n\n .resize-handle[_ngcontent-%COMP%] {\n display: none;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .summary-kpis[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 8px;\n padding: 12px 16px;\n }\n\n .summary-kpi[_ngcontent-%COMP%] {\n padding: 8px 10px;\n }\n\n .panel-header[_ngcontent-%COMP%] {\n padding: 16px 16px 12px;\n }\n\n .tab-bar[_ngcontent-%COMP%] {\n padding: 0 16px;\n }\n\n .tab-pane[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .breadcrumb-bar[_ngcontent-%COMP%] {\n padding: 8px 16px;\n }\n\n .snapshot-toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .diff-summary[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .diff-stat[_ngcontent-%COMP%] {\n padding: 10px 14px;\n min-width: 60px;\n }\n}\n\n@media (max-width: 480px) {\n .header-title[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .header-title-row[_ngcontent-%COMP%] {\n gap: 6px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n margin-left: 8px;\n }\n\n .tab[_ngcontent-%COMP%] {\n padding: 10px 10px;\n font-size: 12px;\n }\n\n .snapshot-cards[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"], changeDetection: 0 });
|
|
2072
|
+
} }, dependencies: [i1.NgClass, i1.NgTemplateOutlet, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoadingComponent, i4.MjRecordMicroViewComponent, i1.SlicePipe], styles: ["\n\n\n\n\n\n\n.panel-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: transparent;\n z-index: 1000;\n transition: background 0.3s ease;\n pointer-events: none;\n}\n\n.panel-backdrop.visible[_ngcontent-%COMP%] {\n background: var(--mj-bg-overlay);\n pointer-events: auto;\n}\n\n\n\n\n\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-lg);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transform: translateX(100%);\n transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n \n\n min-width: 400px;\n max-width: 92vw;\n}\n\n.detail-panel.visible[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n\n\n\n\n\n\n\n.resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n left: -4px;\n top: 0;\n width: 8px;\n height: 100%;\n cursor: col-resize;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover .resize-handle-grip[_ngcontent-%COMP%], \n.resize-handle[_ngcontent-%COMP%]:active .resize-handle-grip[_ngcontent-%COMP%] {\n opacity: 1;\n background: var(--mj-brand-primary);\n}\n\n.resize-handle-grip[_ngcontent-%COMP%] {\n width: 3px;\n height: 40px;\n background: var(--mj-border-strong);\n border-radius: 3px;\n opacity: 0;\n transition: opacity 0.2s ease, background 0.2s ease;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n}\n\n\n\n\n\n\n\n\n.breadcrumb-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n background: var(--mj-bg-surface-sunken);\n}\n\n.breadcrumb-back[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 13px;\n flex-shrink: 0;\n}\n\n.breadcrumb-back[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n}\n\n.breadcrumb-trail[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n overflow: hidden;\n}\n\n.breadcrumb-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 5px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.breadcrumb-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: color 0.15s ease;\n}\n\n.breadcrumb-item.clickable[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n}\n\n.breadcrumb-item.current[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.breadcrumb-separator[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--mj-border-strong);\n flex-shrink: 0;\n}\n\n.breadcrumb-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n flex-shrink: 0;\n}\n\n\n\n\n\n\n\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 20px 24px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.header-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.header-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.header-scope-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.header-title[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.header-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.header-scope-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.header-description[_ngcontent-%COMP%] {\n margin: 8px 0 0 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n margin-left: 16px;\n}\n\n.header-action-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 14px;\n}\n\n.header-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n.header-action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: none;\n border: none;\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 16px;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.status-active[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 10%, transparent); color: var(--mj-status-success); }\n.status-archived[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent); color: var(--mj-text-muted); }\n.status-restored[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent); color: var(--mj-status-warning); }\n\n\n\n\n\n\n\n\n.summary-kpis[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n overflow-x: auto;\n}\n\n.summary-kpi[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n flex-shrink: 0;\n}\n\n.kpi-mini-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border-radius: 8px;\n font-size: 15px;\n flex-shrink: 0;\n}\n\n.kpi-mini-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.kpi-mini-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-mini-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n}\n\n\n\n\n\n\n\n\n.tab-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n padding: 0 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n overflow-x: auto;\n}\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.tab-icon[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.tab-count[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n\n\n\n\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.tab-pane[_ngcontent-%COMP%] {\n padding: 20px 24px;\n animation: _ngcontent-%COMP%_tabFadeIn 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_tabFadeIn {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.tab-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.tab-empty-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n color: var(--mj-border-strong);\n margin-bottom: 12px;\n}\n\n.tab-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n\n\n\n\n\n\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 14px 0;\n padding-bottom: 10px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.section-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 14px;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.field-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.field-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n}\n\n.field-mono[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n word-break: break-all;\n}\n\n.field-record-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n\n\n.record-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 16px 18px;\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.record-card-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n flex: 1;\n}\n\n.record-card-icon[_ngcontent-%COMP%] {\n font-size: 22px;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.record-card-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.record-card-name[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.record-card-name-loading[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-weight: 500;\n font-style: italic;\n}\n\n.record-card-entity[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.record-card-id[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-family: 'SF Mono', 'Fira Code', monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.record-card-open-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n white-space: nowrap;\n}\n\n.record-card-open-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: var(--mj-shadow-md);\n}\n\n.inline-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.inline-badge.small[_ngcontent-%COMP%] {\n padding: 2px 8px;\n font-size: 11px;\n}\n\n.description-text[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.6;\n margin: 0;\n}\n\n\n\n.hierarchy-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 14px;\n transition: background 0.15s ease;\n}\n\n.hierarchy-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.hierarchy-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 13px;\n width: 16px;\n text-align: center;\n}\n\n.hierarchy-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n}\n\n.hierarchy-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.hierarchy-meta[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-family: monospace;\n}\n\n.hierarchy-children[_ngcontent-%COMP%] {\n margin-left: 16px;\n border-left: 2px solid var(--mj-border-default);\n padding-left: 8px;\n}\n\n\n\n\n\n\n\n\n.snapshot-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 16px;\n}\n\n.snapshot-search[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n}\n\n.snapshot-search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.snapshot-search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px 8px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.snapshot-search-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.snapshot-sort-toggle[_ngcontent-%COMP%], \n.snapshot-view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.toggle-btn-sm[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n background: transparent;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n font-size: 12px;\n}\n\n.toggle-btn-sm[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n}\n\n.toggle-btn-sm.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n}\n\n.toggle-btn-sm[_ngcontent-%COMP%] + .toggle-btn-sm[_ngcontent-%COMP%] {\n border-left: 1px solid var(--mj-border-default);\n}\n\n\n\n.snapshot-groups[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.snapshot-group[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.group-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.group-chevron[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n transition: transform 0.2s ease;\n width: 14px;\n text-align: center;\n}\n\n.group-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.group-entity-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.group-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.group-count-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n margin-left: 6px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 10px;\n font-size: 12px;\n font-weight: 600;\n vertical-align: middle;\n}\n\n.group-content[_ngcontent-%COMP%] {\n border-top: 1px solid var(--mj-border-default);\n animation: _ngcontent-%COMP%_tabFadeIn 0.15s ease;\n}\n\n.group-names-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 8px 14px;\n}\n\n\n\n.snapshot-list-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px 10px 40px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.snapshot-list-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.snapshot-list-item[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n}\n\n.snapshot-item-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.snapshot-item-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.snapshot-item-id[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-family: monospace;\n}\n\n.snapshot-item-arrow[_ngcontent-%COMP%] {\n color: var(--mj-border-strong);\n font-size: 11px;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.snapshot-list-item[_ngcontent-%COMP%]:hover .snapshot-item-arrow[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n transform: translateX(2px);\n}\n\n\n\n.snapshot-cards[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 10px;\n padding: 12px 14px;\n}\n\n.snapshot-card[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.snapshot-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.snapshot-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.snapshot-card-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.snapshot-card-name[_ngcontent-%COMP%] {\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.snapshot-card-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n font-family: monospace;\n}\n\n\n\n\n\n\n\n\n.dep-root[_ngcontent-%COMP%] {\n padding: 4px 0;\n}\n\n.dep-root-entity[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n border-radius: 10px;\n margin-bottom: 12px;\n}\n\n.dep-root-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 16px;\n}\n\n.dep-root-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.dep-root-badge[_ngcontent-%COMP%] {\n padding: 2px 10px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.dep-node[_ngcontent-%COMP%] {\n margin-left: 8px;\n border-left: 2px solid var(--mj-border-default);\n}\n\n.dep-node-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-radius: 6px;\n}\n\n.dep-node-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.dep-chevron[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: transform 0.2s ease;\n width: 12px;\n text-align: center;\n}\n\n.dep-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.dep-node-spacer[_ngcontent-%COMP%] {\n width: 12px;\n}\n\n.dep-node-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.dep-node-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.dep-node-field[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.dep-node-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n padding: 1px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n}\n\n.dep-empty[_ngcontent-%COMP%] {\n padding: 20px;\n text-align: center;\n}\n\n.dep-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n\n\n\n\n\n\n\n.diff-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.diff-stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 12px 20px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n min-width: 80px;\n}\n\n.diff-stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.diff-stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n}\n\n\n\n.diff-toolbar[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.toolbar-action-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toolbar-action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.toolbar-action-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.diff-groups[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.diff-group[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.diff-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.diff-group-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.diff-chevron[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n transition: transform 0.2s ease;\n width: 14px;\n text-align: center;\n}\n\n.diff-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.diff-group-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.diff-group-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.diff-group-count[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n padding: 2px 10px;\n border-radius: 10px;\n}\n\n.diff-group-content[_ngcontent-%COMP%] {\n border-top: 1px solid var(--mj-border-default);\n animation: _ngcontent-%COMP%_tabFadeIn 0.15s ease;\n}\n\n.diff-record[_ngcontent-%COMP%] {\n padding: 10px 14px 10px 40px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.diff-record[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.diff-record-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n.diff-record-id[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.diff-fields[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin-left: 22px;\n}\n\n.diff-field[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 12px;\n}\n\n.diff-field-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n min-width: 100px;\n}\n\n.diff-field-old[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: line-through;\n opacity: 0.7;\n font-family: monospace;\n font-size: 12px;\n}\n\n.diff-field-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 10px;\n}\n\n.diff-field-new[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-family: monospace;\n font-size: 12px;\n}\n\n\n\n.change-added[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n.change-modified[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n.change-removed[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n\n.diff-field.change-added[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 6%, transparent); }\n.diff-field.change-modified[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-warning) 6%, transparent); }\n.diff-field.change-removed[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-error) 6%, transparent); }\n\n\n\n\n\n\n\n\n.history-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.history-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 8px;\n transition: background 0.15s ease;\n}\n\n.history-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.history-item-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.history-item-icon.status-complete[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 10%, transparent); color: var(--mj-status-success); }\n.history-item-icon.status-error[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-error) 10%, transparent); color: var(--mj-status-error); }\n.history-item-icon.status-partial[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent); color: var(--mj-status-warning); }\n.history-item-icon.status-in-progress[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary); }\n.history-item-icon.status-pending[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent); color: var(--mj-text-muted); }\n\n.history-item-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.history-item-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.history-item-meta[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.history-item-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n flex-shrink: 0;\n}\n\n\n\n\n\n\n\n\n@media (max-width: 1024px) {\n .detail-panel[_ngcontent-%COMP%] {\n min-width: 360px;\n }\n\n .summary-kpis[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 768px) {\n .detail-panel[_ngcontent-%COMP%] {\n width: 100% !important;\n min-width: unset;\n }\n\n .resize-handle[_ngcontent-%COMP%] {\n display: none;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .summary-kpis[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 8px;\n padding: 12px 16px;\n }\n\n .summary-kpi[_ngcontent-%COMP%] {\n padding: 8px 10px;\n }\n\n .panel-header[_ngcontent-%COMP%] {\n padding: 16px 16px 12px;\n }\n\n .tab-bar[_ngcontent-%COMP%] {\n padding: 0 16px;\n }\n\n .tab-pane[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .breadcrumb-bar[_ngcontent-%COMP%] {\n padding: 8px 16px;\n }\n\n .snapshot-toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .diff-summary[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .diff-stat[_ngcontent-%COMP%] {\n padding: 10px 14px;\n min-width: 60px;\n }\n}\n\n@media (max-width: 480px) {\n .header-title[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .header-title-row[_ngcontent-%COMP%] {\n gap: 6px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n margin-left: 8px;\n }\n\n .tab[_ngcontent-%COMP%] {\n padding: 10px 10px;\n font-size: 12px;\n }\n\n .snapshot-cards[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"], changeDetection: 0 });
|
|
2073
2073
|
}
|
|
2074
2074
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MjLabelDetailComponent, [{
|
|
2075
2075
|
type: Component,
|
|
2076
|
-
args: [{ standalone: false, selector: 'mj-label-detail-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Backdrop overlay -->\n<div class=\"panel-backdrop\" [class.visible]=\"IsVisible\" (click)=\"OnBackdropClick()\"></div>\n\n<!-- Slide-in panel -->\n<div class=\"detail-panel\" [class.visible]=\"IsVisible\" [style.width.px]=\"PanelWidthPx\">\n <!-- Resize handle -->\n <div class=\"resize-handle\" (mousedown)=\"OnResizeStart($event)\">\n <div class=\"resize-handle-grip\"></div>\n </div>\n\n <!-- ============================================================ -->\n <!-- HEADER -->\n <!-- ============================================================ -->\n <div class=\"panel-header\">\n <div class=\"header-info\">\n <div class=\"header-title-row\">\n <i [class]=\"GetScopeIcon(Label.Scope)\" class=\"header-scope-icon\"></i>\n <h2 class=\"header-title\">{{Label.Name}}</h2>\n <span class=\"header-status\" [ngClass]=\"GetStatusClass(Label.Status)\">\n {{Label.Status}}\n </span>\n <span class=\"header-scope-badge\">{{Label.Scope}}</span>\n </div>\n @if (Label.Description) {\n <p class=\"header-description\">{{Label.Description}}</p>\n }\n </div>\n <div class=\"header-actions\">\n <button class=\"header-action-btn\" (click)=\"OnArchive()\"\n [disabled]=\"IsArchiving || Label.Status === 'Archived'\"\n title=\"Archive this label\">\n <i class=\"fa-solid fa-box-archive\"></i>\n </button>\n <button class=\"header-action-btn\" (click)=\"OnTabChange('changes')\" title=\"View changes\">\n <i class=\"fa-solid fa-code-compare\"></i>\n </button>\n <button class=\"close-btn\" (click)=\"OnClose()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n\n <!-- ============================================================ -->\n <!-- SUMMARY KPIs -->\n <!-- ============================================================ -->\n <div class=\"summary-kpis\">\n <div class=\"summary-kpi\">\n <div class=\"kpi-mini-icon\" style=\"background: rgba(99, 102, 241, 0.1); color: #6366f1;\">\n <i class=\"fa-solid fa-camera\"></i>\n </div>\n <div class=\"kpi-mini-content\">\n <span class=\"kpi-mini-value\">{{LabelItems.length || Label.ItemCount || GetItemCount(Label.ID)}}</span>\n <span class=\"kpi-mini-label\">Items</span>\n </div>\n </div>\n <div class=\"summary-kpi\">\n <div class=\"kpi-mini-icon\" style=\"background: rgba(59, 130, 246, 0.1); color: #3b82f6;\">\n <i class=\"fa-solid fa-table\"></i>\n </div>\n <div class=\"kpi-mini-content\">\n <span class=\"kpi-mini-value\">{{UniqueEntityCount}}</span>\n <span class=\"kpi-mini-label\">Entities</span>\n </div>\n </div>\n @if (Label.CreationDurationMS) {\n <div class=\"summary-kpi\">\n <div class=\"kpi-mini-icon\" style=\"background: rgba(16, 185, 129, 0.1); color: #10b981;\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n </div>\n <div class=\"kpi-mini-content\">\n <span class=\"kpi-mini-value\">{{FormatDuration(Label.CreationDurationMS)}}</span>\n <span class=\"kpi-mini-label\">Duration</span>\n </div>\n </div>\n }\n @if (ChildLabels.length > 0) {\n <div class=\"summary-kpi\">\n <div class=\"kpi-mini-icon\" style=\"background: rgba(245, 158, 11, 0.1); color: #f59e0b;\">\n <i class=\"fa-solid fa-layer-group\"></i>\n </div>\n <div class=\"kpi-mini-content\">\n <span class=\"kpi-mini-value\">{{ChildLabels.length}}</span>\n <span class=\"kpi-mini-label\">Children</span>\n </div>\n </div>\n }\n </div>\n\n <!-- ============================================================ -->\n <!-- TAB BAR (hidden when micro-view is active) -->\n <!-- ============================================================ -->\n @if (!ShowMicroView) {\n <div class=\"tab-bar\">\n <button class=\"tab\" [class.active]=\"ActiveTab === 'overview'\" (click)=\"OnTabChange('overview')\">\n <i class=\"fa-solid fa-info-circle tab-icon\"></i> Overview\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'snapshots'\" (click)=\"OnTabChange('snapshots')\">\n <i class=\"fa-solid fa-camera tab-icon\"></i> Snapshots\n @if (LabelItems.length > 0) {\n <span class=\"tab-count\">{{LabelItems.length}}</span>\n }\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'dependencies'\" (click)=\"OnTabChange('dependencies')\">\n <i class=\"fa-solid fa-diagram-project tab-icon\"></i> Dependencies\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'changes'\" (click)=\"OnTabChange('changes')\">\n <i class=\"fa-solid fa-code-compare tab-icon\"></i> Changes\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'history'\" (click)=\"OnTabChange('history')\">\n <i class=\"fa-solid fa-clock-rotate-left tab-icon\"></i> History\n </button>\n </div>\n }\n\n <!-- ============================================================ -->\n <!-- BREADCRUMB (shown when micro-view is active) -->\n <!-- ============================================================ -->\n @if (ShowMicroView) {\n <div class=\"breadcrumb-bar\">\n <button class=\"breadcrumb-back\" (click)=\"OnBackFromMicroView()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <div class=\"breadcrumb-trail\">\n <span class=\"breadcrumb-item clickable\" (click)=\"OnBackFromMicroView()\">\n <i class=\"fa-solid fa-camera breadcrumb-icon\"></i> Snapshots\n </span>\n <i class=\"fa-solid fa-chevron-right breadcrumb-separator\"></i>\n <span class=\"breadcrumb-item current\">\n <i class=\"fa-solid fa-file-lines breadcrumb-icon\"></i> {{BreadcrumbLabel}}\n </span>\n </div>\n </div>\n }\n\n <!-- ============================================================ -->\n <!-- TAB CONTENT (scrollable) - or inline micro-view -->\n <!-- ============================================================ -->\n @if (!ShowMicroView) {\n <div class=\"tab-content\">\n <!-- Loading state for items -->\n @if (IsLoadingItems && ActiveTab !== 'dependencies') {\n <mj-loading text=\"Loading label data...\"></mj-loading>\n }\n <!-- ======================================================== -->\n <!-- OVERVIEW TAB -->\n <!-- ======================================================== -->\n @if (ActiveTab === 'overview' && !IsLoadingItems) {\n <div class=\"tab-pane\">\n <!-- Metadata section -->\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-info-circle section-icon\"></i> Label Details\n </h3>\n <div class=\"detail-grid\">\n <div class=\"detail-field\">\n <span class=\"field-label\">Name</span>\n <span class=\"field-value\">{{Label.Name}}</span>\n </div>\n <div class=\"detail-field\">\n <span class=\"field-label\">Status</span>\n <span class=\"field-value\">\n <span class=\"inline-badge\" [ngClass]=\"GetStatusClass(Label.Status)\">{{Label.Status}}</span>\n </span>\n </div>\n <div class=\"detail-field\">\n <span class=\"field-label\">Scope</span>\n <span class=\"field-value\">\n <i [class]=\"GetScopeIcon(Label.Scope)\" style=\"margin-right: 6px;\"></i>{{Label.Scope}}\n </span>\n </div>\n @if (Label.EntityID) {\n <div class=\"detail-field\">\n <span class=\"field-label\">Entity</span>\n <span class=\"field-value\">\n <i [class]=\"OverviewEntityIcon\" style=\"margin-right: 6px; color: #3b82f6;\"></i>{{Label.Entity ?? resolveEntityName(Label.EntityID)}}\n </span>\n </div>\n }\n @if (Label.RecordID && Label.Scope !== 'Record') {\n <div class=\"detail-field\">\n <span class=\"field-label\">Record ID</span>\n <span class=\"field-value field-mono\">{{FormatRecordID(Label.RecordID)}}</span>\n </div>\n }\n @if (Label.ExternalSystemID) {\n <div class=\"detail-field\">\n <span class=\"field-label\">External Ref</span>\n <span class=\"field-value field-mono\">{{Label.ExternalSystemID}}</span>\n </div>\n }\n </div>\n </div>\n <!-- Record card (Record-scoped labels) -->\n @if (Label.Scope === 'Record' && Label.RecordID) {\n <div class=\"record-card\">\n <div class=\"record-card-main\">\n <i [class]=\"OverviewEntityIcon\" class=\"record-card-icon\"></i>\n <div class=\"record-card-info\">\n @if (OverviewRecordName) {\n <span class=\"record-card-name\">{{OverviewRecordName}}</span>\n }\n @if (!OverviewRecordName) {\n <span class=\"record-card-name record-card-name-loading\">Loading...</span>\n }\n <span class=\"record-card-entity\">{{Label.Entity ?? resolveEntityName(Label.EntityID)}}</span>\n <span class=\"record-card-id\">{{FormatRecordID(Label.RecordID)}}</span>\n </div>\n </div>\n <button class=\"record-card-open-btn\" (click)=\"OnOpenOverviewRecord()\" title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open\n </button>\n </div>\n }\n <!-- Description -->\n @if (Label.Description) {\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-align-left section-icon\"></i> Description\n </h3>\n <p class=\"description-text\">{{Label.Description}}</p>\n </div>\n }\n <!-- Creation info -->\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-clock section-icon\"></i> Creation\n </h3>\n <div class=\"detail-grid\">\n <div class=\"detail-field\">\n <span class=\"field-label\">Created</span>\n <span class=\"field-value\">{{FormatDate(Label.__mj_CreatedAt)}}</span>\n </div>\n @if (Label.CreatedByUser) {\n <div class=\"detail-field\">\n <span class=\"field-label\">Created By</span>\n <span class=\"field-value\">\n <i class=\"fa-solid fa-user\" style=\"margin-right: 6px; opacity: 0.5;\"></i>{{Label.CreatedByUser}}\n </span>\n </div>\n }\n @if (Label.CreationDurationMS) {\n <div class=\"detail-field\">\n <span class=\"field-label\">Capture Duration</span>\n <span class=\"field-value\">{{FormatDuration(Label.CreationDurationMS)}}</span>\n </div>\n }\n <div class=\"detail-field\">\n <span class=\"field-label\">Items Captured</span>\n <span class=\"field-value\">{{LabelItems.length}}</span>\n </div>\n </div>\n </div>\n <!-- Parent / Children -->\n @if (Label.ParentID || ChildLabels.length > 0) {\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-sitemap section-icon\"></i> Hierarchy\n </h3>\n <!-- Parent reference -->\n @if (Label.ParentID) {\n <div class=\"hierarchy-item parent\">\n <i class=\"fa-solid fa-arrow-up hierarchy-icon\"></i>\n <span class=\"hierarchy-label\">Parent:</span>\n <span class=\"hierarchy-name\">\n @for (pl of AllLabels; track pl) {\n @if (IsParentLabel(pl)) {\n <span>{{pl.Name}}</span>\n }\n }\n </span>\n </div>\n }\n <!-- Children -->\n @if (ChildLabels.length > 0) {\n <div class=\"hierarchy-children\">\n @for (child of ChildLabels; track child) {\n <div class=\"hierarchy-item child\">\n <i class=\"fa-solid fa-arrow-turn-down-right hierarchy-icon\"></i>\n <span class=\"hierarchy-name\">{{child.Name}}</span>\n @if (child.RecordID) {\n <span class=\"hierarchy-meta\">{{child.RecordID | slice:0:12}}...</span>\n }\n @if (child.ItemCount) {\n <span class=\"hierarchy-meta\">{{child.ItemCount}} items</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- ======================================================== -->\n <!-- SNAPSHOTS TAB -->\n <!-- ======================================================== -->\n @if (ActiveTab === 'snapshots' && !IsLoadingItems) {\n <div class=\"tab-pane\">\n <!-- Snapshot toolbar -->\n <div class=\"snapshot-toolbar\">\n <div class=\"snapshot-search\">\n <i class=\"fa-solid fa-search snapshot-search-icon\"></i>\n <input type=\"text\" class=\"snapshot-search-input\"\n placeholder=\"Search by entity or record...\"\n [ngModel]=\"SnapshotSearch\"\n (ngModelChange)=\"OnSnapshotSearchChange($event)\" />\n </div>\n <div class=\"snapshot-sort-toggle\">\n <button class=\"toggle-btn-sm\" [class.active]=\"SnapshotSortBy === 'name'\"\n (click)=\"OnSnapshotSortChange('name')\" title=\"Sort by name\">\n @if (SnapshotSortBy === 'name' && SnapshotSortDir === 'asc') {\n <i class=\"fa-solid fa-arrow-down-a-z\"></i>\n }\n @if (SnapshotSortBy === 'name' && SnapshotSortDir === 'desc') {\n <i class=\"fa-solid fa-arrow-up-z-a\"></i>\n }\n @if (SnapshotSortBy !== 'name') {\n <i class=\"fa-solid fa-arrow-down-a-z\"></i>\n }\n </button>\n <button class=\"toggle-btn-sm\" [class.active]=\"SnapshotSortBy === 'count'\"\n (click)=\"OnSnapshotSortChange('count')\" title=\"Sort by record count\">\n @if (SnapshotSortBy === 'count' && SnapshotSortDir === 'desc') {\n <i class=\"fa-solid fa-arrow-down-9-1\"></i>\n }\n @if (SnapshotSortBy === 'count' && SnapshotSortDir === 'asc') {\n <i class=\"fa-solid fa-arrow-up-1-9\"></i>\n }\n @if (SnapshotSortBy !== 'count') {\n <i class=\"fa-solid fa-arrow-down-9-1\"></i>\n }\n </button>\n </div>\n <div class=\"snapshot-view-toggle\">\n <button class=\"toggle-btn-sm\" [class.active]=\"SnapshotViewMode === 'list'\" (click)=\"SnapshotViewMode = 'list'\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n <button class=\"toggle-btn-sm\" [class.active]=\"SnapshotViewMode === 'card'\" (click)=\"SnapshotViewMode = 'card'\">\n <i class=\"fa-solid fa-grip\"></i>\n </button>\n </div>\n </div>\n <!-- Entity groups -->\n <div class=\"snapshot-groups\">\n @for (group of FilteredSnapshotGroups; track group) {\n <div class=\"snapshot-group\">\n <div class=\"group-header\" (click)=\"ToggleSnapshotGroup(group)\">\n <i class=\"fa-solid fa-chevron-right group-chevron\" [class.expanded]=\"group.IsExpanded\"></i>\n <i [class]=\"group.EntityIcon\" class=\"group-entity-icon\"></i>\n <span class=\"group-name\">{{group.EntityName}} <span class=\"group-count-inline\">{{group.Items.length}}</span></span>\n </div>\n @if (group.IsExpanded) {\n <div class=\"group-content\">\n <!-- Loading names indicator -->\n @if (group.IsLoadingNames) {\n <div class=\"group-names-loading\">\n <mj-loading text=\"Loading record names...\" size=\"small\"></mj-loading>\n </div>\n }\n <!-- List mode -->\n @if (SnapshotViewMode === 'list') {\n @for (item of group.Items; track item) {\n <div class=\"snapshot-list-item\"\n (click)=\"OpenMicroView(group.EntityName, item.RecordID, item.RecordChangeID, item.DisplayName)\">\n <i class=\"fa-solid fa-file-lines snapshot-item-icon\"></i>\n <span class=\"snapshot-item-name\">{{item.DisplayName}}</span>\n <i class=\"fa-solid fa-chevron-right snapshot-item-arrow\"></i>\n </div>\n }\n }\n <!-- Card mode -->\n @if (SnapshotViewMode === 'card') {\n <div class=\"snapshot-cards\">\n @for (item of group.Items; track item) {\n <div class=\"snapshot-card\"\n (click)=\"OpenMicroView(group.EntityName, item.RecordID, item.RecordChangeID, item.DisplayName)\">\n <div class=\"snapshot-card-header\">\n <i class=\"fa-solid fa-file-lines\"></i>\n <span class=\"snapshot-card-name\">{{item.DisplayName}}</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <!-- Empty state -->\n @if (FilteredSnapshotGroups.length === 0) {\n <div class=\"tab-empty\">\n <i class=\"fa-solid fa-camera tab-empty-icon\"></i>\n <p>No snapshot items found.</p>\n </div>\n }\n </div>\n }\n <!-- ======================================================== -->\n <!-- DEPENDENCIES TAB -->\n <!-- ======================================================== -->\n @if (ActiveTab === 'dependencies') {\n <div class=\"tab-pane\">\n @if (IsLoadingDependencies) {\n <mj-loading text=\"Loading dependencies...\"></mj-loading>\n }\n @if (!IsLoadingDependencies && Label.EntityID) {\n <div class=\"dep-root\">\n <div class=\"dep-root-entity\">\n <i [class]=\"GetScopeIcon(Label.Scope)\" class=\"dep-root-icon\"></i>\n <span class=\"dep-root-name\">{{Label.Entity ?? resolveEntityName(Label.EntityID)}}</span>\n <span class=\"dep-root-badge\">Root</span>\n </div>\n @if (DependencyTree.length > 0) {\n @for (node of DependencyTree; track node) {\n <ng-container *ngTemplateOutlet=\"depNode; context: { $implicit: node }\"></ng-container>\n }\n }\n @if (DependencyTree.length === 0) {\n <div class=\"dep-empty\">\n <p>No dependent entities found.</p>\n </div>\n }\n </div>\n }\n @if (!IsLoadingDependencies && !Label.EntityID) {\n <div class=\"tab-empty\">\n <i class=\"fa-solid fa-diagram-project tab-empty-icon\"></i>\n <p>No entity associated with this label.</p>\n </div>\n }\n </div>\n }\n <!-- Dependency tree node template -->\n <ng-template #depNode let-node>\n <div class=\"dep-node\" [style.padding-left.px]=\"node.Depth * 24\">\n <div class=\"dep-node-header\" (click)=\"ToggleDependencyNode(node)\">\n @if (node.Children.length > 0) {\n <i class=\"fa-solid fa-chevron-right dep-chevron\"\n [class.expanded]=\"node.IsExpanded\"\n ></i>\n }\n @if (node.Children.length === 0) {\n <span class=\"dep-node-spacer\"></span>\n }\n <i [class]=\"resolveEntityIconByName(node.EntityName)\" class=\"dep-node-icon\"></i>\n <span class=\"dep-node-name\">{{node.EntityName}}</span>\n <span class=\"dep-node-field\">via {{node.RelationshipField}}</span>\n @if (node.Children.length > 0) {\n <span class=\"dep-node-count\">\n {{node.Children.length}} dep{{node.Children.length !== 1 ? 's' : ''}}\n </span>\n }\n </div>\n @if (node.IsExpanded && node.Children.length > 0) {\n @for (child of node.Children; track child) {\n <ng-container *ngTemplateOutlet=\"depNode; context: { $implicit: child }\"></ng-container>\n }\n }\n </div>\n </ng-template>\n <!-- ======================================================== -->\n <!-- CHANGES TAB -->\n <!-- ======================================================== -->\n @if (ActiveTab === 'changes') {\n <div class=\"tab-pane\">\n @if (IsLoadingDiff) {\n <mj-loading text=\"Computing differences...\"></mj-loading>\n }\n @if (!IsLoadingDiff && DiffResult) {\n <!-- Diff summary -->\n <div class=\"diff-summary\">\n <div class=\"diff-stat\">\n <span class=\"diff-stat-value change-modified\">{{DiffResult.Summary.Changed}}</span>\n <span class=\"diff-stat-label\">Changed</span>\n </div>\n <div class=\"diff-stat\">\n <span class=\"diff-stat-value\">{{DiffResult.Summary.Unchanged}}</span>\n <span class=\"diff-stat-label\">Unchanged</span>\n </div>\n <div class=\"diff-stat\">\n <span class=\"diff-stat-value\">{{DiffResult.Summary.EntitiesAffected}}</span>\n <span class=\"diff-stat-label\">Entities</span>\n </div>\n </div>\n <!-- Expand/collapse all -->\n @if (DiffResult.EntityGroups.length > 0) {\n <div class=\"diff-toolbar\">\n <button class=\"toolbar-action-btn\" (click)=\"ExpandAllDiffGroups()\" title=\"Expand all\">\n <i class=\"fa-solid fa-angles-down\"></i>\n <span>Expand All</span>\n </button>\n <button class=\"toolbar-action-btn\" (click)=\"CollapseAllDiffGroups()\" title=\"Collapse all\">\n <i class=\"fa-solid fa-angles-up\"></i>\n <span>Collapse All</span>\n </button>\n </div>\n }\n <!-- Entity diff groups -->\n @if (DiffResult.EntityGroups.length > 0) {\n <div class=\"diff-groups\">\n @for (group of DiffResult.EntityGroups; track group) {\n <div class=\"diff-group\">\n <div class=\"diff-group-header\" (click)=\"ToggleDiffGroup(group)\">\n <i class=\"fa-solid fa-chevron-right diff-chevron\" [class.expanded]=\"group.IsExpanded\"></i>\n <i [class]=\"resolveEntityIconByName(group.EntityName)\" class=\"diff-group-icon\"></i>\n <span class=\"diff-group-name\">{{group.EntityName}}</span>\n <span class=\"diff-group-count change-modified\">\n {{group.Records.length}} modified\n </span>\n </div>\n @if (group.IsExpanded) {\n <div class=\"diff-group-content\">\n @for (record of group.Records; track record) {\n <div class=\"diff-record\">\n <div class=\"diff-record-header\">\n <i [class]=\"GetChangeTypeIcon(record.ChangeType)\" [ngClass]=\"GetChangeTypeClass(record.ChangeType)\"></i>\n <span class=\"diff-record-id\">{{record.RecordID | slice:0:20}}...</span>\n </div>\n @if (record.FieldChanges.length > 0) {\n <div class=\"diff-fields\">\n @for (field of record.FieldChanges; track field) {\n <div class=\"diff-field\"\n [ngClass]=\"GetChangeTypeClass(field.ChangeType)\">\n <span class=\"diff-field-name\">{{field.FieldName}}</span>\n @if (field.OldValue) {\n <span class=\"diff-field-old\">{{field.OldValue | slice:0:40}}</span>\n }\n @if (field.OldValue && field.NewValue) {\n <i class=\"fa-solid fa-arrow-right diff-field-arrow\"></i>\n }\n @if (field.NewValue) {\n <span class=\"diff-field-new\">{{field.NewValue | slice:0:40}}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- No changes -->\n @if (DiffResult.EntityGroups.length === 0 && DiffResult.Summary.Changed === 0) {\n <div class=\"tab-empty\">\n <i class=\"fa-solid fa-circle-check tab-empty-icon\" style=\"color: #10b981;\"></i>\n <p>No changes detected since this label was created.</p>\n </div>\n }\n }\n </div>\n }\n <!-- ======================================================== -->\n <!-- HISTORY TAB -->\n <!-- ======================================================== -->\n @if (ActiveTab === 'history') {\n <div class=\"tab-pane\">\n @if (IsLoadingHistory) {\n <mj-loading text=\"Loading history...\"></mj-loading>\n }\n @if (!IsLoadingHistory) {\n <!-- Restores -->\n @if (Restores.length > 0) {\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-clock-rotate-left section-icon\"></i> Restore Operations\n </h3>\n <div class=\"history-list\">\n @for (restore of Restores; track restore) {\n <div class=\"history-item\">\n <div class=\"history-item-icon\" [ngClass]=\"'status-' + (restore.Status ?? '').toLowerCase().replace(' ', '-')\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n </div>\n <div class=\"history-item-content\">\n <span class=\"history-item-title\">Restore {{restore.Status}}</span>\n <span class=\"history-item-meta\">\n {{restore.CompletedItems ?? 0}}/{{restore.TotalItems ?? 0}} items\n @if (restore.FailedItems) {\n <span> · {{restore.FailedItems}} failed</span>\n }\n </span>\n </div>\n <span class=\"history-item-date\">{{FormatRelativeDate(restore.__mj_CreatedAt)}}</span>\n </div>\n }\n </div>\n </div>\n }\n <!-- Related labels -->\n @if (RelatedLabels.length > 0) {\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-tags section-icon\"></i> Related Labels\n </h3>\n <div class=\"history-list\">\n @for (related of RelatedLabels; track related) {\n <div class=\"history-item\">\n <div class=\"history-item-icon\" style=\"background: rgba(99, 102, 241, 0.1); color: #6366f1;\">\n <i class=\"fa-solid fa-tag\"></i>\n </div>\n <div class=\"history-item-content\">\n <span class=\"history-item-title\">{{related.Name}}</span>\n <span class=\"history-item-meta\">\n <span class=\"inline-badge small\" [ngClass]=\"GetStatusClass(related.Status)\">{{related.Status}}</span>\n </span>\n </div>\n <span class=\"history-item-date\">{{FormatRelativeDate(related.__mj_CreatedAt)}}</span>\n </div>\n }\n </div>\n </div>\n }\n <!-- Empty -->\n @if (Restores.length === 0 && RelatedLabels.length === 0) {\n <div class=\"tab-empty\">\n <i class=\"fa-solid fa-clock-rotate-left tab-empty-icon\"></i>\n <p>No restore history or related labels found.</p>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n\n <!-- ============================================================ -->\n <!-- INLINE MICRO VIEW (replaces tab content when active) -->\n <!-- ============================================================ -->\n @if (ShowMicroView && MicroViewRecord) {\n <div class=\"tab-content\">\n <mj-record-micro-view\n [Data]=\"MicroViewRecord\"\n [Inline]=\"true\"\n (Close)=\"OnBackFromMicroView()\"\n (EntityLinkClick)=\"OnEntityLinkClick($event)\"\n (OpenRecord)=\"OnOpenRecordClick($event)\">\n </mj-record-micro-view>\n </div>\n }\n</div>\n", styles: ["/* ================================================================= */\n/* BACKDROP */\n/* ================================================================= */\n\n.panel-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0);\n z-index: 1000;\n transition: background 0.3s ease;\n pointer-events: none;\n}\n\n.panel-backdrop.visible {\n background: rgba(0, 0, 0, 0.3);\n pointer-events: auto;\n}\n\n/* ================================================================= */\n/* PANEL */\n/* ================================================================= */\n\n.detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n height: 100vh;\n background: var(--card-background, #ffffff);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.12);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transform: translateX(100%);\n transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n /* Width is set dynamically via [style.width.px] */\n min-width: 400px;\n max-width: 92vw;\n}\n\n.detail-panel.visible {\n transform: translateX(0);\n}\n\n/* ================================================================= */\n/* RESIZE HANDLE */\n/* ================================================================= */\n\n.resize-handle {\n position: absolute;\n left: -4px;\n top: 0;\n width: 8px;\n height: 100%;\n cursor: col-resize;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.resize-handle:hover .resize-handle-grip,\n.resize-handle:active .resize-handle-grip {\n opacity: 1;\n background: #6366f1;\n}\n\n.resize-handle-grip {\n width: 3px;\n height: 40px;\n background: var(--border-color, #d1d5db);\n border-radius: 3px;\n opacity: 0;\n transition: opacity 0.2s ease, background 0.2s ease;\n}\n\n.resize-handle:hover {\n background: rgba(99, 102, 241, 0.04);\n}\n\n/* ================================================================= */\n/* BREADCRUMB BAR */\n/* ================================================================= */\n\n.breadcrumb-bar {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 24px;\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n flex-shrink: 0;\n background: var(--hover-background, #f9fafb);\n}\n\n.breadcrumb-back {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 13px;\n flex-shrink: 0;\n}\n\n.breadcrumb-back:hover {\n background: var(--card-background, #ffffff);\n color: #6366f1;\n border-color: #6366f1;\n}\n\n.breadcrumb-trail {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n overflow: hidden;\n}\n\n.breadcrumb-item {\n display: flex;\n align-items: center;\n gap: 5px;\n color: var(--text-secondary, #6b7280);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.breadcrumb-item.clickable {\n cursor: pointer;\n transition: color 0.15s ease;\n}\n\n.breadcrumb-item.clickable:hover {\n color: #6366f1;\n}\n\n.breadcrumb-item.current {\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n}\n\n.breadcrumb-separator {\n font-size: 9px;\n color: var(--text-tertiary, #d1d5db);\n flex-shrink: 0;\n}\n\n.breadcrumb-icon {\n font-size: 12px;\n flex-shrink: 0;\n}\n\n/* ================================================================= */\n/* HEADER */\n/* ================================================================= */\n\n.panel-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 20px 24px 16px;\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n flex-shrink: 0;\n}\n\n.header-info {\n flex: 1;\n min-width: 0;\n}\n\n.header-title-row {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.header-scope-icon {\n color: #6366f1;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.header-title {\n font-size: 20px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.header-status {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.header-scope-badge {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: rgba(99, 102, 241, 0.08);\n color: #6366f1;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.header-description {\n margin: 8px 0 0 0;\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n line-height: 1.5;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n margin-left: 16px;\n}\n\n.header-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 14px;\n}\n\n.header-action-btn:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n border-color: var(--border-hover, #d1d5db);\n}\n\n.header-action-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: none;\n border: none;\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 16px;\n}\n\n.close-btn:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n}\n\n/* Status badges (reused) */\n.status-active { background: rgba(16, 185, 129, 0.1); color: #059669; }\n.status-archived { background: rgba(107, 114, 128, 0.1); color: #6b7280; }\n.status-restored { background: rgba(245, 158, 11, 0.1); color: #d97706; }\n\n/* ================================================================= */\n/* SUMMARY KPIs */\n/* ================================================================= */\n\n.summary-kpis {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n flex-shrink: 0;\n overflow-x: auto;\n}\n\n.summary-kpi {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: var(--hover-background, #f9fafb);\n border-radius: 10px;\n flex-shrink: 0;\n}\n\n.kpi-mini-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border-radius: 8px;\n font-size: 15px;\n flex-shrink: 0;\n}\n\n.kpi-mini-content {\n display: flex;\n flex-direction: column;\n}\n\n.kpi-mini-value {\n font-size: 18px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1;\n}\n\n.kpi-mini-label {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n margin-top: 2px;\n}\n\n/* ================================================================= */\n/* TAB BAR */\n/* ================================================================= */\n\n.tab-bar {\n display: flex;\n gap: 0;\n padding: 0 24px;\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n flex-shrink: 0;\n overflow-x: auto;\n}\n\n.tab {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.tab:hover {\n color: var(--text-primary, #1f2937);\n background: var(--hover-background, #f9fafb);\n}\n\n.tab.active {\n color: #6366f1;\n border-bottom-color: #6366f1;\n font-weight: 600;\n}\n\n.tab-icon {\n font-size: 13px;\n}\n\n.tab-count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: rgba(99, 102, 241, 0.1);\n color: #6366f1;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n/* ================================================================= */\n/* TAB CONTENT */\n/* ================================================================= */\n\n.tab-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.tab-pane {\n padding: 20px 24px;\n animation: tabFadeIn 0.2s ease;\n}\n\n@keyframes tabFadeIn {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.tab-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.tab-empty-icon {\n font-size: 40px;\n color: var(--text-tertiary, #d1d5db);\n margin-bottom: 12px;\n}\n\n.tab-empty p {\n font-size: 14px;\n color: var(--text-tertiary, #9ca3af);\n margin: 0;\n}\n\n/* ================================================================= */\n/* OVERVIEW TAB */\n/* ================================================================= */\n\n.detail-section {\n margin-bottom: 24px;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 14px 0;\n padding-bottom: 10px;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.section-icon {\n color: var(--text-tertiary, #9ca3af);\n font-size: 14px;\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 14px;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.field-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--text-tertiary, #9ca3af);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.field-value {\n font-size: 14px;\n color: var(--text-primary, #1f2937);\n display: flex;\n align-items: center;\n}\n\n.field-mono {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n word-break: break-all;\n}\n\n.field-record-name {\n font-weight: 600;\n color: #6366f1;\n}\n\n/* Record card for Record-scoped labels on overview tab */\n.record-card {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 16px 18px;\n background: rgba(99, 102, 241, 0.04);\n border: 1px solid rgba(99, 102, 241, 0.15);\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.record-card-main {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n flex: 1;\n}\n\n.record-card-icon {\n font-size: 22px;\n color: #6366f1;\n flex-shrink: 0;\n}\n\n.record-card-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.record-card-name {\n font-size: 16px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.record-card-name-loading {\n color: var(--text-tertiary, #9ca3af);\n font-weight: 500;\n font-style: italic;\n}\n\n.record-card-entity {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n}\n\n.record-card-id {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n font-family: 'SF Mono', 'Fira Code', monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.record-card-open-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #6366f1;\n color: #ffffff;\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n white-space: nowrap;\n}\n\n.record-card-open-btn:hover {\n background: #4f46e5;\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);\n}\n\n.inline-badge {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.inline-badge.small {\n padding: 2px 8px;\n font-size: 11px;\n}\n\n.description-text {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n line-height: 1.6;\n margin: 0;\n}\n\n/* Hierarchy */\n.hierarchy-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 14px;\n transition: background 0.15s ease;\n}\n\n.hierarchy-item:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.hierarchy-icon {\n color: var(--text-tertiary, #9ca3af);\n font-size: 13px;\n width: 16px;\n text-align: center;\n}\n\n.hierarchy-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--text-tertiary, #9ca3af);\n text-transform: uppercase;\n}\n\n.hierarchy-name {\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n}\n\n.hierarchy-meta {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n font-family: monospace;\n}\n\n.hierarchy-children {\n margin-left: 16px;\n border-left: 2px solid var(--border-color, #e5e7eb);\n padding-left: 8px;\n}\n\n/* ================================================================= */\n/* SNAPSHOTS TAB */\n/* ================================================================= */\n\n.snapshot-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 16px;\n}\n\n.snapshot-search {\n position: relative;\n flex: 1;\n}\n\n.snapshot-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-tertiary, #9ca3af);\n font-size: 13px;\n}\n\n.snapshot-search-input {\n width: 100%;\n padding: 8px 12px 8px 36px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.snapshot-search-input:focus {\n border-color: #6366f1;\n}\n\n.snapshot-sort-toggle,\n.snapshot-view-toggle {\n display: flex;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.toggle-btn-sm {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n background: transparent;\n border: none;\n cursor: pointer;\n color: var(--text-tertiary, #9ca3af);\n transition: all 0.15s ease;\n font-size: 12px;\n}\n\n.toggle-btn-sm:hover {\n color: var(--text-primary, #1f2937);\n}\n\n.toggle-btn-sm.active {\n color: #6366f1;\n background: rgba(99, 102, 241, 0.08);\n}\n\n.toggle-btn-sm + .toggle-btn-sm {\n border-left: 1px solid var(--border-color, #e5e7eb);\n}\n\n/* Snapshot groups */\n.snapshot-groups {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.snapshot-group {\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.group-header {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.group-header:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.group-chevron {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n transition: transform 0.2s ease;\n width: 14px;\n text-align: center;\n}\n\n.group-chevron.expanded {\n transform: rotate(90deg);\n}\n\n.group-entity-icon {\n color: #3b82f6;\n font-size: 14px;\n}\n\n.group-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n flex: 1;\n}\n\n.group-count-inline {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n margin-left: 6px;\n background: rgba(59, 130, 246, 0.1);\n color: #3b82f6;\n border-radius: 10px;\n font-size: 12px;\n font-weight: 600;\n vertical-align: middle;\n}\n\n.group-content {\n border-top: 1px solid var(--border-color, #f3f4f6);\n animation: tabFadeIn 0.15s ease;\n}\n\n.group-names-loading {\n display: flex;\n justify-content: center;\n padding: 8px 14px;\n}\n\n/* Snapshot list items */\n.snapshot-list-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px 10px 40px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.snapshot-list-item:last-child {\n border-bottom: none;\n}\n\n.snapshot-list-item:hover {\n background: rgba(99, 102, 241, 0.04);\n}\n\n.snapshot-item-icon {\n color: var(--text-tertiary, #9ca3af);\n font-size: 13px;\n}\n\n.snapshot-item-name {\n flex: 1;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.snapshot-item-id {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n font-family: monospace;\n}\n\n.snapshot-item-arrow {\n color: var(--text-tertiary, #d1d5db);\n font-size: 11px;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.snapshot-list-item:hover .snapshot-item-arrow {\n color: #6366f1;\n transform: translateX(2px);\n}\n\n/* Snapshot cards */\n.snapshot-cards {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 10px;\n padding: 12px 14px;\n}\n\n.snapshot-card {\n padding: 12px;\n background: var(--hover-background, #f9fafb);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.snapshot-card:hover {\n border-color: #6366f1;\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.1);\n}\n\n.snapshot-card-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n}\n\n.snapshot-card-header i {\n color: var(--text-tertiary, #9ca3af);\n font-size: 12px;\n}\n\n.snapshot-card-name {\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.snapshot-card-meta {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n font-family: monospace;\n}\n\n/* ================================================================= */\n/* DEPENDENCIES TAB */\n/* ================================================================= */\n\n.dep-root {\n padding: 4px 0;\n}\n\n.dep-root-entity {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n background: rgba(99, 102, 241, 0.06);\n border: 1px solid rgba(99, 102, 241, 0.15);\n border-radius: 10px;\n margin-bottom: 12px;\n}\n\n.dep-root-icon {\n color: #6366f1;\n font-size: 16px;\n}\n\n.dep-root-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n flex: 1;\n}\n\n.dep-root-badge {\n padding: 2px 10px;\n background: #6366f1;\n color: #ffffff;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.dep-node {\n margin-left: 8px;\n border-left: 2px solid var(--border-color, #e5e7eb);\n}\n\n.dep-node-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-radius: 6px;\n}\n\n.dep-node-header:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.dep-chevron {\n font-size: 10px;\n color: var(--text-tertiary, #9ca3af);\n transition: transform 0.2s ease;\n width: 12px;\n text-align: center;\n}\n\n.dep-chevron.expanded {\n transform: rotate(90deg);\n}\n\n.dep-node-spacer {\n width: 12px;\n}\n\n.dep-node-icon {\n color: #3b82f6;\n font-size: 13px;\n}\n\n.dep-node-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n}\n\n.dep-node-field {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n font-style: italic;\n}\n\n.dep-node-count {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n padding: 1px 8px;\n background: var(--hover-background, #f3f4f6);\n border-radius: 8px;\n}\n\n.dep-empty {\n padding: 20px;\n text-align: center;\n}\n\n.dep-empty p {\n font-size: 14px;\n color: var(--text-tertiary, #9ca3af);\n margin: 0;\n}\n\n/* ================================================================= */\n/* CHANGES TAB */\n/* ================================================================= */\n\n.diff-summary {\n display: flex;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.diff-stat {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 12px 20px;\n background: var(--hover-background, #f9fafb);\n border-radius: 10px;\n min-width: 80px;\n}\n\n.diff-stat-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1;\n}\n\n.diff-stat-label {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n margin-top: 4px;\n}\n\n/* Diff toolbar */\n.diff-toolbar {\n display: flex;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.toolbar-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 6px;\n background: var(--card-background, #ffffff);\n color: var(--text-secondary, #6b7280);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toolbar-action-btn i {\n font-size: 11px;\n}\n\n.toolbar-action-btn:hover {\n border-color: #6366f1;\n color: #6366f1;\n background: rgba(99, 102, 241, 0.06);\n}\n\n.diff-groups {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.diff-group {\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.diff-group-header {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.diff-group-header:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.diff-chevron {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n transition: transform 0.2s ease;\n width: 14px;\n text-align: center;\n}\n\n.diff-chevron.expanded {\n transform: rotate(90deg);\n}\n\n.diff-group-icon {\n color: #3b82f6;\n font-size: 14px;\n}\n\n.diff-group-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n flex: 1;\n}\n\n.diff-group-count {\n font-size: 12px;\n font-weight: 600;\n padding: 2px 10px;\n border-radius: 10px;\n}\n\n.diff-group-content {\n border-top: 1px solid var(--border-color, #f3f4f6);\n animation: tabFadeIn 0.15s ease;\n}\n\n.diff-record {\n padding: 10px 14px 10px 40px;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.diff-record:last-child {\n border-bottom: none;\n}\n\n.diff-record-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n.diff-record-id {\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n font-family: monospace;\n}\n\n.diff-fields {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin-left: 22px;\n}\n\n.diff-field {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 12px;\n}\n\n.diff-field-name {\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n min-width: 100px;\n}\n\n.diff-field-old {\n color: #ef4444;\n text-decoration: line-through;\n opacity: 0.7;\n font-family: monospace;\n font-size: 12px;\n}\n\n.diff-field-arrow {\n color: var(--text-tertiary, #9ca3af);\n font-size: 10px;\n}\n\n.diff-field-new {\n color: #10b981;\n font-family: monospace;\n font-size: 12px;\n}\n\n/* Change type colors */\n.change-added { color: #10b981; }\n.change-modified { color: #f59e0b; }\n.change-removed { color: #ef4444; }\n\n.diff-field.change-added { background: rgba(16, 185, 129, 0.06); }\n.diff-field.change-modified { background: rgba(245, 158, 11, 0.06); }\n.diff-field.change-removed { background: rgba(239, 68, 68, 0.06); }\n\n/* ================================================================= */\n/* HISTORY TAB */\n/* ================================================================= */\n\n.history-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.history-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 8px;\n transition: background 0.15s ease;\n}\n\n.history-item:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.history-item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.history-item-icon.status-complete { background: rgba(16, 185, 129, 0.1); color: #10b981; }\n.history-item-icon.status-error { background: rgba(239, 68, 68, 0.1); color: #ef4444; }\n.history-item-icon.status-partial { background: rgba(245, 158, 11, 0.1); color: #f59e0b; }\n.history-item-icon.status-in-progress { background: rgba(59, 130, 246, 0.1); color: #3b82f6; }\n.history-item-icon.status-pending { background: rgba(107, 114, 128, 0.1); color: #6b7280; }\n\n.history-item-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.history-item-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n}\n\n.history-item-meta {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.history-item-date {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n flex-shrink: 0;\n}\n\n/* ================================================================= */\n/* RESPONSIVE */\n/* ================================================================= */\n\n@media (max-width: 1024px) {\n .detail-panel {\n min-width: 360px;\n }\n\n .summary-kpis {\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 768px) {\n .detail-panel {\n width: 100% !important;\n min-width: unset;\n }\n\n .resize-handle {\n display: none;\n }\n\n .detail-grid {\n grid-template-columns: 1fr;\n }\n\n .summary-kpis {\n flex-wrap: wrap;\n gap: 8px;\n padding: 12px 16px;\n }\n\n .summary-kpi {\n padding: 8px 10px;\n }\n\n .panel-header {\n padding: 16px 16px 12px;\n }\n\n .tab-bar {\n padding: 0 16px;\n }\n\n .tab-pane {\n padding: 16px;\n }\n\n .breadcrumb-bar {\n padding: 8px 16px;\n }\n\n .snapshot-toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .diff-summary {\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .diff-stat {\n padding: 10px 14px;\n min-width: 60px;\n }\n}\n\n@media (max-width: 480px) {\n .header-title {\n font-size: 16px;\n }\n\n .header-title-row {\n gap: 6px;\n }\n\n .header-actions {\n margin-left: 8px;\n }\n\n .tab {\n padding: 10px 10px;\n font-size: 12px;\n }\n\n .snapshot-cards {\n grid-template-columns: 1fr;\n }\n}\n"] }]
|
|
2076
|
+
args: [{ standalone: false, selector: 'mj-label-detail-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Backdrop overlay -->\n<div class=\"panel-backdrop\" [class.visible]=\"IsVisible\" (click)=\"OnBackdropClick()\"></div>\n\n<!-- Slide-in panel -->\n<div class=\"detail-panel\" [class.visible]=\"IsVisible\" [style.width.px]=\"PanelWidthPx\">\n <!-- Resize handle -->\n <div class=\"resize-handle\" (mousedown)=\"OnResizeStart($event)\">\n <div class=\"resize-handle-grip\"></div>\n </div>\n\n <!-- ============================================================ -->\n <!-- HEADER -->\n <!-- ============================================================ -->\n <div class=\"panel-header\">\n <div class=\"header-info\">\n <div class=\"header-title-row\">\n <i [class]=\"GetScopeIcon(Label.Scope)\" class=\"header-scope-icon\"></i>\n <h2 class=\"header-title\">{{Label.Name}}</h2>\n <span class=\"header-status\" [ngClass]=\"GetStatusClass(Label.Status)\">\n {{Label.Status}}\n </span>\n <span class=\"header-scope-badge\">{{Label.Scope}}</span>\n </div>\n @if (Label.Description) {\n <p class=\"header-description\">{{Label.Description}}</p>\n }\n </div>\n <div class=\"header-actions\">\n <button class=\"header-action-btn\" (click)=\"OnArchive()\"\n [disabled]=\"IsArchiving || Label.Status === 'Archived'\"\n title=\"Archive this label\">\n <i class=\"fa-solid fa-box-archive\"></i>\n </button>\n <button class=\"header-action-btn\" (click)=\"OnTabChange('changes')\" title=\"View changes\">\n <i class=\"fa-solid fa-code-compare\"></i>\n </button>\n <button class=\"close-btn\" (click)=\"OnClose()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n\n <!-- ============================================================ -->\n <!-- SUMMARY KPIs -->\n <!-- ============================================================ -->\n <div class=\"summary-kpis\">\n <div class=\"summary-kpi\">\n <div class=\"kpi-mini-icon\" style=\"background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary);\">\n <i class=\"fa-solid fa-camera\"></i>\n </div>\n <div class=\"kpi-mini-content\">\n <span class=\"kpi-mini-value\">{{LabelItems.length || Label.ItemCount || GetItemCount(Label.ID)}}</span>\n <span class=\"kpi-mini-label\">Items</span>\n </div>\n </div>\n <div class=\"summary-kpi\">\n <div class=\"kpi-mini-icon\" style=\"background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary);\">\n <i class=\"fa-solid fa-table\"></i>\n </div>\n <div class=\"kpi-mini-content\">\n <span class=\"kpi-mini-value\">{{UniqueEntityCount}}</span>\n <span class=\"kpi-mini-label\">Entities</span>\n </div>\n </div>\n @if (Label.CreationDurationMS) {\n <div class=\"summary-kpi\">\n <div class=\"kpi-mini-icon\" style=\"background: rgba(16, 185, 129, 0.1); color: #10b981;\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n </div>\n <div class=\"kpi-mini-content\">\n <span class=\"kpi-mini-value\">{{FormatDuration(Label.CreationDurationMS)}}</span>\n <span class=\"kpi-mini-label\">Duration</span>\n </div>\n </div>\n }\n @if (ChildLabels.length > 0) {\n <div class=\"summary-kpi\">\n <div class=\"kpi-mini-icon\" style=\"background: rgba(245, 158, 11, 0.1); color: #f59e0b;\">\n <i class=\"fa-solid fa-layer-group\"></i>\n </div>\n <div class=\"kpi-mini-content\">\n <span class=\"kpi-mini-value\">{{ChildLabels.length}}</span>\n <span class=\"kpi-mini-label\">Children</span>\n </div>\n </div>\n }\n </div>\n\n <!-- ============================================================ -->\n <!-- TAB BAR (hidden when micro-view is active) -->\n <!-- ============================================================ -->\n @if (!ShowMicroView) {\n <div class=\"tab-bar\">\n <button class=\"tab\" [class.active]=\"ActiveTab === 'overview'\" (click)=\"OnTabChange('overview')\">\n <i class=\"fa-solid fa-info-circle tab-icon\"></i> Overview\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'snapshots'\" (click)=\"OnTabChange('snapshots')\">\n <i class=\"fa-solid fa-camera tab-icon\"></i> Snapshots\n @if (LabelItems.length > 0) {\n <span class=\"tab-count\">{{LabelItems.length}}</span>\n }\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'dependencies'\" (click)=\"OnTabChange('dependencies')\">\n <i class=\"fa-solid fa-diagram-project tab-icon\"></i> Dependencies\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'changes'\" (click)=\"OnTabChange('changes')\">\n <i class=\"fa-solid fa-code-compare tab-icon\"></i> Changes\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'history'\" (click)=\"OnTabChange('history')\">\n <i class=\"fa-solid fa-clock-rotate-left tab-icon\"></i> History\n </button>\n </div>\n }\n\n <!-- ============================================================ -->\n <!-- BREADCRUMB (shown when micro-view is active) -->\n <!-- ============================================================ -->\n @if (ShowMicroView) {\n <div class=\"breadcrumb-bar\">\n <button class=\"breadcrumb-back\" (click)=\"OnBackFromMicroView()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <div class=\"breadcrumb-trail\">\n <span class=\"breadcrumb-item clickable\" (click)=\"OnBackFromMicroView()\">\n <i class=\"fa-solid fa-camera breadcrumb-icon\"></i> Snapshots\n </span>\n <i class=\"fa-solid fa-chevron-right breadcrumb-separator\"></i>\n <span class=\"breadcrumb-item current\">\n <i class=\"fa-solid fa-file-lines breadcrumb-icon\"></i> {{BreadcrumbLabel}}\n </span>\n </div>\n </div>\n }\n\n <!-- ============================================================ -->\n <!-- TAB CONTENT (scrollable) - or inline micro-view -->\n <!-- ============================================================ -->\n @if (!ShowMicroView) {\n <div class=\"tab-content\">\n <!-- Loading state for items -->\n @if (IsLoadingItems && ActiveTab !== 'dependencies') {\n <mj-loading text=\"Loading label data...\"></mj-loading>\n }\n <!-- ======================================================== -->\n <!-- OVERVIEW TAB -->\n <!-- ======================================================== -->\n @if (ActiveTab === 'overview' && !IsLoadingItems) {\n <div class=\"tab-pane\">\n <!-- Metadata section -->\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-info-circle section-icon\"></i> Label Details\n </h3>\n <div class=\"detail-grid\">\n <div class=\"detail-field\">\n <span class=\"field-label\">Name</span>\n <span class=\"field-value\">{{Label.Name}}</span>\n </div>\n <div class=\"detail-field\">\n <span class=\"field-label\">Status</span>\n <span class=\"field-value\">\n <span class=\"inline-badge\" [ngClass]=\"GetStatusClass(Label.Status)\">{{Label.Status}}</span>\n </span>\n </div>\n <div class=\"detail-field\">\n <span class=\"field-label\">Scope</span>\n <span class=\"field-value\">\n <i [class]=\"GetScopeIcon(Label.Scope)\" style=\"margin-right: 6px;\"></i>{{Label.Scope}}\n </span>\n </div>\n @if (Label.EntityID) {\n <div class=\"detail-field\">\n <span class=\"field-label\">Entity</span>\n <span class=\"field-value\">\n <i [class]=\"OverviewEntityIcon\" style=\"margin-right: 6px; color: var(--mj-brand-primary);\"></i>{{Label.Entity ?? resolveEntityName(Label.EntityID)}}\n </span>\n </div>\n }\n @if (Label.RecordID && Label.Scope !== 'Record') {\n <div class=\"detail-field\">\n <span class=\"field-label\">Record ID</span>\n <span class=\"field-value field-mono\">{{FormatRecordID(Label.RecordID)}}</span>\n </div>\n }\n @if (Label.ExternalSystemID) {\n <div class=\"detail-field\">\n <span class=\"field-label\">External Ref</span>\n <span class=\"field-value field-mono\">{{Label.ExternalSystemID}}</span>\n </div>\n }\n </div>\n </div>\n <!-- Record card (Record-scoped labels) -->\n @if (Label.Scope === 'Record' && Label.RecordID) {\n <div class=\"record-card\">\n <div class=\"record-card-main\">\n <i [class]=\"OverviewEntityIcon\" class=\"record-card-icon\"></i>\n <div class=\"record-card-info\">\n @if (OverviewRecordName) {\n <span class=\"record-card-name\">{{OverviewRecordName}}</span>\n }\n @if (!OverviewRecordName) {\n <span class=\"record-card-name record-card-name-loading\">Loading...</span>\n }\n <span class=\"record-card-entity\">{{Label.Entity ?? resolveEntityName(Label.EntityID)}}</span>\n <span class=\"record-card-id\">{{FormatRecordID(Label.RecordID)}}</span>\n </div>\n </div>\n <button class=\"record-card-open-btn\" (click)=\"OnOpenOverviewRecord()\" title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open\n </button>\n </div>\n }\n <!-- Description -->\n @if (Label.Description) {\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-align-left section-icon\"></i> Description\n </h3>\n <p class=\"description-text\">{{Label.Description}}</p>\n </div>\n }\n <!-- Creation info -->\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-clock section-icon\"></i> Creation\n </h3>\n <div class=\"detail-grid\">\n <div class=\"detail-field\">\n <span class=\"field-label\">Created</span>\n <span class=\"field-value\">{{FormatDate(Label.__mj_CreatedAt)}}</span>\n </div>\n @if (Label.CreatedByUser) {\n <div class=\"detail-field\">\n <span class=\"field-label\">Created By</span>\n <span class=\"field-value\">\n <i class=\"fa-solid fa-user\" style=\"margin-right: 6px; opacity: 0.5;\"></i>{{Label.CreatedByUser}}\n </span>\n </div>\n }\n @if (Label.CreationDurationMS) {\n <div class=\"detail-field\">\n <span class=\"field-label\">Capture Duration</span>\n <span class=\"field-value\">{{FormatDuration(Label.CreationDurationMS)}}</span>\n </div>\n }\n <div class=\"detail-field\">\n <span class=\"field-label\">Items Captured</span>\n <span class=\"field-value\">{{LabelItems.length}}</span>\n </div>\n </div>\n </div>\n <!-- Parent / Children -->\n @if (Label.ParentID || ChildLabels.length > 0) {\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-sitemap section-icon\"></i> Hierarchy\n </h3>\n <!-- Parent reference -->\n @if (Label.ParentID) {\n <div class=\"hierarchy-item parent\">\n <i class=\"fa-solid fa-arrow-up hierarchy-icon\"></i>\n <span class=\"hierarchy-label\">Parent:</span>\n <span class=\"hierarchy-name\">\n @for (pl of AllLabels; track pl) {\n @if (IsParentLabel(pl)) {\n <span>{{pl.Name}}</span>\n }\n }\n </span>\n </div>\n }\n <!-- Children -->\n @if (ChildLabels.length > 0) {\n <div class=\"hierarchy-children\">\n @for (child of ChildLabels; track child) {\n <div class=\"hierarchy-item child\">\n <i class=\"fa-solid fa-arrow-turn-down-right hierarchy-icon\"></i>\n <span class=\"hierarchy-name\">{{child.Name}}</span>\n @if (child.RecordID) {\n <span class=\"hierarchy-meta\">{{child.RecordID | slice:0:12}}...</span>\n }\n @if (child.ItemCount) {\n <span class=\"hierarchy-meta\">{{child.ItemCount}} items</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- ======================================================== -->\n <!-- SNAPSHOTS TAB -->\n <!-- ======================================================== -->\n @if (ActiveTab === 'snapshots' && !IsLoadingItems) {\n <div class=\"tab-pane\">\n <!-- Snapshot toolbar -->\n <div class=\"snapshot-toolbar\">\n <div class=\"snapshot-search\">\n <i class=\"fa-solid fa-search snapshot-search-icon\"></i>\n <input type=\"text\" class=\"snapshot-search-input\"\n placeholder=\"Search by entity or record...\"\n [ngModel]=\"SnapshotSearch\"\n (ngModelChange)=\"OnSnapshotSearchChange($event)\" />\n </div>\n <div class=\"snapshot-sort-toggle\">\n <button class=\"toggle-btn-sm\" [class.active]=\"SnapshotSortBy === 'name'\"\n (click)=\"OnSnapshotSortChange('name')\" title=\"Sort by name\">\n @if (SnapshotSortBy === 'name' && SnapshotSortDir === 'asc') {\n <i class=\"fa-solid fa-arrow-down-a-z\"></i>\n }\n @if (SnapshotSortBy === 'name' && SnapshotSortDir === 'desc') {\n <i class=\"fa-solid fa-arrow-up-z-a\"></i>\n }\n @if (SnapshotSortBy !== 'name') {\n <i class=\"fa-solid fa-arrow-down-a-z\"></i>\n }\n </button>\n <button class=\"toggle-btn-sm\" [class.active]=\"SnapshotSortBy === 'count'\"\n (click)=\"OnSnapshotSortChange('count')\" title=\"Sort by record count\">\n @if (SnapshotSortBy === 'count' && SnapshotSortDir === 'desc') {\n <i class=\"fa-solid fa-arrow-down-9-1\"></i>\n }\n @if (SnapshotSortBy === 'count' && SnapshotSortDir === 'asc') {\n <i class=\"fa-solid fa-arrow-up-1-9\"></i>\n }\n @if (SnapshotSortBy !== 'count') {\n <i class=\"fa-solid fa-arrow-down-9-1\"></i>\n }\n </button>\n </div>\n <div class=\"snapshot-view-toggle\">\n <button class=\"toggle-btn-sm\" [class.active]=\"SnapshotViewMode === 'list'\" (click)=\"SnapshotViewMode = 'list'\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n <button class=\"toggle-btn-sm\" [class.active]=\"SnapshotViewMode === 'card'\" (click)=\"SnapshotViewMode = 'card'\">\n <i class=\"fa-solid fa-grip\"></i>\n </button>\n </div>\n </div>\n <!-- Entity groups -->\n <div class=\"snapshot-groups\">\n @for (group of FilteredSnapshotGroups; track group) {\n <div class=\"snapshot-group\">\n <div class=\"group-header\" (click)=\"ToggleSnapshotGroup(group)\">\n <i class=\"fa-solid fa-chevron-right group-chevron\" [class.expanded]=\"group.IsExpanded\"></i>\n <i [class]=\"group.EntityIcon\" class=\"group-entity-icon\"></i>\n <span class=\"group-name\">{{group.EntityName}} <span class=\"group-count-inline\">{{group.Items.length}}</span></span>\n </div>\n @if (group.IsExpanded) {\n <div class=\"group-content\">\n <!-- Loading names indicator -->\n @if (group.IsLoadingNames) {\n <div class=\"group-names-loading\">\n <mj-loading text=\"Loading record names...\" size=\"small\"></mj-loading>\n </div>\n }\n <!-- List mode -->\n @if (SnapshotViewMode === 'list') {\n @for (item of group.Items; track item) {\n <div class=\"snapshot-list-item\"\n (click)=\"OpenMicroView(group.EntityName, item.RecordID, item.RecordChangeID, item.DisplayName)\">\n <i class=\"fa-solid fa-file-lines snapshot-item-icon\"></i>\n <span class=\"snapshot-item-name\">{{item.DisplayName}}</span>\n <i class=\"fa-solid fa-chevron-right snapshot-item-arrow\"></i>\n </div>\n }\n }\n <!-- Card mode -->\n @if (SnapshotViewMode === 'card') {\n <div class=\"snapshot-cards\">\n @for (item of group.Items; track item) {\n <div class=\"snapshot-card\"\n (click)=\"OpenMicroView(group.EntityName, item.RecordID, item.RecordChangeID, item.DisplayName)\">\n <div class=\"snapshot-card-header\">\n <i class=\"fa-solid fa-file-lines\"></i>\n <span class=\"snapshot-card-name\">{{item.DisplayName}}</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <!-- Empty state -->\n @if (FilteredSnapshotGroups.length === 0) {\n <div class=\"tab-empty\">\n <i class=\"fa-solid fa-camera tab-empty-icon\"></i>\n <p>No snapshot items found.</p>\n </div>\n }\n </div>\n }\n <!-- ======================================================== -->\n <!-- DEPENDENCIES TAB -->\n <!-- ======================================================== -->\n @if (ActiveTab === 'dependencies') {\n <div class=\"tab-pane\">\n @if (IsLoadingDependencies) {\n <mj-loading text=\"Loading dependencies...\"></mj-loading>\n }\n @if (!IsLoadingDependencies && Label.EntityID) {\n <div class=\"dep-root\">\n <div class=\"dep-root-entity\">\n <i [class]=\"GetScopeIcon(Label.Scope)\" class=\"dep-root-icon\"></i>\n <span class=\"dep-root-name\">{{Label.Entity ?? resolveEntityName(Label.EntityID)}}</span>\n <span class=\"dep-root-badge\">Root</span>\n </div>\n @if (DependencyTree.length > 0) {\n @for (node of DependencyTree; track node) {\n <ng-container *ngTemplateOutlet=\"depNode; context: { $implicit: node }\"></ng-container>\n }\n }\n @if (DependencyTree.length === 0) {\n <div class=\"dep-empty\">\n <p>No dependent entities found.</p>\n </div>\n }\n </div>\n }\n @if (!IsLoadingDependencies && !Label.EntityID) {\n <div class=\"tab-empty\">\n <i class=\"fa-solid fa-diagram-project tab-empty-icon\"></i>\n <p>No entity associated with this label.</p>\n </div>\n }\n </div>\n }\n <!-- Dependency tree node template -->\n <ng-template #depNode let-node>\n <div class=\"dep-node\" [style.padding-left.px]=\"node.Depth * 24\">\n <div class=\"dep-node-header\" (click)=\"ToggleDependencyNode(node)\">\n @if (node.Children.length > 0) {\n <i class=\"fa-solid fa-chevron-right dep-chevron\"\n [class.expanded]=\"node.IsExpanded\"\n ></i>\n }\n @if (node.Children.length === 0) {\n <span class=\"dep-node-spacer\"></span>\n }\n <i [class]=\"resolveEntityIconByName(node.EntityName)\" class=\"dep-node-icon\"></i>\n <span class=\"dep-node-name\">{{node.EntityName}}</span>\n <span class=\"dep-node-field\">via {{node.RelationshipField}}</span>\n @if (node.Children.length > 0) {\n <span class=\"dep-node-count\">\n {{node.Children.length}} dep{{node.Children.length !== 1 ? 's' : ''}}\n </span>\n }\n </div>\n @if (node.IsExpanded && node.Children.length > 0) {\n @for (child of node.Children; track child) {\n <ng-container *ngTemplateOutlet=\"depNode; context: { $implicit: child }\"></ng-container>\n }\n }\n </div>\n </ng-template>\n <!-- ======================================================== -->\n <!-- CHANGES TAB -->\n <!-- ======================================================== -->\n @if (ActiveTab === 'changes') {\n <div class=\"tab-pane\">\n @if (IsLoadingDiff) {\n <mj-loading text=\"Computing differences...\"></mj-loading>\n }\n @if (!IsLoadingDiff && DiffResult) {\n <!-- Diff summary -->\n <div class=\"diff-summary\">\n <div class=\"diff-stat\">\n <span class=\"diff-stat-value change-modified\">{{DiffResult.Summary.Changed}}</span>\n <span class=\"diff-stat-label\">Changed</span>\n </div>\n <div class=\"diff-stat\">\n <span class=\"diff-stat-value\">{{DiffResult.Summary.Unchanged}}</span>\n <span class=\"diff-stat-label\">Unchanged</span>\n </div>\n <div class=\"diff-stat\">\n <span class=\"diff-stat-value\">{{DiffResult.Summary.EntitiesAffected}}</span>\n <span class=\"diff-stat-label\">Entities</span>\n </div>\n </div>\n <!-- Expand/collapse all -->\n @if (DiffResult.EntityGroups.length > 0) {\n <div class=\"diff-toolbar\">\n <button class=\"toolbar-action-btn\" (click)=\"ExpandAllDiffGroups()\" title=\"Expand all\">\n <i class=\"fa-solid fa-angles-down\"></i>\n <span>Expand All</span>\n </button>\n <button class=\"toolbar-action-btn\" (click)=\"CollapseAllDiffGroups()\" title=\"Collapse all\">\n <i class=\"fa-solid fa-angles-up\"></i>\n <span>Collapse All</span>\n </button>\n </div>\n }\n <!-- Entity diff groups -->\n @if (DiffResult.EntityGroups.length > 0) {\n <div class=\"diff-groups\">\n @for (group of DiffResult.EntityGroups; track group) {\n <div class=\"diff-group\">\n <div class=\"diff-group-header\" (click)=\"ToggleDiffGroup(group)\">\n <i class=\"fa-solid fa-chevron-right diff-chevron\" [class.expanded]=\"group.IsExpanded\"></i>\n <i [class]=\"resolveEntityIconByName(group.EntityName)\" class=\"diff-group-icon\"></i>\n <span class=\"diff-group-name\">{{group.EntityName}}</span>\n <span class=\"diff-group-count change-modified\">\n {{group.Records.length}} modified\n </span>\n </div>\n @if (group.IsExpanded) {\n <div class=\"diff-group-content\">\n @for (record of group.Records; track record) {\n <div class=\"diff-record\">\n <div class=\"diff-record-header\">\n <i [class]=\"GetChangeTypeIcon(record.ChangeType)\" [ngClass]=\"GetChangeTypeClass(record.ChangeType)\"></i>\n <span class=\"diff-record-id\">{{record.RecordID | slice:0:20}}...</span>\n </div>\n @if (record.FieldChanges.length > 0) {\n <div class=\"diff-fields\">\n @for (field of record.FieldChanges; track field) {\n <div class=\"diff-field\"\n [ngClass]=\"GetChangeTypeClass(field.ChangeType)\">\n <span class=\"diff-field-name\">{{field.FieldName}}</span>\n @if (field.OldValue) {\n <span class=\"diff-field-old\">{{field.OldValue | slice:0:40}}</span>\n }\n @if (field.OldValue && field.NewValue) {\n <i class=\"fa-solid fa-arrow-right diff-field-arrow\"></i>\n }\n @if (field.NewValue) {\n <span class=\"diff-field-new\">{{field.NewValue | slice:0:40}}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- No changes -->\n @if (DiffResult.EntityGroups.length === 0 && DiffResult.Summary.Changed === 0) {\n <div class=\"tab-empty\">\n <i class=\"fa-solid fa-circle-check tab-empty-icon\" style=\"color: #10b981;\"></i>\n <p>No changes detected since this label was created.</p>\n </div>\n }\n }\n </div>\n }\n <!-- ======================================================== -->\n <!-- HISTORY TAB -->\n <!-- ======================================================== -->\n @if (ActiveTab === 'history') {\n <div class=\"tab-pane\">\n @if (IsLoadingHistory) {\n <mj-loading text=\"Loading history...\"></mj-loading>\n }\n @if (!IsLoadingHistory) {\n <!-- Restores -->\n @if (Restores.length > 0) {\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-clock-rotate-left section-icon\"></i> Restore Operations\n </h3>\n <div class=\"history-list\">\n @for (restore of Restores; track restore) {\n <div class=\"history-item\">\n <div class=\"history-item-icon\" [ngClass]=\"'status-' + (restore.Status ?? '').toLowerCase().replace(' ', '-')\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n </div>\n <div class=\"history-item-content\">\n <span class=\"history-item-title\">Restore {{restore.Status}}</span>\n <span class=\"history-item-meta\">\n {{restore.CompletedItems ?? 0}}/{{restore.TotalItems ?? 0}} items\n @if (restore.FailedItems) {\n <span> · {{restore.FailedItems}} failed</span>\n }\n </span>\n </div>\n <span class=\"history-item-date\">{{FormatRelativeDate(restore.__mj_CreatedAt)}}</span>\n </div>\n }\n </div>\n </div>\n }\n <!-- Related labels -->\n @if (RelatedLabels.length > 0) {\n <div class=\"detail-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-tags section-icon\"></i> Related Labels\n </h3>\n <div class=\"history-list\">\n @for (related of RelatedLabels; track related) {\n <div class=\"history-item\">\n <div class=\"history-item-icon\" style=\"background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary);\">\n <i class=\"fa-solid fa-tag\"></i>\n </div>\n <div class=\"history-item-content\">\n <span class=\"history-item-title\">{{related.Name}}</span>\n <span class=\"history-item-meta\">\n <span class=\"inline-badge small\" [ngClass]=\"GetStatusClass(related.Status)\">{{related.Status}}</span>\n </span>\n </div>\n <span class=\"history-item-date\">{{FormatRelativeDate(related.__mj_CreatedAt)}}</span>\n </div>\n }\n </div>\n </div>\n }\n <!-- Empty -->\n @if (Restores.length === 0 && RelatedLabels.length === 0) {\n <div class=\"tab-empty\">\n <i class=\"fa-solid fa-clock-rotate-left tab-empty-icon\"></i>\n <p>No restore history or related labels found.</p>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n\n <!-- ============================================================ -->\n <!-- INLINE MICRO VIEW (replaces tab content when active) -->\n <!-- ============================================================ -->\n @if (ShowMicroView && MicroViewRecord) {\n <div class=\"tab-content\">\n <mj-record-micro-view\n [Data]=\"MicroViewRecord\"\n [Inline]=\"true\"\n (Close)=\"OnBackFromMicroView()\"\n (EntityLinkClick)=\"OnEntityLinkClick($event)\"\n (OpenRecord)=\"OnOpenRecordClick($event)\">\n </mj-record-micro-view>\n </div>\n }\n</div>\n", styles: ["/* ================================================================= */\n/* BACKDROP */\n/* ================================================================= */\n\n.panel-backdrop {\n position: fixed;\n inset: 0;\n background: transparent;\n z-index: 1000;\n transition: background 0.3s ease;\n pointer-events: none;\n}\n\n.panel-backdrop.visible {\n background: var(--mj-bg-overlay);\n pointer-events: auto;\n}\n\n/* ================================================================= */\n/* PANEL */\n/* ================================================================= */\n\n.detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-lg);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transform: translateX(100%);\n transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n /* Width is set dynamically via [style.width.px] */\n min-width: 400px;\n max-width: 92vw;\n}\n\n.detail-panel.visible {\n transform: translateX(0);\n}\n\n/* ================================================================= */\n/* RESIZE HANDLE */\n/* ================================================================= */\n\n.resize-handle {\n position: absolute;\n left: -4px;\n top: 0;\n width: 8px;\n height: 100%;\n cursor: col-resize;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.resize-handle:hover .resize-handle-grip,\n.resize-handle:active .resize-handle-grip {\n opacity: 1;\n background: var(--mj-brand-primary);\n}\n\n.resize-handle-grip {\n width: 3px;\n height: 40px;\n background: var(--mj-border-strong);\n border-radius: 3px;\n opacity: 0;\n transition: opacity 0.2s ease, background 0.2s ease;\n}\n\n.resize-handle:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n}\n\n/* ================================================================= */\n/* BREADCRUMB BAR */\n/* ================================================================= */\n\n.breadcrumb-bar {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n background: var(--mj-bg-surface-sunken);\n}\n\n.breadcrumb-back {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 13px;\n flex-shrink: 0;\n}\n\n.breadcrumb-back:hover {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n}\n\n.breadcrumb-trail {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n overflow: hidden;\n}\n\n.breadcrumb-item {\n display: flex;\n align-items: center;\n gap: 5px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.breadcrumb-item.clickable {\n cursor: pointer;\n transition: color 0.15s ease;\n}\n\n.breadcrumb-item.clickable:hover {\n color: var(--mj-brand-primary);\n}\n\n.breadcrumb-item.current {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.breadcrumb-separator {\n font-size: 9px;\n color: var(--mj-border-strong);\n flex-shrink: 0;\n}\n\n.breadcrumb-icon {\n font-size: 12px;\n flex-shrink: 0;\n}\n\n/* ================================================================= */\n/* HEADER */\n/* ================================================================= */\n\n.panel-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 20px 24px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.header-info {\n flex: 1;\n min-width: 0;\n}\n\n.header-title-row {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.header-scope-icon {\n color: var(--mj-brand-primary);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.header-title {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.header-status {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.header-scope-badge {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.header-description {\n margin: 8px 0 0 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n margin-left: 16px;\n}\n\n.header-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 14px;\n}\n\n.header-action-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n.header-action-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: none;\n border: none;\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n font-size: 16px;\n}\n\n.close-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Status badges (reused) */\n.status-active { background: color-mix(in srgb, var(--mj-status-success) 10%, transparent); color: var(--mj-status-success); }\n.status-archived { background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent); color: var(--mj-text-muted); }\n.status-restored { background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent); color: var(--mj-status-warning); }\n\n/* ================================================================= */\n/* SUMMARY KPIs */\n/* ================================================================= */\n\n.summary-kpis {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n overflow-x: auto;\n}\n\n.summary-kpi {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n flex-shrink: 0;\n}\n\n.kpi-mini-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border-radius: 8px;\n font-size: 15px;\n flex-shrink: 0;\n}\n\n.kpi-mini-content {\n display: flex;\n flex-direction: column;\n}\n\n.kpi-mini-value {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-mini-label {\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n}\n\n/* ================================================================= */\n/* TAB BAR */\n/* ================================================================= */\n\n.tab-bar {\n display: flex;\n gap: 0;\n padding: 0 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n overflow-x: auto;\n}\n\n.tab {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.tab:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.tab-icon {\n font-size: 13px;\n}\n\n.tab-count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n/* ================================================================= */\n/* TAB CONTENT */\n/* ================================================================= */\n\n.tab-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.tab-pane {\n padding: 20px 24px;\n animation: tabFadeIn 0.2s ease;\n}\n\n@keyframes tabFadeIn {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.tab-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.tab-empty-icon {\n font-size: 40px;\n color: var(--mj-border-strong);\n margin-bottom: 12px;\n}\n\n.tab-empty p {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n/* ================================================================= */\n/* OVERVIEW TAB */\n/* ================================================================= */\n\n.detail-section {\n margin-bottom: 24px;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 14px 0;\n padding-bottom: 10px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.section-icon {\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 14px;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.field-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.field-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n}\n\n.field-mono {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n word-break: break-all;\n}\n\n.field-record-name {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n/* Record card for Record-scoped labels on overview tab */\n.record-card {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 16px 18px;\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.record-card-main {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n flex: 1;\n}\n\n.record-card-icon {\n font-size: 22px;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.record-card-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.record-card-name {\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.record-card-name-loading {\n color: var(--mj-text-disabled);\n font-weight: 500;\n font-style: italic;\n}\n\n.record-card-entity {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.record-card-id {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-family: 'SF Mono', 'Fira Code', monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.record-card-open-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n white-space: nowrap;\n}\n\n.record-card-open-btn:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: var(--mj-shadow-md);\n}\n\n.inline-badge {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.inline-badge.small {\n padding: 2px 8px;\n font-size: 11px;\n}\n\n.description-text {\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.6;\n margin: 0;\n}\n\n/* Hierarchy */\n.hierarchy-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 14px;\n transition: background 0.15s ease;\n}\n\n.hierarchy-item:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.hierarchy-icon {\n color: var(--mj-text-disabled);\n font-size: 13px;\n width: 16px;\n text-align: center;\n}\n\n.hierarchy-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n}\n\n.hierarchy-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.hierarchy-meta {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-family: monospace;\n}\n\n.hierarchy-children {\n margin-left: 16px;\n border-left: 2px solid var(--mj-border-default);\n padding-left: 8px;\n}\n\n/* ================================================================= */\n/* SNAPSHOTS TAB */\n/* ================================================================= */\n\n.snapshot-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 16px;\n}\n\n.snapshot-search {\n position: relative;\n flex: 1;\n}\n\n.snapshot-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.snapshot-search-input {\n width: 100%;\n padding: 8px 12px 8px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.snapshot-search-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.snapshot-sort-toggle,\n.snapshot-view-toggle {\n display: flex;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.toggle-btn-sm {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n background: transparent;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n font-size: 12px;\n}\n\n.toggle-btn-sm:hover {\n color: var(--mj-text-primary);\n}\n\n.toggle-btn-sm.active {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n}\n\n.toggle-btn-sm + .toggle-btn-sm {\n border-left: 1px solid var(--mj-border-default);\n}\n\n/* Snapshot groups */\n.snapshot-groups {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.snapshot-group {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.group-header {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.group-header:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.group-chevron {\n font-size: 11px;\n color: var(--mj-text-disabled);\n transition: transform 0.2s ease;\n width: 14px;\n text-align: center;\n}\n\n.group-chevron.expanded {\n transform: rotate(90deg);\n}\n\n.group-entity-icon {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.group-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.group-count-inline {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n margin-left: 6px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 10px;\n font-size: 12px;\n font-weight: 600;\n vertical-align: middle;\n}\n\n.group-content {\n border-top: 1px solid var(--mj-border-default);\n animation: tabFadeIn 0.15s ease;\n}\n\n.group-names-loading {\n display: flex;\n justify-content: center;\n padding: 8px 14px;\n}\n\n/* Snapshot list items */\n.snapshot-list-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px 10px 40px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.snapshot-list-item:last-child {\n border-bottom: none;\n}\n\n.snapshot-list-item:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n}\n\n.snapshot-item-icon {\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.snapshot-item-name {\n flex: 1;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.snapshot-item-id {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-family: monospace;\n}\n\n.snapshot-item-arrow {\n color: var(--mj-border-strong);\n font-size: 11px;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.snapshot-list-item:hover .snapshot-item-arrow {\n color: var(--mj-brand-primary);\n transform: translateX(2px);\n}\n\n/* Snapshot cards */\n.snapshot-cards {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 10px;\n padding: 12px 14px;\n}\n\n.snapshot-card {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.snapshot-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.snapshot-card-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.snapshot-card-header i {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.snapshot-card-name {\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.snapshot-card-meta {\n font-size: 11px;\n color: var(--mj-text-disabled);\n font-family: monospace;\n}\n\n/* ================================================================= */\n/* DEPENDENCIES TAB */\n/* ================================================================= */\n\n.dep-root {\n padding: 4px 0;\n}\n\n.dep-root-entity {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n border-radius: 10px;\n margin-bottom: 12px;\n}\n\n.dep-root-icon {\n color: var(--mj-brand-primary);\n font-size: 16px;\n}\n\n.dep-root-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.dep-root-badge {\n padding: 2px 10px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.dep-node {\n margin-left: 8px;\n border-left: 2px solid var(--mj-border-default);\n}\n\n.dep-node-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-radius: 6px;\n}\n\n.dep-node-header:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.dep-chevron {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: transform 0.2s ease;\n width: 12px;\n text-align: center;\n}\n\n.dep-chevron.expanded {\n transform: rotate(90deg);\n}\n\n.dep-node-spacer {\n width: 12px;\n}\n\n.dep-node-icon {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.dep-node-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.dep-node-field {\n font-size: 11px;\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.dep-node-count {\n font-size: 11px;\n color: var(--mj-text-disabled);\n padding: 1px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n}\n\n.dep-empty {\n padding: 20px;\n text-align: center;\n}\n\n.dep-empty p {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n/* ================================================================= */\n/* CHANGES TAB */\n/* ================================================================= */\n\n.diff-summary {\n display: flex;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.diff-stat {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 12px 20px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n min-width: 80px;\n}\n\n.diff-stat-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.diff-stat-label {\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n}\n\n/* Diff toolbar */\n.diff-toolbar {\n display: flex;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.toolbar-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toolbar-action-btn i {\n font-size: 11px;\n}\n\n.toolbar-action-btn:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.diff-groups {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.diff-group {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.diff-group-header {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 14px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.diff-group-header:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.diff-chevron {\n font-size: 11px;\n color: var(--mj-text-disabled);\n transition: transform 0.2s ease;\n width: 14px;\n text-align: center;\n}\n\n.diff-chevron.expanded {\n transform: rotate(90deg);\n}\n\n.diff-group-icon {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.diff-group-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.diff-group-count {\n font-size: 12px;\n font-weight: 600;\n padding: 2px 10px;\n border-radius: 10px;\n}\n\n.diff-group-content {\n border-top: 1px solid var(--mj-border-default);\n animation: tabFadeIn 0.15s ease;\n}\n\n.diff-record {\n padding: 10px 14px 10px 40px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.diff-record:last-child {\n border-bottom: none;\n}\n\n.diff-record-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n.diff-record-id {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.diff-fields {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin-left: 22px;\n}\n\n.diff-field {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 12px;\n}\n\n.diff-field-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n min-width: 100px;\n}\n\n.diff-field-old {\n color: var(--mj-status-error);\n text-decoration: line-through;\n opacity: 0.7;\n font-family: monospace;\n font-size: 12px;\n}\n\n.diff-field-arrow {\n color: var(--mj-text-disabled);\n font-size: 10px;\n}\n\n.diff-field-new {\n color: var(--mj-status-success);\n font-family: monospace;\n font-size: 12px;\n}\n\n/* Change type colors */\n.change-added { color: var(--mj-status-success); }\n.change-modified { color: var(--mj-status-warning); }\n.change-removed { color: var(--mj-status-error); }\n\n.diff-field.change-added { background: color-mix(in srgb, var(--mj-status-success) 6%, transparent); }\n.diff-field.change-modified { background: color-mix(in srgb, var(--mj-status-warning) 6%, transparent); }\n.diff-field.change-removed { background: color-mix(in srgb, var(--mj-status-error) 6%, transparent); }\n\n/* ================================================================= */\n/* HISTORY TAB */\n/* ================================================================= */\n\n.history-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.history-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 8px;\n transition: background 0.15s ease;\n}\n\n.history-item:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.history-item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.history-item-icon.status-complete { background: color-mix(in srgb, var(--mj-status-success) 10%, transparent); color: var(--mj-status-success); }\n.history-item-icon.status-error { background: color-mix(in srgb, var(--mj-status-error) 10%, transparent); color: var(--mj-status-error); }\n.history-item-icon.status-partial { background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent); color: var(--mj-status-warning); }\n.history-item-icon.status-in-progress { background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary); }\n.history-item-icon.status-pending { background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent); color: var(--mj-text-muted); }\n\n.history-item-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.history-item-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.history-item-meta {\n font-size: 12px;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.history-item-date {\n font-size: 12px;\n color: var(--mj-text-disabled);\n flex-shrink: 0;\n}\n\n/* ================================================================= */\n/* RESPONSIVE */\n/* ================================================================= */\n\n@media (max-width: 1024px) {\n .detail-panel {\n min-width: 360px;\n }\n\n .summary-kpis {\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 768px) {\n .detail-panel {\n width: 100% !important;\n min-width: unset;\n }\n\n .resize-handle {\n display: none;\n }\n\n .detail-grid {\n grid-template-columns: 1fr;\n }\n\n .summary-kpis {\n flex-wrap: wrap;\n gap: 8px;\n padding: 12px 16px;\n }\n\n .summary-kpi {\n padding: 8px 10px;\n }\n\n .panel-header {\n padding: 16px 16px 12px;\n }\n\n .tab-bar {\n padding: 0 16px;\n }\n\n .tab-pane {\n padding: 16px;\n }\n\n .breadcrumb-bar {\n padding: 8px 16px;\n }\n\n .snapshot-toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .diff-summary {\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .diff-stat {\n padding: 10px 14px;\n min-width: 60px;\n }\n}\n\n@media (max-width: 480px) {\n .header-title {\n font-size: 16px;\n }\n\n .header-title-row {\n gap: 6px;\n }\n\n .header-actions {\n margin-left: 8px;\n }\n\n .tab {\n padding: 10px 10px;\n font-size: 12px;\n }\n\n .snapshot-cards {\n grid-template-columns: 1fr;\n }\n}\n"] }]
|
|
2077
2077
|
}], () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }], { Label: [{
|
|
2078
2078
|
type: Input
|
|
2079
2079
|
}], AllLabels: [{
|