@memberjunction/ng-versions 5.42.0 → 5.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/label-create/label-create.component.js +56 -59
- package/dist/lib/label-create/label-create.component.js.map +1 -1
- package/dist/lib/label-detail/label-detail.component.js +134 -150
- package/dist/lib/label-detail/label-detail.component.js.map +1 -1
- package/dist/lib/record-micro-view/record-micro-view.component.js +6 -7
- package/dist/lib/record-micro-view/record-micro-view.component.js.map +1 -1
- package/dist/lib/versions.module.d.ts +2 -1
- package/dist/lib/versions.module.d.ts.map +1 -1
- package/dist/lib/versions.module.js +10 -3
- package/dist/lib/versions.module.js.map +1 -1
- package/package.json +9 -7
- package/dist/__tests__/index.test.d.ts +0 -2
- package/dist/__tests__/index.test.d.ts.map +0 -1
- package/dist/__tests__/index.test.js +0 -7
- package/dist/__tests__/index.test.js.map +0 -1
- package/dist/__tests__/types.test.d.ts +0 -2
- package/dist/__tests__/types.test.d.ts.map +0 -1
- package/dist/__tests__/types.test.js +0 -57
- package/dist/__tests__/types.test.js.map +0 -1
|
@@ -5,7 +5,8 @@ import { GraphQLDataProvider, GraphQLVersionHistoryClient } from '@memberjunctio
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/forms";
|
|
7
7
|
import * as i2 from "@memberjunction/ng-shared-generic";
|
|
8
|
-
import * as i3 from "@
|
|
8
|
+
import * as i3 from "@memberjunction/ng-ui-components";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
9
10
|
function MjLabelCreateComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
10
11
|
i0.ɵɵelementStart(0, "div", 1)(1, "div", 5)(2, "span", 6);
|
|
11
12
|
i0.ɵɵtext(3, "1");
|
|
@@ -69,9 +70,7 @@ function MjLabelCreateComponent_Conditional_2_For_8_Template(rf, ctx) { if (rf &
|
|
|
69
70
|
i0.ɵɵconditional(entity_r4.Description ? 4 : -1);
|
|
70
71
|
} }
|
|
71
72
|
function MjLabelCreateComponent_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
-
i0.ɵɵ
|
|
73
|
-
i0.ɵɵtext(1, " No entities match your search. ");
|
|
74
|
-
i0.ɵɵelementEnd();
|
|
73
|
+
i0.ɵɵelement(0, "mj-empty-state", 15);
|
|
75
74
|
} }
|
|
76
75
|
function MjLabelCreateComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
77
76
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
@@ -85,7 +84,7 @@ function MjLabelCreateComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
85
84
|
i0.ɵɵelementEnd()();
|
|
86
85
|
i0.ɵɵelementStart(6, "div", 13);
|
|
87
86
|
i0.ɵɵrepeaterCreate(7, MjLabelCreateComponent_Conditional_2_For_8_Template, 6, 2, "div", 14, i0.ɵɵrepeaterTrackByIdentity);
|
|
88
|
-
i0.ɵɵconditionalCreate(9, MjLabelCreateComponent_Conditional_2_Conditional_9_Template,
|
|
87
|
+
i0.ɵɵconditionalCreate(9, MjLabelCreateComponent_Conditional_2_Conditional_9_Template, 1, 0, "mj-empty-state", 15);
|
|
89
88
|
i0.ɵɵelementEnd()();
|
|
90
89
|
} if (rf & 2) {
|
|
91
90
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -107,16 +106,16 @@ function MjLabelCreateComponent_Conditional_3_Conditional_9_Template(rf, ctx) {
|
|
|
107
106
|
i0.ɵɵelement(0, "mj-loading", 23);
|
|
108
107
|
} }
|
|
109
108
|
function MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
110
|
-
i0.ɵɵelement(0, "i",
|
|
109
|
+
i0.ɵɵelement(0, "i", 40);
|
|
111
110
|
} }
|
|
112
111
|
function MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Template(rf, ctx) { if (rf & 1) {
|
|
113
112
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
114
|
-
i0.ɵɵelementStart(0, "div",
|
|
113
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
115
114
|
i0.ɵɵlistener("click", function MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Template_div_click_0_listener() { const record_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleRecordSelection(record_r8)); });
|
|
116
|
-
i0.ɵɵelementStart(1, "div",
|
|
117
|
-
i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Conditional_2_Template, 1, 0, "i",
|
|
115
|
+
i0.ɵɵelementStart(1, "div", 39);
|
|
116
|
+
i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Conditional_2_Template, 1, 0, "i", 40);
|
|
118
117
|
i0.ɵɵelementEnd();
|
|
119
|
-
i0.ɵɵelementStart(3, "span",
|
|
118
|
+
i0.ɵɵelementStart(3, "span", 41);
|
|
120
119
|
i0.ɵɵtext(4);
|
|
121
120
|
i0.ɵɵelementEnd()();
|
|
122
121
|
} if (rf & 2) {
|
|
@@ -128,9 +127,7 @@ function MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Template(rf,
|
|
|
128
127
|
i0.ɵɵtextInterpolate(record_r8.DisplayName);
|
|
129
128
|
} }
|
|
130
129
|
function MjLabelCreateComponent_Conditional_3_Conditional_10_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
131
|
-
i0.ɵɵ
|
|
132
|
-
i0.ɵɵtext(1, " No records found for this entity. ");
|
|
133
|
-
i0.ɵɵelementEnd();
|
|
130
|
+
i0.ɵɵelement(0, "mj-empty-state", 33);
|
|
134
131
|
} }
|
|
135
132
|
function MjLabelCreateComponent_Conditional_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
136
133
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
@@ -149,15 +146,15 @@ function MjLabelCreateComponent_Conditional_3_Conditional_10_Template(rf, ctx) {
|
|
|
149
146
|
i0.ɵɵelementEnd()()();
|
|
150
147
|
i0.ɵɵelementStart(9, "div", 31);
|
|
151
148
|
i0.ɵɵrepeaterCreate(10, MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Template, 5, 4, "div", 32, i0.ɵɵrepeaterTrackByIdentity);
|
|
152
|
-
i0.ɵɵconditionalCreate(12, MjLabelCreateComponent_Conditional_3_Conditional_10_Conditional_12_Template,
|
|
149
|
+
i0.ɵɵconditionalCreate(12, MjLabelCreateComponent_Conditional_3_Conditional_10_Conditional_12_Template, 1, 0, "mj-empty-state", 33);
|
|
153
150
|
i0.ɵɵelementEnd();
|
|
154
|
-
i0.ɵɵelementStart(13, "div",
|
|
151
|
+
i0.ɵɵelementStart(13, "div", 34)(14, "span", 35);
|
|
155
152
|
i0.ɵɵtext(15);
|
|
156
153
|
i0.ɵɵelementEnd();
|
|
157
|
-
i0.ɵɵelementStart(16, "button",
|
|
154
|
+
i0.ɵɵelementStart(16, "button", 36);
|
|
158
155
|
i0.ɵɵlistener("click", function MjLabelCreateComponent_Conditional_3_Conditional_10_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.GoToDetailsStep()); });
|
|
159
156
|
i0.ɵɵtext(17, " Continue ");
|
|
160
|
-
i0.ɵɵelement(18, "i",
|
|
157
|
+
i0.ɵɵelement(18, "i", 37);
|
|
161
158
|
i0.ɵɵelementEnd()();
|
|
162
159
|
} if (rf & 2) {
|
|
163
160
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -197,8 +194,8 @@ function MjLabelCreateComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
|
197
194
|
i0.ɵɵconditional(!ctx_r0.IsLoadingRecords ? 10 : -1);
|
|
198
195
|
} }
|
|
199
196
|
function MjLabelCreateComponent_Conditional_4_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
200
|
-
i0.ɵɵelementStart(0, "div",
|
|
201
|
-
i0.ɵɵelement(1, "i",
|
|
197
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
198
|
+
i0.ɵɵelement(1, "i", 53);
|
|
202
199
|
i0.ɵɵelementStart(2, "span");
|
|
203
200
|
i0.ɵɵtext(3);
|
|
204
201
|
i0.ɵɵelementEnd()();
|
|
@@ -216,36 +213,36 @@ function MjLabelCreateComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
|
216
213
|
i0.ɵɵelementStart(4, "p", 9);
|
|
217
214
|
i0.ɵɵtext(5, "Name your version label.");
|
|
218
215
|
i0.ɵɵelementEnd()();
|
|
219
|
-
i0.ɵɵelementStart(6, "div",
|
|
220
|
-
i0.ɵɵelement(8, "i",
|
|
216
|
+
i0.ɵɵelementStart(6, "div", 42)(7, "div", 43);
|
|
217
|
+
i0.ɵɵelement(8, "i", 44);
|
|
221
218
|
i0.ɵɵelementStart(9, "span");
|
|
222
219
|
i0.ɵɵtext(10);
|
|
223
220
|
i0.ɵɵelementEnd()();
|
|
224
|
-
i0.ɵɵelementStart(11, "div",
|
|
225
|
-
i0.ɵɵelement(12, "i",
|
|
221
|
+
i0.ɵɵelementStart(11, "div", 43);
|
|
222
|
+
i0.ɵɵelement(12, "i", 45);
|
|
226
223
|
i0.ɵɵelementStart(13, "span");
|
|
227
224
|
i0.ɵɵtext(14);
|
|
228
225
|
i0.ɵɵelementEnd()();
|
|
229
|
-
i0.ɵɵconditionalCreate(15, MjLabelCreateComponent_Conditional_4_Conditional_15_Template, 4, 1, "div",
|
|
226
|
+
i0.ɵɵconditionalCreate(15, MjLabelCreateComponent_Conditional_4_Conditional_15_Template, 4, 1, "div", 43);
|
|
230
227
|
i0.ɵɵelementEnd();
|
|
231
|
-
i0.ɵɵelementStart(16, "div",
|
|
228
|
+
i0.ɵɵelementStart(16, "div", 46)(17, "label", 47);
|
|
232
229
|
i0.ɵɵtext(18, "Label Name");
|
|
233
230
|
i0.ɵɵelementEnd();
|
|
234
|
-
i0.ɵɵelementStart(19, "input",
|
|
231
|
+
i0.ɵɵelementStart(19, "input", 48);
|
|
235
232
|
i0.ɵɵtwoWayListener("ngModelChange", function MjLabelCreateComponent_Conditional_4_Template_input_ngModelChange_19_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.LabelName, $event) || (ctx_r0.LabelName = $event); return i0.ɵɵresetView($event); });
|
|
236
233
|
i0.ɵɵelementEnd()();
|
|
237
|
-
i0.ɵɵelementStart(20, "div",
|
|
234
|
+
i0.ɵɵelementStart(20, "div", 46)(21, "label", 47);
|
|
238
235
|
i0.ɵɵtext(22, "Description (optional)");
|
|
239
236
|
i0.ɵɵelementEnd();
|
|
240
|
-
i0.ɵɵelementStart(23, "textarea",
|
|
237
|
+
i0.ɵɵelementStart(23, "textarea", 49);
|
|
241
238
|
i0.ɵɵtwoWayListener("ngModelChange", function MjLabelCreateComponent_Conditional_4_Template_textarea_ngModelChange_23_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.LabelDescription, $event) || (ctx_r0.LabelDescription = $event); return i0.ɵɵresetView($event); });
|
|
242
239
|
i0.ɵɵelementEnd()();
|
|
243
|
-
i0.ɵɵelementStart(24, "div",
|
|
240
|
+
i0.ɵɵelementStart(24, "div", 50)(25, "button", 36);
|
|
244
241
|
i0.ɵɵlistener("click", function MjLabelCreateComponent_Conditional_4_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.CreateLabels()); });
|
|
245
|
-
i0.ɵɵelement(26, "i",
|
|
242
|
+
i0.ɵɵelement(26, "i", 51);
|
|
246
243
|
i0.ɵɵtext(27);
|
|
247
244
|
i0.ɵɵelementEnd();
|
|
248
|
-
i0.ɵɵelementStart(28, "button",
|
|
245
|
+
i0.ɵɵelementStart(28, "button", 52);
|
|
249
246
|
i0.ɵɵlistener("click", function MjLabelCreateComponent_Conditional_4_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnCancel()); });
|
|
250
247
|
i0.ɵɵtext(29, " Cancel ");
|
|
251
248
|
i0.ɵɵelementEnd()()();
|
|
@@ -267,8 +264,8 @@ function MjLabelCreateComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
|
267
264
|
i0.ɵɵtextInterpolate1(" Create Label", ctx_r0.SelectedRecordCount > 1 ? "s" : "", " ");
|
|
268
265
|
} }
|
|
269
266
|
function MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
270
|
-
i0.ɵɵelementStart(0, "span",
|
|
271
|
-
i0.ɵɵelement(1, "i",
|
|
267
|
+
i0.ɵɵelementStart(0, "span", 65);
|
|
268
|
+
i0.ɵɵelement(1, "i", 44);
|
|
272
269
|
i0.ɵɵtext(2);
|
|
273
270
|
i0.ɵɵelementEnd();
|
|
274
271
|
} if (rf & 2) {
|
|
@@ -277,11 +274,11 @@ function MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Condit
|
|
|
277
274
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.CreateProgress.CurrentEntity, " ");
|
|
278
275
|
} }
|
|
279
276
|
function MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
280
|
-
i0.ɵɵelementStart(0, "div",
|
|
281
|
-
i0.ɵɵelement(2, "i",
|
|
277
|
+
i0.ɵɵelementStart(0, "div", 64)(1, "span", 65);
|
|
278
|
+
i0.ɵɵelement(2, "i", 66);
|
|
282
279
|
i0.ɵɵtext(3);
|
|
283
280
|
i0.ɵɵelementEnd();
|
|
284
|
-
i0.ɵɵconditionalCreate(4, MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Conditional_4_Template, 3, 1, "span",
|
|
281
|
+
i0.ɵɵconditionalCreate(4, MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Conditional_4_Template, 3, 1, "span", 65);
|
|
285
282
|
i0.ɵɵelementEnd();
|
|
286
283
|
} if (rf & 2) {
|
|
287
284
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
@@ -291,16 +288,16 @@ function MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Templa
|
|
|
291
288
|
i0.ɵɵconditional(ctx_r0.CreateProgress.CurrentEntity ? 4 : -1);
|
|
292
289
|
} }
|
|
293
290
|
function MjLabelCreateComponent_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
294
|
-
i0.ɵɵelementStart(0, "div",
|
|
295
|
-
i0.ɵɵelement(2, "div",
|
|
291
|
+
i0.ɵɵelementStart(0, "div", 57)(1, "div", 59);
|
|
292
|
+
i0.ɵɵelement(2, "div", 60);
|
|
296
293
|
i0.ɵɵelementEnd();
|
|
297
|
-
i0.ɵɵelementStart(3, "div",
|
|
294
|
+
i0.ɵɵelementStart(3, "div", 61)(4, "span", 62);
|
|
298
295
|
i0.ɵɵtext(5);
|
|
299
296
|
i0.ɵɵelementEnd();
|
|
300
|
-
i0.ɵɵelementStart(6, "span",
|
|
297
|
+
i0.ɵɵelementStart(6, "span", 63);
|
|
301
298
|
i0.ɵɵtext(7);
|
|
302
299
|
i0.ɵɵelementEnd()();
|
|
303
|
-
i0.ɵɵconditionalCreate(8, MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Template, 5, 3, "div",
|
|
300
|
+
i0.ɵɵconditionalCreate(8, MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Template, 5, 3, "div", 64);
|
|
304
301
|
i0.ɵɵelementEnd();
|
|
305
302
|
} if (rf & 2) {
|
|
306
303
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -323,7 +320,7 @@ function MjLabelCreateComponent_Conditional_5_Conditional_6_Conditional_2_Templa
|
|
|
323
320
|
i0.ɵɵtextInterpolate1(" \u00B7 ", ctx_r0.CreatedItemCount, " items captured");
|
|
324
321
|
} }
|
|
325
322
|
function MjLabelCreateComponent_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
326
|
-
i0.ɵɵelementStart(0, "p",
|
|
323
|
+
i0.ɵɵelementStart(0, "p", 58);
|
|
327
324
|
i0.ɵɵtext(1);
|
|
328
325
|
i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_5_Conditional_6_Conditional_2_Template, 2, 1, "span");
|
|
329
326
|
i0.ɵɵelementEnd();
|
|
@@ -335,14 +332,14 @@ function MjLabelCreateComponent_Conditional_5_Conditional_6_Template(rf, ctx) {
|
|
|
335
332
|
i0.ɵɵconditional(ctx_r0.CreatedItemCount > 0 ? 2 : -1);
|
|
336
333
|
} }
|
|
337
334
|
function MjLabelCreateComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
338
|
-
i0.ɵɵelementStart(0, "div", 3)(1, "div",
|
|
339
|
-
i0.ɵɵelement(2, "i",
|
|
335
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "div", 54);
|
|
336
|
+
i0.ɵɵelement(2, "i", 55);
|
|
340
337
|
i0.ɵɵelementEnd();
|
|
341
|
-
i0.ɵɵelementStart(3, "h3",
|
|
338
|
+
i0.ɵɵelementStart(3, "h3", 56);
|
|
342
339
|
i0.ɵɵtext(4, "Creating Labels...");
|
|
343
340
|
i0.ɵɵelementEnd();
|
|
344
|
-
i0.ɵɵconditionalCreate(5, MjLabelCreateComponent_Conditional_5_Conditional_5_Template, 9, 5, "div",
|
|
345
|
-
i0.ɵɵconditionalCreate(6, MjLabelCreateComponent_Conditional_5_Conditional_6_Template, 3, 3, "p",
|
|
341
|
+
i0.ɵɵconditionalCreate(5, MjLabelCreateComponent_Conditional_5_Conditional_5_Template, 9, 5, "div", 57);
|
|
342
|
+
i0.ɵɵconditionalCreate(6, MjLabelCreateComponent_Conditional_5_Conditional_6_Template, 3, 3, "p", 58);
|
|
346
343
|
i0.ɵɵelementEnd();
|
|
347
344
|
} if (rf & 2) {
|
|
348
345
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -361,13 +358,13 @@ function MjLabelCreateComponent_Conditional_6_Conditional_1_Conditional_6_Templa
|
|
|
361
358
|
i0.ɵɵtextInterpolate1(" with ", ctx_r0.CreatedItemCount, " items captured");
|
|
362
359
|
} }
|
|
363
360
|
function MjLabelCreateComponent_Conditional_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
364
|
-
i0.ɵɵelementStart(0, "div",
|
|
365
|
-
i0.ɵɵelement(1, "i",
|
|
361
|
+
i0.ɵɵelementStart(0, "div", 68);
|
|
362
|
+
i0.ɵɵelement(1, "i", 40);
|
|
366
363
|
i0.ɵɵelementEnd();
|
|
367
|
-
i0.ɵɵelementStart(2, "h3",
|
|
364
|
+
i0.ɵɵelementStart(2, "h3", 69);
|
|
368
365
|
i0.ɵɵtext(3, "Labels Created");
|
|
369
366
|
i0.ɵɵelementEnd();
|
|
370
|
-
i0.ɵɵelementStart(4, "p",
|
|
367
|
+
i0.ɵɵelementStart(4, "p", 70);
|
|
371
368
|
i0.ɵɵtext(5);
|
|
372
369
|
i0.ɵɵconditionalCreate(6, MjLabelCreateComponent_Conditional_6_Conditional_1_Conditional_6_Template, 2, 1, "span");
|
|
373
370
|
i0.ɵɵtext(7, ". ");
|
|
@@ -380,13 +377,13 @@ function MjLabelCreateComponent_Conditional_6_Conditional_1_Template(rf, ctx) {
|
|
|
380
377
|
i0.ɵɵconditional(ctx_r0.CreatedItemCount > 0 ? 6 : -1);
|
|
381
378
|
} }
|
|
382
379
|
function MjLabelCreateComponent_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
383
|
-
i0.ɵɵelementStart(0, "div",
|
|
384
|
-
i0.ɵɵelement(1, "i",
|
|
380
|
+
i0.ɵɵelementStart(0, "div", 71);
|
|
381
|
+
i0.ɵɵelement(1, "i", 72);
|
|
385
382
|
i0.ɵɵelementEnd();
|
|
386
|
-
i0.ɵɵelementStart(2, "h3",
|
|
383
|
+
i0.ɵɵelementStart(2, "h3", 69);
|
|
387
384
|
i0.ɵɵtext(3, "Error");
|
|
388
385
|
i0.ɵɵelementEnd();
|
|
389
|
-
i0.ɵɵelementStart(4, "p",
|
|
386
|
+
i0.ɵɵelementStart(4, "p", 73);
|
|
390
387
|
i0.ɵɵtext(5);
|
|
391
388
|
i0.ɵɵelementEnd();
|
|
392
389
|
} if (rf & 2) {
|
|
@@ -399,7 +396,7 @@ function MjLabelCreateComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
399
396
|
i0.ɵɵelementStart(0, "div", 4);
|
|
400
397
|
i0.ɵɵconditionalCreate(1, MjLabelCreateComponent_Conditional_6_Conditional_1_Template, 8, 3);
|
|
401
398
|
i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_6_Conditional_2_Template, 6, 1);
|
|
402
|
-
i0.ɵɵelementStart(3, "button",
|
|
399
|
+
i0.ɵɵelementStart(3, "button", 67);
|
|
403
400
|
i0.ɵɵlistener("click", function MjLabelCreateComponent_Conditional_6_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.FinishCreate()); });
|
|
404
401
|
i0.ɵɵtext(4, "Done");
|
|
405
402
|
i0.ɵɵelementEnd()();
|
|
@@ -758,7 +755,7 @@ export class MjLabelCreateComponent extends BaseAngularComponent {
|
|
|
758
755
|
this.CreateProgress = null;
|
|
759
756
|
}
|
|
760
757
|
static ɵfac = function MjLabelCreateComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MjLabelCreateComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone)); };
|
|
761
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelCreateComponent, selectors: [["mj-label-create"]], inputs: { PreselectedEntity: "PreselectedEntity", PreselectedRecordIds: "PreselectedRecordIds" }, outputs: { Created: "Created", Cancel: "Cancel" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 6, consts: [[1, "label-create-container"], [1, "step-indicator"], [1, "dialog-step"], [1, "dialog-step", "creating-step"], [1, "dialog-step", "done-step"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "step-description"], [1, "dialog-search"], [1, "fa-solid", "fa-search", "dialog-search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "entity-list"], [1, "entity-option"], [1, "entity-list-empty"], [1, "entity-option", 3, "click"], [1, "entity-option-info"], [1, "entity-option-name"], [1, "entity-option-desc"], [1, "fa-solid", "fa-chevron-right", "entity-option-arrow"], [1, "step-header-row"], [1, "btn-back"], ["text", "Loading records..."], [1, "btn-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "records-toolbar"], [1, "dialog-search", 2, "flex", "1"], ["type", "text", "placeholder", "Search records...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "selection-actions"], [1, "btn-text", 3, "click"], [1, "record-list"], [1, "record-option", 3, "selected"], [1, "records-footer"], [1, "selection-count"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "record-option", 3, "click"], [1, "record-checkbox"], [1, "fa-solid", "fa-check"], [1, "record-name"], [1, "details-summary"], [1, "summary-item"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-check-double"], [1, "form-field"], [1, "form-label"], ["type", "text", "placeholder", "e.g. Customer Support Agent v2.0", 1, "form-input", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "What does this version represent?", 1, "form-textarea", 3, "ngModelChange", "ngModel"], [1, "details-footer"], [1, "fa-solid", "fa-tag"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-layer-group"], [1, "creating-animation"], [1, "fa-solid", "fa-tag", "fa-spin", "creating-icon"], [1, "creating-title"], [1, "progress-container"], [1, "creating-progress"], [1, "progress-bar-track"], [1, "progress-bar-fill"], [1, "progress-details"], [1, "progress-message"], [1, "progress-pct"], [1, "progress-stats"], [1, "progress-stat"], [1, "fa-solid", "fa-camera"], [1, "btn-primary", 3, "click"], [1, "done-icon-wrap", "success"], [1, "done-title"], [1, "done-message"], [1, "done-icon-wrap", "error"], [1, "fa-solid", "fa-xmark"], [1, "done-message", "error-text"]], template: function MjLabelCreateComponent_Template(rf, ctx) { if (rf & 1) {
|
|
758
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelCreateComponent, selectors: [["mj-label-create"]], inputs: { PreselectedEntity: "PreselectedEntity", PreselectedRecordIds: "PreselectedRecordIds" }, outputs: { Created: "Created", Cancel: "Cancel" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 6, consts: [[1, "label-create-container"], [1, "step-indicator"], [1, "dialog-step"], [1, "dialog-step", "creating-step"], [1, "dialog-step", "done-step"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "step-description"], [1, "dialog-search"], [1, "fa-solid", "fa-search", "dialog-search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "entity-list"], [1, "entity-option"], ["Size", "compact", "Variant", "no-results", "Title", "No entities match your search.", 1, "entity-list-empty"], [1, "entity-option", 3, "click"], [1, "entity-option-info"], [1, "entity-option-name"], [1, "entity-option-desc"], [1, "fa-solid", "fa-chevron-right", "entity-option-arrow"], [1, "step-header-row"], [1, "btn-back"], ["text", "Loading records..."], [1, "btn-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "records-toolbar"], [1, "dialog-search", 2, "flex", "1"], ["type", "text", "placeholder", "Search records...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "selection-actions"], [1, "btn-text", 3, "click"], [1, "record-list"], [1, "record-option", 3, "selected"], ["Size", "compact", "Icon", "", "Title", "No records found for this entity.", 1, "entity-list-empty"], [1, "records-footer"], [1, "selection-count"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "record-option", 3, "click"], [1, "record-checkbox"], [1, "fa-solid", "fa-check"], [1, "record-name"], [1, "details-summary"], [1, "summary-item"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-check-double"], [1, "form-field"], [1, "form-label"], ["type", "text", "placeholder", "e.g. Customer Support Agent v2.0", 1, "form-input", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "What does this version represent?", 1, "form-textarea", 3, "ngModelChange", "ngModel"], [1, "details-footer"], [1, "fa-solid", "fa-tag"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-layer-group"], [1, "creating-animation"], [1, "fa-solid", "fa-tag", "fa-spin", "creating-icon"], [1, "creating-title"], [1, "progress-container"], [1, "creating-progress"], [1, "progress-bar-track"], [1, "progress-bar-fill"], [1, "progress-details"], [1, "progress-message"], [1, "progress-pct"], [1, "progress-stats"], [1, "progress-stat"], [1, "fa-solid", "fa-camera"], [1, "btn-primary", 3, "click"], [1, "done-icon-wrap", "success"], [1, "done-title"], [1, "done-message"], [1, "done-icon-wrap", "error"], [1, "fa-solid", "fa-xmark"], [1, "done-message", "error-text"]], template: function MjLabelCreateComponent_Template(rf, ctx) { if (rf & 1) {
|
|
762
759
|
i0.ɵɵelementStart(0, "div", 0);
|
|
763
760
|
i0.ɵɵconditionalCreate(1, MjLabelCreateComponent_Conditional_1_Template, 18, 14, "div", 1);
|
|
764
761
|
i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_2_Template, 10, 2, "div", 2);
|
|
@@ -780,11 +777,11 @@ export class MjLabelCreateComponent extends BaseAngularComponent {
|
|
|
780
777
|
i0.ɵɵconditional(ctx.CreateStep === "creating" ? 5 : -1);
|
|
781
778
|
i0.ɵɵadvance();
|
|
782
779
|
i0.ɵɵconditional(ctx.CreateStep === "done" ? 6 : -1);
|
|
783
|
-
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.SlicePipe], styles: ["\n\n.label-create-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.step.active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n.dialog-step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n.step-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.dialog-search[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.dialog-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.dialog-search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.entity-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty[_ngcontent-%COMP%] {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n\n\n.records-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text[_ngcontent-%COMP%] {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.record-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.record-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n\n\n.details-summary[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.summary-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.details-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n\n\n.btn-primary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.creating-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.creating-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.creating-progress[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n\n\n.progress-container[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track[_ngcontent-%COMP%] {\n width: 100%;\n height: 8px;\n background: var(--mj-border-default);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.progress-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.done-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.done-message[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0 0 20px 0;\n}\n\n.error-text[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}"], changeDetection: 0 });
|
|
780
|
+
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.MJEmptyStateComponent, i4.SlicePipe], styles: ["\n\n.label-create-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.step.active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n.dialog-step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n.step-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.dialog-search[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.dialog-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.dialog-search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.entity-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty[_ngcontent-%COMP%] {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n\n\n.records-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text[_ngcontent-%COMP%] {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.record-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.record-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n\n\n.details-summary[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.summary-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.details-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n\n\n.btn-primary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.creating-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.creating-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.creating-progress[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n\n\n.progress-container[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track[_ngcontent-%COMP%] {\n width: 100%;\n height: 8px;\n background: var(--mj-border-default);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.progress-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.done-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.done-message[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0 0 20px 0;\n}\n\n.error-text[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}"], changeDetection: 0 });
|
|
784
781
|
}
|
|
785
782
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MjLabelCreateComponent, [{
|
|
786
783
|
type: Component,
|
|
787
|
-
args: [{ standalone: false, selector: 'mj-label-create', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"label-create-container\">\n\n <!-- Step indicator -->\n @if (CreateStep !== 'creating' && CreateStep !== 'done') {\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CreateStep === 'entity'\" [class.completed]=\"CreateStep !== 'entity'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Entity</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep !== 'entity'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'records'\" [class.completed]=\"CreateStep === 'details'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Records</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep === 'details'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'details'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Details</span>\n </div>\n </div>\n }\n\n <!-- Step 1: Pick Entity -->\n @if (CreateStep === 'entity') {\n <div class=\"dialog-step\">\n <p class=\"step-description\">Choose an entity type to label records from.</p>\n <div class=\"dialog-search\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search entities...\"\n [ngModel]=\"EntitySearchText\"\n (ngModelChange)=\"OnEntitySearchChange($event)\" />\n </div>\n <div class=\"entity-list\">\n @for (entity of FilteredEntities; track entity) {\n <div class=\"entity-option\"\n (click)=\"SelectEntity(entity)\">\n <div class=\"entity-option-info\">\n <span class=\"entity-option-name\">{{entity.Name}}</span>\n @if (entity.Description) {\n <span class=\"entity-option-desc\">{{entity.Description | slice:0:80}}</span>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right entity-option-arrow\"></i>\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <div class=\"entity-list-empty\">\n No entities match your search.\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Step 2: Select Records -->\n @if (CreateStep === 'records') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n @if (!PreselectedEntity) {\n <button class=\"btn-back\" (click)=\"GoBackToEntity()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n }\n <div>\n <p class=\"step-description\">\n Select records from <strong>{{SelectedEntity?.Name}}</strong> to label.\n </p>\n </div>\n </div>\n @if (IsLoadingRecords) {\n <mj-loading text=\"Loading records...\"></mj-loading>\n }\n @if (!IsLoadingRecords) {\n <div class=\"records-toolbar\">\n <div class=\"dialog-search\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search records...\"\n [ngModel]=\"RecordSearchText\"\n (ngModelChange)=\"OnRecordSearchChange($event)\" />\n </div>\n <div class=\"selection-actions\">\n <button class=\"btn-text\" (click)=\"SelectAllRecords()\">Select All</button>\n <button class=\"btn-text\" (click)=\"DeselectAllRecords()\">Clear</button>\n </div>\n </div>\n <div class=\"record-list\">\n @for (record of FilteredRecords; track record) {\n <div class=\"record-option\"\n [class.selected]=\"record.Selected\"\n (click)=\"ToggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.Selected) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </div>\n <span class=\"record-name\">{{record.DisplayName}}</span>\n </div>\n }\n @if (FilteredRecords.length === 0 && !IsLoadingRecords) {\n <div class=\"entity-list-empty\">\n No records found for this entity.\n </div>\n }\n </div>\n <div class=\"records-footer\">\n <span class=\"selection-count\">{{SelectedRecordCount}} selected</span>\n <button class=\"btn-primary\"\n [disabled]=\"SelectedRecordCount === 0\"\n (click)=\"GoToDetailsStep()\">\n Continue\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Step 3: Label Details -->\n @if (CreateStep === 'details') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n <button class=\"btn-back\" (click)=\"GoBackToRecords()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <p class=\"step-description\">Name your version label.</p>\n </div>\n <div class=\"details-summary\">\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n <span>{{SelectedEntity?.Name}}</span>\n </div>\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-check-double\"></i>\n <span>{{SelectedRecordCount}} record{{SelectedRecordCount > 1 ? 's' : ''}} selected</span>\n </div>\n @if (SelectedRecordCount > 1) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Will create 1 group + {{SelectedRecordCount}} child labels</span>\n </div>\n }\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Label Name</label>\n <input type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Customer Support Agent v2.0\"\n [(ngModel)]=\"LabelName\" />\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Description (optional)</label>\n <textarea class=\"form-textarea\"\n rows=\"3\"\n placeholder=\"What does this version represent?\"\n [(ngModel)]=\"LabelDescription\"></textarea>\n </div>\n <div class=\"details-footer\">\n <button class=\"btn-primary\"\n [disabled]=\"!LabelName.trim()\"\n (click)=\"CreateLabels()\">\n <i class=\"fa-solid fa-tag\"></i>\n Create Label{{SelectedRecordCount > 1 ? 's' : ''}}\n </button>\n <button class=\"btn-secondary\" (click)=\"OnCancel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- Creating state -->\n @if (CreateStep === 'creating') {\n <div class=\"dialog-step creating-step\">\n <div class=\"creating-animation\">\n <i class=\"fa-solid fa-tag fa-spin creating-icon\"></i>\n </div>\n <h3 class=\"creating-title\">Creating Labels...</h3>\n <!-- Progress bar -->\n @if (CreateProgress) {\n <div class=\"progress-container\">\n <div class=\"progress-bar-track\">\n <div class=\"progress-bar-fill\" [style.width.%]=\"CreateProgress.Percentage\"></div>\n </div>\n <div class=\"progress-details\">\n <span class=\"progress-message\">{{CreateProgress.Message}}</span>\n <span class=\"progress-pct\">{{CreateProgress.Percentage}}%</span>\n </div>\n @if (CreateProgress.RecordsProcessed != null && CreateProgress.TotalRecords) {\n <div class=\"progress-stats\">\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-camera\"></i>\n {{CreateProgress.RecordsProcessed}} / {{CreateProgress.TotalRecords}} records\n </span>\n @if (CreateProgress.CurrentEntity) {\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-table\"></i>\n {{CreateProgress.CurrentEntity}}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (!CreateProgress) {\n <p class=\"creating-progress\">\n {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}} created\n @if (CreatedItemCount > 0) {\n <span> · {{CreatedItemCount}} items captured</span>\n }\n </p>\n }\n </div>\n }\n\n <!-- Done state -->\n @if (CreateStep === 'done') {\n <div class=\"dialog-step done-step\">\n @if (!CreateError) {\n <div class=\"done-icon-wrap success\">\n <i class=\"fa-solid fa-check\"></i>\n </div>\n <h3 class=\"done-title\">Labels Created</h3>\n <p class=\"done-message\">\n Successfully created {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}}\n @if (CreatedItemCount > 0) {\n <span> with {{CreatedItemCount}} items captured</span>\n }.\n </p>\n }\n @if (CreateError) {\n <div class=\"done-icon-wrap error\">\n <i class=\"fa-solid fa-xmark\"></i>\n </div>\n <h3 class=\"done-title\">Error</h3>\n <p class=\"done-message error-text\">{{CreateError}}</p>\n }\n <button class=\"btn-primary\" (click)=\"FinishCreate()\">Done</button>\n </div>\n }\n </div>\n", styles: ["/* Label Create Wizard Container */\n.label-create-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* Step Indicator */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed .step-number {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.step.active .step-label {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed .step-label {\n color: var(--mj-status-success);\n}\n\n.step-connector {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active {\n background: var(--mj-status-success);\n}\n\n/* Dialog Step Content */\n.dialog-step {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n.step-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Dialog Search */\n.dialog-search {\n position: relative;\n}\n\n.dialog-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.dialog-search-input {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* Entity List */\n.entity-list {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option:last-child {\n border-bottom: none;\n}\n\n.entity-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc {\n font-size: 12px;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow {\n color: var(--mj-text-disabled);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n/* Records */\n.records-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option:last-child {\n border-bottom: none;\n}\n\n.record-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.record-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected .record-checkbox {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n/* Details step */\n.details-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.summary-item i {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-textarea {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.details-footer {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n/* Buttons */\n.btn-primary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-secondary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Creating state */\n.creating-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation {\n margin-bottom: 16px;\n}\n\n.creating-icon {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.creating-progress {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n/* Progress bar */\n.progress-container {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track {\n width: 100%;\n height: 8px;\n background: var(--mj-border-default);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.progress-stat i {\n font-size: 11px;\n}\n\n/* Done state */\n.done-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.done-message {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0 0 20px 0;\n}\n\n.error-text {\n color: var(--mj-status-error);\n}\n"] }]
|
|
784
|
+
args: [{ standalone: false, selector: 'mj-label-create', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"label-create-container\">\n\n <!-- Step indicator -->\n @if (CreateStep !== 'creating' && CreateStep !== 'done') {\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CreateStep === 'entity'\" [class.completed]=\"CreateStep !== 'entity'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Entity</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep !== 'entity'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'records'\" [class.completed]=\"CreateStep === 'details'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Records</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep === 'details'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'details'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Details</span>\n </div>\n </div>\n }\n\n <!-- Step 1: Pick Entity -->\n @if (CreateStep === 'entity') {\n <div class=\"dialog-step\">\n <p class=\"step-description\">Choose an entity type to label records from.</p>\n <div class=\"dialog-search\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search entities...\"\n [ngModel]=\"EntitySearchText\"\n (ngModelChange)=\"OnEntitySearchChange($event)\" />\n </div>\n <div class=\"entity-list\">\n @for (entity of FilteredEntities; track entity) {\n <div class=\"entity-option\"\n (click)=\"SelectEntity(entity)\">\n <div class=\"entity-option-info\">\n <span class=\"entity-option-name\">{{entity.Name}}</span>\n @if (entity.Description) {\n <span class=\"entity-option-desc\">{{entity.Description | slice:0:80}}</span>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right entity-option-arrow\"></i>\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <mj-empty-state class=\"entity-list-empty\" Size=\"compact\"\n Variant=\"no-results\" Title=\"No entities match your search.\" />\n }\n </div>\n </div>\n }\n\n <!-- Step 2: Select Records -->\n @if (CreateStep === 'records') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n @if (!PreselectedEntity) {\n <button class=\"btn-back\" (click)=\"GoBackToEntity()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n }\n <div>\n <p class=\"step-description\">\n Select records from <strong>{{SelectedEntity?.Name}}</strong> to label.\n </p>\n </div>\n </div>\n @if (IsLoadingRecords) {\n <mj-loading text=\"Loading records...\"></mj-loading>\n }\n @if (!IsLoadingRecords) {\n <div class=\"records-toolbar\">\n <div class=\"dialog-search\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search records...\"\n [ngModel]=\"RecordSearchText\"\n (ngModelChange)=\"OnRecordSearchChange($event)\" />\n </div>\n <div class=\"selection-actions\">\n <button class=\"btn-text\" (click)=\"SelectAllRecords()\">Select All</button>\n <button class=\"btn-text\" (click)=\"DeselectAllRecords()\">Clear</button>\n </div>\n </div>\n <div class=\"record-list\">\n @for (record of FilteredRecords; track record) {\n <div class=\"record-option\"\n [class.selected]=\"record.Selected\"\n (click)=\"ToggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.Selected) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </div>\n <span class=\"record-name\">{{record.DisplayName}}</span>\n </div>\n }\n @if (FilteredRecords.length === 0 && !IsLoadingRecords) {\n <mj-empty-state class=\"entity-list-empty\" Size=\"compact\"\n Icon=\"\" Title=\"No records found for this entity.\" />\n }\n </div>\n <div class=\"records-footer\">\n <span class=\"selection-count\">{{SelectedRecordCount}} selected</span>\n <button class=\"btn-primary\"\n [disabled]=\"SelectedRecordCount === 0\"\n (click)=\"GoToDetailsStep()\">\n Continue\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Step 3: Label Details -->\n @if (CreateStep === 'details') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n <button class=\"btn-back\" (click)=\"GoBackToRecords()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <p class=\"step-description\">Name your version label.</p>\n </div>\n <div class=\"details-summary\">\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n <span>{{SelectedEntity?.Name}}</span>\n </div>\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-check-double\"></i>\n <span>{{SelectedRecordCount}} record{{SelectedRecordCount > 1 ? 's' : ''}} selected</span>\n </div>\n @if (SelectedRecordCount > 1) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Will create 1 group + {{SelectedRecordCount}} child labels</span>\n </div>\n }\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Label Name</label>\n <input type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Customer Support Agent v2.0\"\n [(ngModel)]=\"LabelName\" />\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Description (optional)</label>\n <textarea class=\"form-textarea\"\n rows=\"3\"\n placeholder=\"What does this version represent?\"\n [(ngModel)]=\"LabelDescription\"></textarea>\n </div>\n <div class=\"details-footer\">\n <button class=\"btn-primary\"\n [disabled]=\"!LabelName.trim()\"\n (click)=\"CreateLabels()\">\n <i class=\"fa-solid fa-tag\"></i>\n Create Label{{SelectedRecordCount > 1 ? 's' : ''}}\n </button>\n <button class=\"btn-secondary\" (click)=\"OnCancel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- Creating state -->\n @if (CreateStep === 'creating') {\n <div class=\"dialog-step creating-step\">\n <div class=\"creating-animation\">\n <i class=\"fa-solid fa-tag fa-spin creating-icon\"></i>\n </div>\n <h3 class=\"creating-title\">Creating Labels...</h3>\n <!-- Progress bar -->\n @if (CreateProgress) {\n <div class=\"progress-container\">\n <div class=\"progress-bar-track\">\n <div class=\"progress-bar-fill\" [style.width.%]=\"CreateProgress.Percentage\"></div>\n </div>\n <div class=\"progress-details\">\n <span class=\"progress-message\">{{CreateProgress.Message}}</span>\n <span class=\"progress-pct\">{{CreateProgress.Percentage}}%</span>\n </div>\n @if (CreateProgress.RecordsProcessed != null && CreateProgress.TotalRecords) {\n <div class=\"progress-stats\">\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-camera\"></i>\n {{CreateProgress.RecordsProcessed}} / {{CreateProgress.TotalRecords}} records\n </span>\n @if (CreateProgress.CurrentEntity) {\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-table\"></i>\n {{CreateProgress.CurrentEntity}}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (!CreateProgress) {\n <p class=\"creating-progress\">\n {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}} created\n @if (CreatedItemCount > 0) {\n <span> · {{CreatedItemCount}} items captured</span>\n }\n </p>\n }\n </div>\n }\n\n <!-- Done state -->\n @if (CreateStep === 'done') {\n <div class=\"dialog-step done-step\">\n @if (!CreateError) {\n <div class=\"done-icon-wrap success\">\n <i class=\"fa-solid fa-check\"></i>\n </div>\n <h3 class=\"done-title\">Labels Created</h3>\n <p class=\"done-message\">\n Successfully created {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}}\n @if (CreatedItemCount > 0) {\n <span> with {{CreatedItemCount}} items captured</span>\n }.\n </p>\n }\n @if (CreateError) {\n <div class=\"done-icon-wrap error\">\n <i class=\"fa-solid fa-xmark\"></i>\n </div>\n <h3 class=\"done-title\">Error</h3>\n <p class=\"done-message error-text\">{{CreateError}}</p>\n }\n <button class=\"btn-primary\" (click)=\"FinishCreate()\">Done</button>\n </div>\n }\n </div>\n", styles: ["/* Label Create Wizard Container */\n.label-create-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* Step Indicator */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed .step-number {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.step.active .step-label {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed .step-label {\n color: var(--mj-status-success);\n}\n\n.step-connector {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active {\n background: var(--mj-status-success);\n}\n\n/* Dialog Step Content */\n.dialog-step {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n.step-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Dialog Search */\n.dialog-search {\n position: relative;\n}\n\n.dialog-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.dialog-search-input {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* Entity List */\n.entity-list {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option:last-child {\n border-bottom: none;\n}\n\n.entity-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc {\n font-size: 12px;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow {\n color: var(--mj-text-disabled);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n/* Records */\n.records-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option:last-child {\n border-bottom: none;\n}\n\n.record-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.record-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected .record-checkbox {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n/* Details step */\n.details-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.summary-item i {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-textarea {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.details-footer {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n/* Buttons */\n.btn-primary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-secondary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Creating state */\n.creating-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation {\n margin-bottom: 16px;\n}\n\n.creating-icon {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.creating-progress {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n/* Progress bar */\n.progress-container {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track {\n width: 100%;\n height: 8px;\n background: var(--mj-border-default);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.progress-stat i {\n font-size: 11px;\n}\n\n/* Done state */\n.done-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.done-message {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0 0 20px 0;\n}\n\n.error-text {\n color: var(--mj-status-error);\n}\n"] }]
|
|
788
785
|
}], () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], { PreselectedEntity: [{
|
|
789
786
|
type: Input
|
|
790
787
|
}], PreselectedRecordIds: [{
|