@memberjunction/ng-core-entity-forms 5.27.1 → 5.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/lib/custom/Queries/query-form.component.d.ts +11 -1
  2. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  3. package/dist/lib/custom/Queries/query-form.component.js +669 -414
  4. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  5. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  6. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +151 -157
  7. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  8. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.d.ts +10 -0
  9. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.d.ts.map +1 -0
  10. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js +123 -0
  11. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js.map +1 -0
  12. package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.d.ts +10 -0
  13. package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.d.ts.map +1 -0
  14. package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.js +87 -0
  15. package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.js.map +1 -0
  16. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.d.ts +10 -0
  17. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.d.ts.map +1 -0
  18. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js +109 -0
  19. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js.map +1 -0
  20. package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.d.ts +10 -0
  21. package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.d.ts.map +1 -0
  22. package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js +83 -0
  23. package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js.map +1 -0
  24. package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js +39 -37
  25. package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js.map +1 -1
  26. package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js +10 -10
  27. package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js.map +1 -1
  28. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  29. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +104 -68
  30. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  31. package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.d.ts.map +1 -1
  32. package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js +35 -17
  33. package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js.map +1 -1
  34. package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.d.ts.map +1 -1
  35. package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js +24 -6
  36. package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js.map +1 -1
  37. package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.d.ts +10 -0
  38. package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.d.ts.map +1 -0
  39. package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.js +55 -0
  40. package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.js.map +1 -0
  41. package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.d.ts.map +1 -1
  42. package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js +40 -10
  43. package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js.map +1 -1
  44. package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js +30 -30
  45. package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js.map +1 -1
  46. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  47. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +235 -181
  48. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  49. package/dist/lib/generated/generated-forms.module.d.ts +251 -246
  50. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  51. package/dist/lib/generated/generated-forms.module.js +147 -132
  52. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  53. package/package.json +34 -34
@@ -20,23 +20,31 @@ import * as i4 from "@memberjunction/ng-base-forms";
20
20
  import * as i5 from "@memberjunction/ng-code-editor";
21
21
  import * as i6 from "@memberjunction/ng-shared-generic";
22
22
  import * as i7 from "@memberjunction/ng-markdown";
23
- import * as i8 from "./query-run-dialog.component";
24
- import * as i9 from "./query-category-dialog.component";
23
+ import * as i8 from "@memberjunction/ng-trees";
24
+ import * as i9 from "./query-run-dialog.component";
25
+ import * as i10 from "./query-category-dialog.component";
25
26
  const _c0 = ["sqlEditor"];
26
27
  const _forTrack0 = ($index, $item) => $item.name;
27
28
  const _forTrack1 = ($index, $item) => $item.ID || $index;
28
29
  const _forTrack2 = ($index, $item) => $item.ID;
29
- function MJQueryFormComponentExtended_Conditional_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
30
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelementStart(0, "div", 5);
32
+ i0.ɵɵelement(1, "i", 49);
33
+ i0.ɵɵelementStart(2, "span");
34
+ i0.ɵɵtext(3, "Saving...");
35
+ i0.ɵɵelementEnd()();
36
+ } }
37
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
30
38
  const _r2 = i0.ɵɵgetCurrentView();
31
- i0.ɵɵelementStart(0, "input", 45);
32
- i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_8_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Name, $event) || (ctx_r2.record.Name = $event); return i0.ɵɵresetView($event); });
39
+ i0.ɵɵelementStart(0, "input", 50);
40
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Name, $event) || (ctx_r2.record.Name = $event); return i0.ɵɵresetView($event); });
33
41
  i0.ɵɵelementEnd();
34
42
  } if (rf & 2) {
35
43
  const ctx_r2 = i0.ɵɵnextContext(2);
36
44
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Name);
37
45
  } }
38
- function MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "h4", 11);
46
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
47
+ i0.ɵɵelementStart(0, "h4", 12);
40
48
  i0.ɵɵtext(1);
41
49
  i0.ɵɵelementEnd();
42
50
  } if (rf & 2) {
@@ -44,29 +52,28 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template(rf, c
44
52
  i0.ɵɵadvance();
45
53
  i0.ɵɵtextInterpolate(ctx_r2.record.Name || "Untitled Query");
46
54
  } }
47
- function MJQueryFormComponentExtended_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
55
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_12_Template(rf, ctx) { if (rf & 1) {
48
56
  const _r4 = i0.ɵɵgetCurrentView();
49
- i0.ɵɵelementStart(0, "button", 46);
50
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.runQuery()); });
51
- i0.ɵɵelement(1, "i", 47);
57
+ i0.ɵɵelementStart(0, "button", 51);
58
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.runQuery()); });
59
+ i0.ɵɵelement(1, "i", 52);
52
60
  i0.ɵɵtext(2, " Run ");
53
61
  i0.ɵɵelementEnd();
54
62
  } if (rf & 2) {
55
63
  const ctx_r2 = i0.ɵɵnextContext(2);
56
64
  i0.ɵɵproperty("disabled", ctx_r2.EditMode || !ctx_r2.record.SQL || ctx_r2.record.SQL.trim().length === 0);
57
65
  } }
58
- function MJQueryFormComponentExtended_Conditional_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
66
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template(rf, ctx) { if (rf & 1) {
59
67
  const _r5 = i0.ɵɵgetCurrentView();
60
- i0.ɵɵelementStart(0, "mj-dropdown", 48);
61
- i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_16_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.CategoryID, $event) || (ctx_r2.record.CategoryID = $event); return i0.ɵɵresetView($event); });
68
+ i0.ɵɵelementStart(0, "mj-tree-dropdown", 53);
69
+ i0.ɵɵlistener("ValueChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template_mj_tree_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnCategoryTreeChange($event)); });
62
70
  i0.ɵɵelementEnd();
63
71
  } if (rf & 2) {
64
72
  const ctx_r2 = i0.ɵɵnextContext(2);
65
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.CategoryID);
66
- i0.ɵɵproperty("Data", ctx_r2.categoryOptions)("ValuePrimitive", true);
73
+ i0.ɵɵproperty("BranchConfig", ctx_r2.CategoryBranchConfig)("Value", ctx_r2.CategoryIDAsKey)("SelectableTypes", "branch")("SelectionMode", "single")("Placeholder", "Select category...")("EnableSearch", true)("Clearable", true);
67
74
  } }
68
- function MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelementStart(0, "span", 18);
75
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
76
+ i0.ɵɵelementStart(0, "span", 19);
70
77
  i0.ɵɵtext(1);
71
78
  i0.ɵɵelementEnd();
72
79
  } if (rf & 2) {
@@ -74,19 +81,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template(rf,
74
81
  i0.ɵɵadvance();
75
82
  i0.ɵɵtextInterpolate(ctx_r2.categoryPathDisplay || "Uncategorized");
76
83
  } }
77
- function MJQueryFormComponentExtended_Conditional_1_Conditional_21_Template(rf, ctx) { if (rf & 1) {
84
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template(rf, ctx) { if (rf & 1) {
78
85
  const _r6 = i0.ɵɵgetCurrentView();
79
- i0.ɵɵelementStart(0, "mj-dropdown", 49);
80
- i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_21_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Status, $event) || (ctx_r2.record.Status = $event); return i0.ɵɵresetView($event); });
86
+ i0.ɵɵelementStart(0, "mj-dropdown", 54);
87
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Status, $event) || (ctx_r2.record.Status = $event); return i0.ɵɵresetView($event); });
81
88
  i0.ɵɵelementEnd();
82
89
  } if (rf & 2) {
83
90
  const ctx_r2 = i0.ɵɵnextContext(2);
84
91
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Status);
85
92
  i0.ɵɵproperty("Data", ctx_r2.statusOptions)("ValuePrimitive", true);
86
93
  } }
87
- function MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template(rf, ctx) { if (rf & 1) {
88
- i0.ɵɵelementStart(0, "span", 50);
89
- i0.ɵɵelement(1, "i", 51);
94
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
95
+ i0.ɵɵelementStart(0, "span", 55);
96
+ i0.ɵɵelement(1, "i", 56);
90
97
  i0.ɵɵtext(2);
91
98
  i0.ɵɵelementEnd();
92
99
  } if (rf & 2) {
@@ -97,18 +104,18 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template(rf,
97
104
  i0.ɵɵadvance();
98
105
  i0.ɵɵtextInterpolate1(" ", ctx_r2.record.Status || "Unknown", " ");
99
106
  } }
100
- function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_1_Template(rf, ctx) { if (rf & 1) {
107
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
101
108
  const _r7 = i0.ɵɵgetCurrentView();
102
- i0.ɵɵelementStart(0, "textarea", 54);
103
- i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_1_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Description, $event) || (ctx_r2.record.Description = $event); return i0.ɵɵresetView($event); });
109
+ i0.ɵɵelementStart(0, "textarea", 59);
110
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_1_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Description, $event) || (ctx_r2.record.Description = $event); return i0.ɵɵresetView($event); });
104
111
  i0.ɵɵtext(1, " ");
105
112
  i0.ɵɵelementEnd();
106
113
  } if (rf & 2) {
107
114
  const ctx_r2 = i0.ɵɵnextContext(3);
108
115
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Description);
109
116
  } }
110
- function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_2_Template(rf, ctx) { if (rf & 1) {
111
- i0.ɵɵelementStart(0, "p", 53);
117
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
118
+ i0.ɵɵelementStart(0, "p", 58);
112
119
  i0.ɵɵtext(1);
113
120
  i0.ɵɵelementEnd();
114
121
  } if (rf & 2) {
@@ -116,18 +123,18 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_2
116
123
  i0.ɵɵadvance();
117
124
  i0.ɵɵtextInterpolate(ctx_r2.record.Description);
118
125
  } }
119
- function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
120
- i0.ɵɵelementStart(0, "div", 21);
121
- i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_1_Template, 2, 1, "textarea", 52)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_2_Template, 2, 1, "p", 53);
126
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template(rf, ctx) { if (rf & 1) {
127
+ i0.ɵɵelementStart(0, "div", 22);
128
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_1_Template, 2, 1, "textarea", 57)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_2_Template, 2, 1, "p", 58);
122
129
  i0.ɵɵelementEnd();
123
130
  } if (rf & 2) {
124
131
  const ctx_r2 = i0.ɵɵnextContext(2);
125
132
  i0.ɵɵadvance();
126
133
  i0.ɵɵconditional(ctx_r2.EditMode ? 1 : 2);
127
134
  } }
128
- function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template(rf, ctx) { if (rf & 1) {
129
- i0.ɵɵelementStart(0, "div", 55);
130
- i0.ɵɵelement(1, "i", 51);
135
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_25_Template(rf, ctx) { if (rf & 1) {
136
+ i0.ɵɵelementStart(0, "div", 60);
137
+ i0.ɵɵelement(1, "i", 56);
131
138
  i0.ɵɵelementStart(2, "span");
132
139
  i0.ɵɵtext(3, " This query has status ");
133
140
  i0.ɵɵelementStart(4, "strong");
@@ -146,24 +153,24 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template(rf,
146
153
  i0.ɵɵadvance();
147
154
  i0.ɵɵtextInterpolate1(". ", ctx_r2.getStatusBannerMessage(), " ");
148
155
  } }
149
- function MJQueryFormComponentExtended_Conditional_1_ng_template_27_Conditional_4_Template(rf, ctx) { if (rf & 1) {
150
- i0.ɵɵelementStart(0, "span", 59);
156
+ function MJQueryFormComponentExtended_Conditional_1_ng_template_28_Conditional_4_Template(rf, ctx) { if (rf & 1) {
157
+ i0.ɵɵelementStart(0, "span", 64);
151
158
  i0.ɵɵtext(1, "\u2014 Defined");
152
159
  i0.ɵɵelementEnd();
153
160
  } }
154
- function MJQueryFormComponentExtended_Conditional_1_ng_template_27_Template(rf, ctx) { if (rf & 1) {
155
- i0.ɵɵelementStart(0, "span", 56)(1, "span", 57);
156
- i0.ɵɵelement(2, "i", 58);
161
+ function MJQueryFormComponentExtended_Conditional_1_ng_template_28_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵelementStart(0, "span", 61)(1, "span", 62);
163
+ i0.ɵɵelement(2, "i", 63);
157
164
  i0.ɵɵtext(3, " SQL ");
158
- i0.ɵɵconditionalCreate(4, MJQueryFormComponentExtended_Conditional_1_ng_template_27_Conditional_4_Template, 2, 0, "span", 59);
165
+ i0.ɵɵconditionalCreate(4, MJQueryFormComponentExtended_Conditional_1_ng_template_28_Conditional_4_Template, 2, 0, "span", 64);
159
166
  i0.ɵɵelementEnd()();
160
167
  } if (rf & 2) {
161
168
  const ctx_r2 = i0.ɵɵnextContext(2);
162
169
  i0.ɵɵadvance(4);
163
170
  i0.ɵɵconditional(ctx_r2.record.SQL ? 4 : -1);
164
171
  } }
165
- function MJQueryFormComponentExtended_Conditional_1_Conditional_37_For_6_Conditional_7_Template(rf, ctx) { if (rf & 1) {
166
- i0.ɵɵelementStart(0, "div", 67);
172
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_38_For_6_Conditional_7_Template(rf, ctx) { if (rf & 1) {
173
+ i0.ɵɵelementStart(0, "div", 72);
167
174
  i0.ɵɵtext(1);
168
175
  i0.ɵɵelementEnd();
169
176
  } if (rf & 2) {
@@ -171,17 +178,17 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_37_For_6_Conditi
171
178
  i0.ɵɵadvance();
172
179
  i0.ɵɵtextInterpolate(filter_r8.notes);
173
180
  } }
174
- function MJQueryFormComponentExtended_Conditional_1_Conditional_37_For_6_Template(rf, ctx) { if (rf & 1) {
175
- i0.ɵɵelementStart(0, "div", 63)(1, "div", 64);
181
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_38_For_6_Template(rf, ctx) { if (rf & 1) {
182
+ i0.ɵɵelementStart(0, "div", 68)(1, "div", 69);
176
183
  i0.ɵɵtext(2);
177
184
  i0.ɵɵelementEnd();
178
- i0.ɵɵelementStart(3, "div", 65);
185
+ i0.ɵɵelementStart(3, "div", 70);
179
186
  i0.ɵɵtext(4);
180
187
  i0.ɵɵelementEnd();
181
- i0.ɵɵelementStart(5, "div", 66);
188
+ i0.ɵɵelementStart(5, "div", 71);
182
189
  i0.ɵɵtext(6);
183
190
  i0.ɵɵelementEnd();
184
- i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_37_For_6_Conditional_7_Template, 2, 1, "div", 67);
191
+ i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_38_For_6_Conditional_7_Template, 2, 1, "div", 72);
185
192
  i0.ɵɵelementEnd();
186
193
  } if (rf & 2) {
187
194
  const filter_r8 = ctx.$implicit;
@@ -194,76 +201,76 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_37_For_6_Templat
194
201
  i0.ɵɵadvance();
195
202
  i0.ɵɵconditional(filter_r8.notes ? 7 : -1);
196
203
  } }
197
- function MJQueryFormComponentExtended_Conditional_1_Conditional_37_Template(rf, ctx) { if (rf & 1) {
198
- i0.ɵɵelementStart(0, "div", 32)(1, "h6", 60);
199
- i0.ɵɵelement(2, "i", 61);
204
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_38_Template(rf, ctx) { if (rf & 1) {
205
+ i0.ɵɵelementStart(0, "div", 33)(1, "h6", 65);
206
+ i0.ɵɵelement(2, "i", 66);
200
207
  i0.ɵɵtext(3, " Available SQL Filters for Parameterized Queries ");
201
208
  i0.ɵɵelementEnd();
202
- i0.ɵɵelementStart(4, "div", 62);
203
- i0.ɵɵrepeaterCreate(5, MJQueryFormComponentExtended_Conditional_1_Conditional_37_For_6_Template, 8, 4, "div", 63, _forTrack0);
209
+ i0.ɵɵelementStart(4, "div", 67);
210
+ i0.ɵɵrepeaterCreate(5, MJQueryFormComponentExtended_Conditional_1_Conditional_38_For_6_Template, 8, 4, "div", 68, _forTrack0);
204
211
  i0.ɵɵelementEnd()();
205
212
  } if (rf & 2) {
206
213
  const ctx_r2 = i0.ɵɵnextContext(2);
207
214
  i0.ɵɵadvance(5);
208
215
  i0.ɵɵrepeater(ctx_r2.sqlFilters);
209
216
  } }
210
- function MJQueryFormComponentExtended_Conditional_1_Conditional_38_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
211
- i0.ɵɵelementStart(0, "span", 59);
217
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
218
+ i0.ɵɵelementStart(0, "span", 64);
212
219
  i0.ɵɵtext(1, "\u2014 Documented");
213
220
  i0.ɵɵelementEnd();
214
221
  } }
215
- function MJQueryFormComponentExtended_Conditional_1_Conditional_38_ng_template_1_Template(rf, ctx) { if (rf & 1) {
216
- i0.ɵɵelementStart(0, "span", 57);
217
- i0.ɵɵelement(1, "i", 69);
222
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Template(rf, ctx) { if (rf & 1) {
223
+ i0.ɵɵelementStart(0, "span", 62);
224
+ i0.ɵɵelement(1, "i", 74);
218
225
  i0.ɵɵtext(2, " Technical Description ");
219
- i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_38_ng_template_1_Conditional_3_Template, 2, 0, "span", 59);
226
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Conditional_3_Template, 2, 0, "span", 64);
220
227
  i0.ɵɵelementEnd();
221
228
  } if (rf & 2) {
222
229
  const ctx_r2 = i0.ɵɵnextContext(3);
223
230
  i0.ɵɵadvance(3);
224
231
  i0.ɵɵconditional(ctx_r2.record.TechnicalDescription ? 3 : -1);
225
232
  } }
226
- function MJQueryFormComponentExtended_Conditional_1_Conditional_38_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "div", 71)(1, "div", 72);
228
- i0.ɵɵelement(2, "i", 73);
233
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
234
+ i0.ɵɵelementStart(0, "div", 76)(1, "div", 77);
235
+ i0.ɵɵelement(2, "i", 78);
229
236
  i0.ɵɵtext(3, " Preview ");
230
237
  i0.ɵɵelementEnd();
231
- i0.ɵɵelement(4, "mj-markdown", 74);
238
+ i0.ɵɵelement(4, "mj-markdown", 79);
232
239
  i0.ɵɵelementEnd();
233
240
  } if (rf & 2) {
234
241
  const ctx_r2 = i0.ɵɵnextContext(4);
235
242
  i0.ɵɵadvance(4);
236
243
  i0.ɵɵproperty("data", ctx_r2.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
237
244
  } }
238
- function MJQueryFormComponentExtended_Conditional_1_Conditional_38_Conditional_3_Template(rf, ctx) { if (rf & 1) {
245
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
239
246
  const _r10 = i0.ɵɵgetCurrentView();
240
- i0.ɵɵelementStart(0, "textarea", 70);
241
- i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_38_Conditional_3_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.record.TechnicalDescription, $event) || (ctx_r2.record.TechnicalDescription = $event); return i0.ɵɵresetView($event); });
247
+ i0.ɵɵelementStart(0, "textarea", 75);
248
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.record.TechnicalDescription, $event) || (ctx_r2.record.TechnicalDescription = $event); return i0.ɵɵresetView($event); });
242
249
  i0.ɵɵtext(1, " ");
243
250
  i0.ɵɵelementEnd();
244
- i0.ɵɵconditionalCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_38_Conditional_3_Conditional_2_Template, 5, 5, "div", 71);
251
+ i0.ɵɵconditionalCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Conditional_2_Template, 5, 5, "div", 76);
245
252
  } if (rf & 2) {
246
253
  const ctx_r2 = i0.ɵɵnextContext(3);
247
254
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.TechnicalDescription);
248
255
  i0.ɵɵadvance(2);
249
256
  i0.ɵɵconditional(ctx_r2.record.TechnicalDescription ? 2 : -1);
250
257
  } }
251
- function MJQueryFormComponentExtended_Conditional_1_Conditional_38_Conditional_4_Template(rf, ctx) { if (rf & 1) {
252
- i0.ɵɵelementStart(0, "div", 68);
253
- i0.ɵɵelement(1, "mj-markdown", 74);
258
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Template(rf, ctx) { if (rf & 1) {
259
+ i0.ɵɵelementStart(0, "div", 73);
260
+ i0.ɵɵelement(1, "mj-markdown", 79);
254
261
  i0.ɵɵelementEnd();
255
262
  } if (rf & 2) {
256
263
  const ctx_r2 = i0.ɵɵnextContext(3);
257
264
  i0.ɵɵadvance();
258
265
  i0.ɵɵproperty("data", ctx_r2.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
259
266
  } }
260
- function MJQueryFormComponentExtended_Conditional_1_Conditional_38_Template(rf, ctx) { if (rf & 1) {
267
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template(rf, ctx) { if (rf & 1) {
261
268
  const _r9 = i0.ɵɵgetCurrentView();
262
- i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
263
- i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_38_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.technicalDescriptionPanelExpanded, $event) || (ctx_r2.technicalDescriptionPanelExpanded = $event); return i0.ɵɵresetView($event); });
264
- i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_38_ng_template_1_Template, 4, 1, "ng-template", 25);
265
- i0.ɵɵelementStart(2, "div", 34);
266
- i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_38_Conditional_3_Template, 3, 2)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_38_Conditional_4_Template, 2, 5, "div", 68);
269
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
270
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.technicalDescriptionPanelExpanded, $event) || (ctx_r2.technicalDescriptionPanelExpanded = $event); return i0.ɵɵresetView($event); });
271
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Template, 4, 1, "ng-template", 26);
272
+ i0.ɵɵelementStart(2, "div", 35);
273
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Template, 3, 2)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Template, 2, 5, "div", 73);
267
274
  i0.ɵɵelementEnd()();
268
275
  } if (rf & 2) {
269
276
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -271,8 +278,8 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_38_Template(rf,
271
278
  i0.ɵɵadvance(3);
272
279
  i0.ɵɵconditional(ctx_r2.EditMode ? 3 : 4);
273
280
  } }
274
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
275
- i0.ɵɵelementStart(0, "span", 77);
281
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
282
+ i0.ɵɵelementStart(0, "span", 82);
276
283
  i0.ɵɵtext(1);
277
284
  i0.ɵɵelementEnd();
278
285
  } if (rf & 2) {
@@ -280,61 +287,61 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1
280
287
  i0.ɵɵadvance();
281
288
  i0.ɵɵtextInterpolate(ctx_r2.queryParameters.length);
282
289
  } }
283
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Template(rf, ctx) { if (rf & 1) {
284
- i0.ɵɵelementStart(0, "span", 57);
285
- i0.ɵɵelement(1, "i", 76);
290
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Template(rf, ctx) { if (rf & 1) {
291
+ i0.ɵɵelementStart(0, "span", 62);
292
+ i0.ɵɵelement(1, "i", 81);
286
293
  i0.ɵɵtext(2, " Parameters ");
287
- i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Conditional_3_Template, 2, 1, "span", 77);
294
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Conditional_3_Template, 2, 1, "span", 82);
288
295
  i0.ɵɵelementEnd();
289
296
  } if (rf & 2) {
290
297
  const ctx_r2 = i0.ɵɵnextContext(3);
291
298
  i0.ɵɵadvance(3);
292
299
  i0.ɵɵconditional(ctx_r2.queryParameters.length > 0 ? 3 : -1);
293
300
  } }
294
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
295
- i0.ɵɵelementStart(0, "div", 75);
296
- i0.ɵɵelement(1, "mj-loading", 78);
301
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_3_Template(rf, ctx) { if (rf & 1) {
302
+ i0.ɵɵelementStart(0, "div", 80);
303
+ i0.ɵɵelement(1, "mj-loading", 83);
297
304
  i0.ɵɵelementEnd();
298
305
  } }
299
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
306
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
300
307
  const _r12 = i0.ɵɵgetCurrentView();
301
- i0.ɵɵelementStart(0, "button", 84);
302
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addParameter()); });
303
- i0.ɵɵelement(1, "i", 85);
308
+ i0.ɵɵelementStart(0, "button", 89);
309
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addParameter()); });
310
+ i0.ɵɵelement(1, "i", 90);
304
311
  i0.ɵɵtext(2, " Add First Parameter ");
305
312
  i0.ɵɵelementEnd();
306
313
  } }
307
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
308
- i0.ɵɵelementStart(0, "div", 79);
309
- i0.ɵɵelement(1, "i", 80);
310
- i0.ɵɵelementStart(2, "div", 81);
314
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
315
+ i0.ɵɵelementStart(0, "div", 84);
316
+ i0.ɵɵelement(1, "i", 85);
317
+ i0.ɵɵelementStart(2, "div", 86);
311
318
  i0.ɵɵtext(3, "No Parameters Defined");
312
319
  i0.ɵɵelementEnd();
313
- i0.ɵɵelementStart(4, "div", 82);
320
+ i0.ɵɵelementStart(4, "div", 87);
314
321
  i0.ɵɵtext(5, " Add parameters to make your query dynamic and reusable. ");
315
322
  i0.ɵɵelementEnd();
316
- i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 83);
323
+ i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 88);
317
324
  i0.ɵɵelementEnd();
318
325
  } if (rf & 2) {
319
326
  const ctx_r2 = i0.ɵɵnextContext(4);
320
327
  i0.ɵɵadvance(6);
321
328
  i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
322
329
  } }
323
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
330
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
324
331
  const _r13 = i0.ɵɵgetCurrentView();
325
- i0.ɵɵelementStart(0, "div", 86)(1, "button", 84);
326
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addParameter()); });
327
- i0.ɵɵelement(2, "i", 85);
332
+ i0.ɵɵelementStart(0, "div", 91)(1, "button", 89);
333
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addParameter()); });
334
+ i0.ɵɵelement(2, "i", 90);
328
335
  i0.ɵɵtext(3, " Add Parameter ");
329
336
  i0.ɵɵelementEnd()();
330
337
  } }
331
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
332
- i0.ɵɵelementStart(0, "span", 94);
338
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
339
+ i0.ɵɵelementStart(0, "span", 99);
333
340
  i0.ɵɵtext(1, "Required");
334
341
  i0.ɵɵelementEnd();
335
342
  } }
336
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
337
- i0.ɵɵelementStart(0, "div", 96);
343
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
344
+ i0.ɵɵelementStart(0, "div", 101);
338
345
  i0.ɵɵtext(1);
339
346
  i0.ɵɵelementEnd();
340
347
  } if (rf & 2) {
@@ -342,11 +349,11 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
342
349
  i0.ɵɵadvance();
343
350
  i0.ɵɵtextInterpolate(param_r15.Description);
344
351
  } }
345
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
346
- i0.ɵɵelementStart(0, "span", 98)(1, "strong");
352
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
353
+ i0.ɵɵelementStart(0, "span", 103)(1, "strong");
347
354
  i0.ɵɵtext(2, "Default:");
348
355
  i0.ɵɵelementEnd();
349
- i0.ɵɵelementStart(3, "code", 100);
356
+ i0.ɵɵelementStart(3, "code", 105);
350
357
  i0.ɵɵtext(4);
351
358
  i0.ɵɵelementEnd()();
352
359
  } if (rf & 2) {
@@ -354,40 +361,40 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
354
361
  i0.ɵɵadvance(4);
355
362
  i0.ɵɵtextInterpolate(param_r15.DefaultValue);
356
363
  } }
357
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
364
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
358
365
  const _r16 = i0.ɵɵgetCurrentView();
359
- i0.ɵɵelementStart(0, "div", 101);
360
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_15_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r16); return i0.ɵɵresetView($event.stopPropagation()); });
361
- i0.ɵɵelementStart(1, "button", 102);
362
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r16); const param_r15 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.editParameter(param_r15)); });
363
- i0.ɵɵelement(2, "i", 103);
364
- i0.ɵɵelementEnd();
365
- i0.ɵɵelementStart(3, "button", 104);
366
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const param_r15 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteParameter(param_r15)); });
367
- i0.ɵɵelement(4, "i", 105);
366
+ i0.ɵɵelementStart(0, "div", 106);
367
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r16); return i0.ɵɵresetView($event.stopPropagation()); });
368
+ i0.ɵɵelementStart(1, "button", 107);
369
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r16); const param_r15 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.editParameter(param_r15)); });
370
+ i0.ɵɵelement(2, "i", 108);
371
+ i0.ɵɵelementEnd();
372
+ i0.ɵɵelementStart(3, "button", 109);
373
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const param_r15 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteParameter(param_r15)); });
374
+ i0.ɵɵelement(4, "i", 110);
368
375
  i0.ɵɵelementEnd()();
369
376
  } }
370
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
377
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
371
378
  const _r14 = i0.ɵɵgetCurrentView();
372
- i0.ɵɵelementStart(0, "div", 89);
373
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Template_div_click_0_listener() { const param_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.editParameter(param_r15)); });
374
- i0.ɵɵelementStart(1, "div", 90)(2, "div", 91);
375
- i0.ɵɵelement(3, "i", 92);
379
+ i0.ɵɵelementStart(0, "div", 94);
380
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Template_div_click_0_listener() { const param_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.editParameter(param_r15)); });
381
+ i0.ɵɵelementStart(1, "div", 95)(2, "div", 96);
382
+ i0.ɵɵelement(3, "i", 97);
376
383
  i0.ɵɵtext(4);
377
384
  i0.ɵɵelementEnd();
378
- i0.ɵɵelementStart(5, "div", 93);
379
- i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 2, 0, "span", 94);
385
+ i0.ɵɵelementStart(5, "div", 98);
386
+ i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 2, 0, "span", 99);
380
387
  i0.ɵɵelementEnd()();
381
- i0.ɵɵelementStart(7, "div", 95);
382
- i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "div", 96);
383
- i0.ɵɵelementStart(9, "div", 97)(10, "span", 98)(11, "strong");
388
+ i0.ɵɵelementStart(7, "div", 100);
389
+ i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "div", 101);
390
+ i0.ɵɵelementStart(9, "div", 102)(10, "span", 103)(11, "strong");
384
391
  i0.ɵɵtext(12, "Type:");
385
392
  i0.ɵɵelementEnd();
386
393
  i0.ɵɵtext(13);
387
394
  i0.ɵɵelementEnd();
388
- i0.ɵɵconditionalCreate(14, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_14_Template, 5, 1, "span", 98);
395
+ i0.ɵɵconditionalCreate(14, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_14_Template, 5, 1, "span", 103);
389
396
  i0.ɵɵelementEnd()();
390
- i0.ɵɵconditionalCreate(15, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 5, 0, "div", 99);
397
+ i0.ɵɵconditionalCreate(15, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 5, 0, "div", 104);
391
398
  i0.ɵɵelementEnd();
392
399
  } if (rf & 2) {
393
400
  const param_r15 = ctx.$implicit;
@@ -406,10 +413,10 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
406
413
  i0.ɵɵadvance();
407
414
  i0.ɵɵconditional(ctx_r2.EditMode ? 15 : -1);
408
415
  } }
409
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
410
- i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 86);
411
- i0.ɵɵelementStart(1, "div", 87);
412
- i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_For_3_Template, 16, 8, "div", 88, _forTrack1);
416
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
417
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 91);
418
+ i0.ɵɵelementStart(1, "div", 92);
419
+ i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Template, 16, 8, "div", 93, _forTrack1);
413
420
  i0.ɵɵelementEnd();
414
421
  } if (rf & 2) {
415
422
  const ctx_r2 = i0.ɵɵnextContext(4);
@@ -417,19 +424,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
417
424
  i0.ɵɵadvance(2);
418
425
  i0.ɵɵrepeater(ctx_r2.queryParameters);
419
426
  } }
420
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Template(rf, ctx) { if (rf & 1) {
421
- i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_0_Template, 7, 1, "div", 79)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Conditional_1_Template, 4, 1);
427
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Template(rf, ctx) { if (rf & 1) {
428
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Template, 7, 1, "div", 84)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Template, 4, 1);
422
429
  } if (rf & 2) {
423
430
  const ctx_r2 = i0.ɵɵnextContext(3);
424
431
  i0.ɵɵconditional(ctx_r2.queryParameters.length === 0 ? 0 : 1);
425
432
  } }
426
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template(rf, ctx) { if (rf & 1) {
433
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template(rf, ctx) { if (rf & 1) {
427
434
  const _r11 = i0.ɵɵgetCurrentView();
428
- i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
429
- i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.parametersPanelExpanded, $event) || (ctx_r2.parametersPanelExpanded = $event); return i0.ɵɵresetView($event); });
430
- i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Template, 4, 1, "ng-template", 25);
431
- i0.ɵɵelementStart(2, "div", 34);
432
- i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Template, 2, 0, "div", 75)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Template, 2, 1);
435
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
436
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.parametersPanelExpanded, $event) || (ctx_r2.parametersPanelExpanded = $event); return i0.ɵɵresetView($event); });
437
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Template, 4, 1, "ng-template", 26);
438
+ i0.ɵɵelementStart(2, "div", 35);
439
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_3_Template, 2, 0, "div", 80)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Template, 2, 1);
433
440
  i0.ɵɵelementEnd()();
434
441
  } if (rf & 2) {
435
442
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -437,8 +444,8 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template(rf,
437
444
  i0.ɵɵadvance(3);
438
445
  i0.ɵɵconditional(ctx_r2.isLoadingParameters ? 3 : 4);
439
446
  } }
440
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
441
- i0.ɵɵelementStart(0, "span", 77);
447
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
448
+ i0.ɵɵelementStart(0, "span", 82);
442
449
  i0.ɵɵtext(1);
443
450
  i0.ɵɵelementEnd();
444
451
  } if (rf & 2) {
@@ -446,56 +453,56 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1
446
453
  i0.ɵɵadvance();
447
454
  i0.ɵɵtextInterpolate(ctx_r2.queryFields.length);
448
455
  } }
449
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Template(rf, ctx) { if (rf & 1) {
450
- i0.ɵɵelementStart(0, "span", 57);
451
- i0.ɵɵelement(1, "i", 106);
456
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1_Template(rf, ctx) { if (rf & 1) {
457
+ i0.ɵɵelementStart(0, "span", 62);
458
+ i0.ɵɵelement(1, "i", 111);
452
459
  i0.ɵɵtext(2, " Fields ");
453
- i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Conditional_3_Template, 2, 1, "span", 77);
460
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1_Conditional_3_Template, 2, 1, "span", 82);
454
461
  i0.ɵɵelementEnd();
455
462
  } if (rf & 2) {
456
463
  const ctx_r2 = i0.ɵɵnextContext(3);
457
464
  i0.ɵɵadvance(3);
458
465
  i0.ɵɵconditional(ctx_r2.queryFields.length > 0 ? 3 : -1);
459
466
  } }
460
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_3_Template(rf, ctx) { if (rf & 1) {
461
- i0.ɵɵelementStart(0, "div", 75);
462
- i0.ɵɵelement(1, "mj-loading", 107);
467
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_3_Template(rf, ctx) { if (rf & 1) {
468
+ i0.ɵɵelementStart(0, "div", 80);
469
+ i0.ɵɵelement(1, "mj-loading", 112);
463
470
  i0.ɵɵelementEnd();
464
471
  } }
465
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
472
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
466
473
  const _r18 = i0.ɵɵgetCurrentView();
467
- i0.ɵɵelementStart(0, "button", 84);
468
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addField()); });
469
- i0.ɵɵelement(1, "i", 85);
474
+ i0.ɵɵelementStart(0, "button", 89);
475
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addField()); });
476
+ i0.ɵɵelement(1, "i", 90);
470
477
  i0.ɵɵtext(2, " Add First Field ");
471
478
  i0.ɵɵelementEnd();
472
479
  } }
473
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
474
- i0.ɵɵelementStart(0, "div", 79);
475
- i0.ɵɵelement(1, "i", 108);
476
- i0.ɵɵelementStart(2, "div", 81);
480
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
481
+ i0.ɵɵelementStart(0, "div", 84);
482
+ i0.ɵɵelement(1, "i", 113);
483
+ i0.ɵɵelementStart(2, "div", 86);
477
484
  i0.ɵɵtext(3, "No Fields Defined");
478
485
  i0.ɵɵelementEnd();
479
- i0.ɵɵelementStart(4, "div", 82);
486
+ i0.ɵɵelementStart(4, "div", 87);
480
487
  i0.ɵɵtext(5, " Define output fields for your query results. ");
481
488
  i0.ɵɵelementEnd();
482
- i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 83);
489
+ i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 88);
483
490
  i0.ɵɵelementEnd();
484
491
  } if (rf & 2) {
485
492
  const ctx_r2 = i0.ɵɵnextContext(4);
486
493
  i0.ɵɵadvance(6);
487
494
  i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
488
495
  } }
489
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
496
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
490
497
  const _r19 = i0.ɵɵgetCurrentView();
491
- i0.ɵɵelementStart(0, "div", 86)(1, "button", 84);
492
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addField()); });
493
- i0.ɵɵelement(2, "i", 85);
498
+ i0.ɵɵelementStart(0, "div", 91)(1, "button", 89);
499
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addField()); });
500
+ i0.ɵɵelement(2, "i", 90);
494
501
  i0.ɵɵtext(3, " Add Field ");
495
502
  i0.ɵɵelementEnd()();
496
503
  } }
497
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
498
- i0.ɵɵelementStart(0, "span", 112);
504
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
505
+ i0.ɵɵelementStart(0, "span", 117);
499
506
  i0.ɵɵtext(1);
500
507
  i0.ɵɵelementEnd();
501
508
  } if (rf & 2) {
@@ -503,8 +510,8 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
503
510
  i0.ɵɵadvance();
504
511
  i0.ɵɵtextInterpolate1("#", field_r20.Sequence);
505
512
  } }
506
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
507
- i0.ɵɵelementStart(0, "div", 96);
513
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
514
+ i0.ɵɵelementStart(0, "div", 101);
508
515
  i0.ɵɵtext(1);
509
516
  i0.ɵɵelementEnd();
510
517
  } if (rf & 2) {
@@ -512,30 +519,30 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
512
519
  i0.ɵɵadvance();
513
520
  i0.ɵɵtextInterpolate(field_r20.Description);
514
521
  } }
515
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
522
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
516
523
  const _r21 = i0.ɵɵgetCurrentView();
517
- i0.ɵɵelementStart(0, "div", 114)(1, "button", 115);
518
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r21); const field_r20 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteField(field_r20)); });
519
- i0.ɵɵelement(2, "i", 105);
524
+ i0.ɵɵelementStart(0, "div", 119)(1, "button", 120);
525
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r21); const field_r20 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteField(field_r20)); });
526
+ i0.ɵɵelement(2, "i", 110);
520
527
  i0.ɵɵelementEnd()();
521
528
  } }
522
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
523
- i0.ɵɵelementStart(0, "div", 109)(1, "div", 90)(2, "div", 91);
524
- i0.ɵɵelement(3, "i", 110);
529
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
530
+ i0.ɵɵelementStart(0, "div", 114)(1, "div", 95)(2, "div", 96);
531
+ i0.ɵɵelement(3, "i", 115);
525
532
  i0.ɵɵtext(4);
526
533
  i0.ɵɵelementEnd();
527
- i0.ɵɵelementStart(5, "div", 93)(6, "span", 111);
534
+ i0.ɵɵelementStart(5, "div", 98)(6, "span", 116);
528
535
  i0.ɵɵtext(7);
529
536
  i0.ɵɵelementEnd();
530
- i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "span", 112);
537
+ i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "span", 117);
531
538
  i0.ɵɵelementEnd()();
532
- i0.ɵɵelementStart(9, "div", 95);
533
- i0.ɵɵconditionalCreate(10, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_10_Template, 2, 1, "div", 96);
534
- i0.ɵɵelementStart(11, "div", 97)(12, "span", 98);
535
- i0.ɵɵelement(13, "i", 113);
539
+ i0.ɵɵelementStart(9, "div", 100);
540
+ i0.ɵɵconditionalCreate(10, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_10_Template, 2, 1, "div", 101);
541
+ i0.ɵɵelementStart(11, "div", 102)(12, "span", 103);
542
+ i0.ɵɵelement(13, "i", 118);
536
543
  i0.ɵɵtext(14);
537
544
  i0.ɵɵelementEnd()()();
538
- i0.ɵɵconditionalCreate(15, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 3, 0, "div", 114);
545
+ i0.ɵɵconditionalCreate(15, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 3, 0, "div", 119);
539
546
  i0.ɵɵelementEnd();
540
547
  } if (rf & 2) {
541
548
  const field_r20 = ctx.$implicit;
@@ -553,10 +560,10 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
553
560
  i0.ɵɵadvance();
554
561
  i0.ɵɵconditional(ctx_r2.EditMode ? 15 : -1);
555
562
  } }
556
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
557
- i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 86);
558
- i0.ɵɵelementStart(1, "div", 87);
559
- i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Template, 16, 6, "div", 109, _forTrack2);
563
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
564
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 91);
565
+ i0.ɵɵelementStart(1, "div", 92);
566
+ i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Template, 16, 6, "div", 114, _forTrack2);
560
567
  i0.ɵɵelementEnd();
561
568
  } if (rf & 2) {
562
569
  const ctx_r2 = i0.ɵɵnextContext(4);
@@ -564,19 +571,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
564
571
  i0.ɵɵadvance(2);
565
572
  i0.ɵɵrepeater(ctx_r2.queryFields);
566
573
  } }
567
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Template(rf, ctx) { if (rf & 1) {
568
- i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Template, 7, 1, "div", 79)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Template, 4, 1);
574
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Template(rf, ctx) { if (rf & 1) {
575
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_0_Template, 7, 1, "div", 84)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_Template, 4, 1);
569
576
  } if (rf & 2) {
570
577
  const ctx_r2 = i0.ɵɵnextContext(3);
571
578
  i0.ɵɵconditional(ctx_r2.queryFields.length === 0 ? 0 : 1);
572
579
  } }
573
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template(rf, ctx) { if (rf & 1) {
580
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template(rf, ctx) { if (rf & 1) {
574
581
  const _r17 = i0.ɵɵgetCurrentView();
575
- i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
576
- i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.fieldsPanelExpanded, $event) || (ctx_r2.fieldsPanelExpanded = $event); return i0.ɵɵresetView($event); });
577
- i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Template, 4, 1, "ng-template", 25);
578
- i0.ɵɵelementStart(2, "div", 34);
579
- i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_3_Template, 2, 0, "div", 75)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Template, 2, 1);
582
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
583
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.fieldsPanelExpanded, $event) || (ctx_r2.fieldsPanelExpanded = $event); return i0.ɵɵresetView($event); });
584
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1_Template, 4, 1, "ng-template", 26);
585
+ i0.ɵɵelementStart(2, "div", 35);
586
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_3_Template, 2, 0, "div", 80)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Template, 2, 1);
580
587
  i0.ɵɵelementEnd()();
581
588
  } if (rf & 2) {
582
589
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -584,11 +591,11 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template(rf,
584
591
  i0.ɵɵadvance(3);
585
592
  i0.ɵɵconditional(ctx_r2.isLoadingFields ? 3 : 4);
586
593
  } }
587
- function MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1_Template(rf, ctx) { if (rf & 1) {
588
- i0.ɵɵelementStart(0, "span", 57);
589
- i0.ɵɵelement(1, "i", 118);
594
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_ng_template_1_Template(rf, ctx) { if (rf & 1) {
595
+ i0.ɵɵelementStart(0, "span", 62);
596
+ i0.ɵɵelement(1, "i", 123);
590
597
  i0.ɵɵtext(2, " Dependent Queries ");
591
- i0.ɵɵelementStart(3, "span", 77);
598
+ i0.ɵɵelementStart(3, "span", 82);
592
599
  i0.ɵɵtext(4);
593
600
  i0.ɵɵelementEnd()();
594
601
  } if (rf & 2) {
@@ -596,9 +603,9 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1
596
603
  i0.ɵɵadvance(4);
597
604
  i0.ɵɵtextInterpolate(ctx_r2.DependentQueries.length);
598
605
  } }
599
- function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
600
- i0.ɵɵelementStart(0, "div", 97)(1, "span", 98);
601
- i0.ɵɵelement(2, "i", 124);
606
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
607
+ i0.ɵɵelementStart(0, "div", 102)(1, "span", 103);
608
+ i0.ɵɵelement(2, "i", 129);
602
609
  i0.ɵɵtext(3);
603
610
  i0.ɵɵelementEnd()();
604
611
  } if (rf & 2) {
@@ -606,11 +613,11 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Condit
606
613
  i0.ɵɵadvance(3);
607
614
  i0.ɵɵtextInterpolate1(" ", dep_r24.ReferencePath, " ");
608
615
  } }
609
- function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
610
- i0.ɵɵelementStart(0, "div", 97)(1, "span", 98)(2, "strong");
616
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
617
+ i0.ɵɵelementStart(0, "div", 102)(1, "span", 103)(2, "strong");
611
618
  i0.ɵɵtext(3, "Alias:");
612
619
  i0.ɵɵelementEnd();
613
- i0.ɵɵelementStart(4, "code", 100);
620
+ i0.ɵɵelementStart(4, "code", 105);
614
621
  i0.ɵɵtext(5);
615
622
  i0.ɵɵelementEnd()()();
616
623
  } if (rf & 2) {
@@ -618,20 +625,20 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Condit
618
625
  i0.ɵɵadvance(5);
619
626
  i0.ɵɵtextInterpolate(dep_r24.Alias);
620
627
  } }
621
- function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Template(rf, ctx) { if (rf & 1) {
628
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Template(rf, ctx) { if (rf & 1) {
622
629
  const _r23 = i0.ɵɵgetCurrentView();
623
- i0.ɵɵelementStart(0, "div", 119);
624
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Template_div_click_0_listener() { const dep_r24 = i0.ɵɵrestoreView(_r23).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onDependentQueryClick(dep_r24)); });
625
- i0.ɵɵelementStart(1, "div", 90)(2, "div", 91);
626
- i0.ɵɵelement(3, "i", 120);
630
+ i0.ɵɵelementStart(0, "div", 124);
631
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Template_div_click_0_listener() { const dep_r24 = i0.ɵɵrestoreView(_r23).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onDependentQueryClick(dep_r24)); });
632
+ i0.ɵɵelementStart(1, "div", 95)(2, "div", 96);
633
+ i0.ɵɵelement(3, "i", 125);
627
634
  i0.ɵɵtext(4);
628
635
  i0.ɵɵelementEnd()();
629
- i0.ɵɵelementStart(5, "div", 95);
630
- i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Conditional_6_Template, 4, 1, "div", 97);
631
- i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Conditional_7_Template, 6, 1, "div", 97);
636
+ i0.ɵɵelementStart(5, "div", 100);
637
+ i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Conditional_6_Template, 4, 1, "div", 102);
638
+ i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Conditional_7_Template, 6, 1, "div", 102);
632
639
  i0.ɵɵelementEnd();
633
- i0.ɵɵelementStart(8, "div", 121)(9, "span", 122);
634
- i0.ɵɵelement(10, "i", 123);
640
+ i0.ɵɵelementStart(8, "div", 126)(9, "span", 127);
641
+ i0.ɵɵelement(10, "i", 128);
635
642
  i0.ɵɵtext(11, " Open ");
636
643
  i0.ɵɵelementEnd()()();
637
644
  } if (rf & 2) {
@@ -643,20 +650,20 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Templa
643
650
  i0.ɵɵadvance();
644
651
  i0.ɵɵconditional(dep_r24.Alias ? 7 : -1);
645
652
  } }
646
- function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template(rf, ctx) { if (rf & 1) {
653
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template(rf, ctx) { if (rf & 1) {
647
654
  const _r22 = i0.ɵɵgetCurrentView();
648
- i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
649
- i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.dependentsPanelExpanded, $event) || (ctx_r2.dependentsPanelExpanded = $event); return i0.ɵɵresetView($event); });
650
- i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1_Template, 5, 1, "ng-template", 25);
651
- i0.ɵɵelementStart(2, "div", 34)(3, "div", 116);
655
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
656
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.dependentsPanelExpanded, $event) || (ctx_r2.dependentsPanelExpanded = $event); return i0.ɵɵresetView($event); });
657
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_42_ng_template_1_Template, 5, 1, "ng-template", 26);
658
+ i0.ɵɵelementStart(2, "div", 35)(3, "div", 121);
652
659
  i0.ɵɵtext(4, " These queries reference this query via ");
653
660
  i0.ɵɵelementStart(5, "code");
654
661
  i0.ɵɵtext(6);
655
662
  i0.ɵɵelementEnd();
656
663
  i0.ɵɵtext(7, " composition syntax. ");
657
664
  i0.ɵɵelementEnd();
658
- i0.ɵɵelementStart(8, "div", 87);
659
- i0.ɵɵrepeaterCreate(9, MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Template, 12, 3, "div", 117, _forTrack2);
665
+ i0.ɵɵelementStart(8, "div", 92);
666
+ i0.ɵɵrepeaterCreate(9, MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Template, 12, 3, "div", 122, _forTrack2);
660
667
  i0.ɵɵelementEnd()()();
661
668
  } if (rf & 2) {
662
669
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -666,8 +673,8 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template(rf,
666
673
  i0.ɵɵadvance(3);
667
674
  i0.ɵɵrepeater(ctx_r2.DependentQueries);
668
675
  } }
669
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
670
- i0.ɵɵelementStart(0, "span", 77);
676
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
677
+ i0.ɵɵelementStart(0, "span", 82);
671
678
  i0.ɵɵtext(1);
672
679
  i0.ɵɵelementEnd();
673
680
  } if (rf & 2) {
@@ -675,58 +682,58 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_ng_template_1
675
682
  i0.ɵɵadvance();
676
683
  i0.ɵɵtextInterpolate(ctx_r2.queryEntities.length);
677
684
  } }
678
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_ng_template_1_Template(rf, ctx) { if (rf & 1) {
679
- i0.ɵɵelementStart(0, "span", 57);
680
- i0.ɵɵelement(1, "i", 125);
685
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Template(rf, ctx) { if (rf & 1) {
686
+ i0.ɵɵelementStart(0, "span", 62);
687
+ i0.ɵɵelement(1, "i", 130);
681
688
  i0.ɵɵtext(2, " Entities ");
682
- i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_42_ng_template_1_Conditional_3_Template, 2, 1, "span", 77);
689
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_3_Template, 2, 1, "span", 82);
683
690
  i0.ɵɵelementEnd();
684
691
  } if (rf & 2) {
685
692
  const ctx_r2 = i0.ɵɵnextContext(3);
686
693
  i0.ɵɵadvance(3);
687
694
  i0.ɵɵconditional(ctx_r2.queryEntities.length > 0 ? 3 : -1);
688
695
  } }
689
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_3_Template(rf, ctx) { if (rf & 1) {
690
- i0.ɵɵelementStart(0, "div", 75);
691
- i0.ɵɵelement(1, "mj-loading", 126);
696
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_3_Template(rf, ctx) { if (rf & 1) {
697
+ i0.ɵɵelementStart(0, "div", 80);
698
+ i0.ɵɵelement(1, "mj-loading", 131);
692
699
  i0.ɵɵelementEnd();
693
700
  } }
694
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
701
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
695
702
  const _r26 = i0.ɵɵgetCurrentView();
696
- i0.ɵɵelementStart(0, "button", 84);
697
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addEntity()); });
698
- i0.ɵɵelement(1, "i", 85);
703
+ i0.ɵɵelementStart(0, "button", 89);
704
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addEntity()); });
705
+ i0.ɵɵelement(1, "i", 90);
699
706
  i0.ɵɵtext(2, " Add First Entity ");
700
707
  i0.ɵɵelementEnd();
701
708
  } }
702
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
703
- i0.ɵɵelementStart(0, "div", 79);
704
- i0.ɵɵelement(1, "i", 127);
705
- i0.ɵɵelementStart(2, "div", 81);
709
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
710
+ i0.ɵɵelementStart(0, "div", 84);
711
+ i0.ɵɵelement(1, "i", 132);
712
+ i0.ɵɵelementStart(2, "div", 86);
706
713
  i0.ɵɵtext(3, "No Entities Tracked");
707
714
  i0.ɵɵelementEnd();
708
- i0.ɵɵelementStart(4, "div", 82);
715
+ i0.ɵɵelementStart(4, "div", 87);
709
716
  i0.ɵɵtext(5, " Track which entities this query uses for documentation. ");
710
717
  i0.ɵɵelementEnd();
711
- i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 83);
718
+ i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 88);
712
719
  i0.ɵɵelementEnd();
713
720
  } if (rf & 2) {
714
721
  const ctx_r2 = i0.ɵɵnextContext(4);
715
722
  i0.ɵɵadvance(6);
716
723
  i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
717
724
  } }
718
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
725
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
719
726
  const _r27 = i0.ɵɵgetCurrentView();
720
- i0.ɵɵelementStart(0, "div", 86)(1, "button", 84);
721
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addEntity()); });
722
- i0.ɵɵelement(2, "i", 85);
727
+ i0.ɵɵelementStart(0, "div", 91)(1, "button", 89);
728
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addEntity()); });
729
+ i0.ɵɵelement(2, "i", 90);
723
730
  i0.ɵɵtext(3, " Add Entity ");
724
731
  i0.ɵɵelementEnd()();
725
732
  } }
726
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_For_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
733
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
727
734
  const _r28 = i0.ɵɵgetCurrentView();
728
- i0.ɵɵelementStart(0, "div", 129)(1, "mj-dropdown", 130);
729
- i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_For_3_Conditional_5_Template_mj_dropdown_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r28); const entity_r29 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(entity_r29.EntityID, $event) || (entity_r29.EntityID = $event); return i0.ɵɵresetView($event); });
735
+ i0.ɵɵelementStart(0, "div", 134)(1, "mj-dropdown", 135);
736
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_5_Template_mj_dropdown_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r28); const entity_r29 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(entity_r29.EntityID, $event) || (entity_r29.EntityID = $event); return i0.ɵɵresetView($event); });
730
737
  i0.ɵɵelementEnd()();
731
738
  } if (rf & 2) {
732
739
  const entity_r29 = i0.ɵɵnextContext().$implicit;
@@ -735,28 +742,28 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4
735
742
  i0.ɵɵtwoWayProperty("ngModel", entity_r29.EntityID);
736
743
  i0.ɵɵproperty("name", "entity_" + entity_r29.ID)("Data", ctx_r2.getEntityOptions())("ValuePrimitive", true);
737
744
  } }
738
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
739
- i0.ɵɵelementStart(0, "div", 95)(1, "div", 97)(2, "span", 98);
740
- i0.ɵɵelement(3, "i", 131);
745
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
746
+ i0.ɵɵelementStart(0, "div", 100)(1, "div", 102)(2, "span", 103);
747
+ i0.ɵɵelement(3, "i", 136);
741
748
  i0.ɵɵtext(4, " Data Source ");
742
749
  i0.ɵɵelementEnd()()();
743
750
  } }
744
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_For_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
751
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
745
752
  const _r30 = i0.ɵɵgetCurrentView();
746
- i0.ɵɵelementStart(0, "div", 114)(1, "button", 132);
747
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_For_3_Conditional_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r30); const entity_r29 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteEntity(entity_r29)); });
748
- i0.ɵɵelement(2, "i", 105);
753
+ i0.ɵɵelementStart(0, "div", 119)(1, "button", 137);
754
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r30); const entity_r29 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteEntity(entity_r29)); });
755
+ i0.ɵɵelement(2, "i", 110);
749
756
  i0.ɵɵelementEnd()();
750
757
  } }
751
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
752
- i0.ɵɵelementStart(0, "div", 109)(1, "div", 90)(2, "div", 91);
753
- i0.ɵɵelement(3, "i", 128);
758
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
759
+ i0.ɵɵelementStart(0, "div", 114)(1, "div", 95)(2, "div", 96);
760
+ i0.ɵɵelement(3, "i", 133);
754
761
  i0.ɵɵtext(4);
755
762
  i0.ɵɵelementEnd();
756
- i0.ɵɵconditionalCreate(5, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_For_3_Conditional_5_Template, 2, 4, "div", 129);
763
+ i0.ɵɵconditionalCreate(5, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_5_Template, 2, 4, "div", 134);
757
764
  i0.ɵɵelementEnd();
758
- i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 5, 0, "div", 95);
759
- i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_For_3_Conditional_7_Template, 3, 0, "div", 114);
765
+ i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 5, 0, "div", 100);
766
+ i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_7_Template, 3, 0, "div", 119);
760
767
  i0.ɵɵelementEnd();
761
768
  } if (rf & 2) {
762
769
  const entity_r29 = ctx.$implicit;
@@ -770,10 +777,10 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4
770
777
  i0.ɵɵadvance();
771
778
  i0.ɵɵconditional(ctx_r2.EditMode ? 7 : -1);
772
779
  } }
773
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
774
- i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 86);
775
- i0.ɵɵelementStart(1, "div", 87);
776
- i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_For_3_Template, 8, 4, "div", 109, _forTrack2);
780
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
781
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 91);
782
+ i0.ɵɵelementStart(1, "div", 92);
783
+ i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Template, 8, 4, "div", 114, _forTrack2);
777
784
  i0.ɵɵelementEnd();
778
785
  } if (rf & 2) {
779
786
  const ctx_r2 = i0.ɵɵnextContext(4);
@@ -781,19 +788,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4
781
788
  i0.ɵɵadvance(2);
782
789
  i0.ɵɵrepeater(ctx_r2.queryEntities);
783
790
  } }
784
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Template(rf, ctx) { if (rf & 1) {
785
- i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_0_Template, 7, 1, "div", 79)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Conditional_1_Template, 4, 1);
791
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Template(rf, ctx) { if (rf & 1) {
792
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_0_Template, 7, 1, "div", 84)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Template, 4, 1);
786
793
  } if (rf & 2) {
787
794
  const ctx_r2 = i0.ɵɵnextContext(3);
788
795
  i0.ɵɵconditional(ctx_r2.queryEntities.length === 0 ? 0 : 1);
789
796
  } }
790
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template(rf, ctx) { if (rf & 1) {
797
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Template(rf, ctx) { if (rf & 1) {
791
798
  const _r25 = i0.ɵɵgetCurrentView();
792
- i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
793
- i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.entitiesPanelExpanded, $event) || (ctx_r2.entitiesPanelExpanded = $event); return i0.ɵɵresetView($event); });
794
- i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_42_ng_template_1_Template, 4, 1, "ng-template", 25);
795
- i0.ɵɵelementStart(2, "div", 34);
796
- i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_3_Template, 2, 0, "div", 75)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4_Template, 2, 1);
799
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
800
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.entitiesPanelExpanded, $event) || (ctx_r2.entitiesPanelExpanded = $event); return i0.ɵɵresetView($event); });
801
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Template, 4, 1, "ng-template", 26);
802
+ i0.ɵɵelementStart(2, "div", 35);
803
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_3_Template, 2, 0, "div", 80)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Template, 2, 1);
797
804
  i0.ɵɵelementEnd()();
798
805
  } if (rf & 2) {
799
806
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -801,45 +808,177 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template(rf,
801
808
  i0.ɵɵadvance(3);
802
809
  i0.ɵɵconditional(ctx_r2.isLoadingEntities ? 3 : 4);
803
810
  } }
804
- function MJQueryFormComponentExtended_Conditional_1_ng_template_44_Template(rf, ctx) { if (rf & 1) {
805
- i0.ɵɵelementStart(0, "span", 57);
806
- i0.ɵɵelement(1, "i", 133);
811
+ function MJQueryFormComponentExtended_Conditional_1_ng_template_45_Template(rf, ctx) { if (rf & 1) {
812
+ i0.ɵɵelementStart(0, "span", 62);
813
+ i0.ɵɵelement(1, "i", 138);
807
814
  i0.ɵɵtext(2, " Details ");
808
815
  i0.ɵɵelementEnd();
809
816
  } }
810
- function MJQueryFormComponentExtended_Conditional_1_Conditional_51_Template(rf, ctx) { if (rf & 1) {
817
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_52_Template(rf, ctx) { if (rf & 1) {
811
818
  const _r31 = i0.ɵɵgetCurrentView();
812
- i0.ɵɵelementStart(0, "mj-switch", 134);
813
- i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_51_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r31); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.UsesTemplate, $event) || (ctx_r2.record.UsesTemplate = $event); return i0.ɵɵresetView($event); });
819
+ i0.ɵɵelementStart(0, "mj-switch", 139);
820
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_52_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r31); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Reusable, $event) || (ctx_r2.record.Reusable = $event); return i0.ɵɵresetView($event); });
821
+ i0.ɵɵelementEnd();
822
+ i0.ɵɵelementStart(1, "div", 140);
823
+ i0.ɵɵtext(2, "Allow other queries to reference this query using composition syntax");
824
+ i0.ɵɵelementEnd();
825
+ } if (rf & 2) {
826
+ const ctx_r2 = i0.ɵɵnextContext(2);
827
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Reusable);
828
+ } }
829
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_53_Conditional_1_Template(rf, ctx) { if (rf & 1) {
830
+ i0.ɵɵelementStart(0, "span", 141);
831
+ i0.ɵɵelement(1, "i", 143);
832
+ i0.ɵɵtext(2, " Reusable");
833
+ i0.ɵɵelementEnd();
834
+ } }
835
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_53_Conditional_2_Template(rf, ctx) { if (rf & 1) {
836
+ i0.ɵɵelementStart(0, "span", 142);
837
+ i0.ɵɵelement(1, "i", 144);
838
+ i0.ɵɵtext(2, " Not Reusable");
839
+ i0.ɵɵelementEnd();
840
+ } }
841
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_53_Template(rf, ctx) { if (rf & 1) {
842
+ i0.ɵɵelementStart(0, "div", 40);
843
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_53_Conditional_1_Template, 3, 0, "span", 141)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_53_Conditional_2_Template, 3, 0, "span", 142);
844
+ i0.ɵɵelementEnd();
845
+ } if (rf & 2) {
846
+ const ctx_r2 = i0.ɵɵnextContext(2);
847
+ i0.ɵɵadvance();
848
+ i0.ɵɵconditional(ctx_r2.record.Reusable ? 1 : 2);
849
+ } }
850
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_58_Template(rf, ctx) { if (rf & 1) {
851
+ const _r32 = i0.ɵɵgetCurrentView();
852
+ i0.ɵɵelementStart(0, "mj-switch", 145);
853
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_58_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.CacheEnabled, $event) || (ctx_r2.record.CacheEnabled = $event); return i0.ɵɵresetView($event); });
854
+ i0.ɵɵelementEnd();
855
+ i0.ɵɵelementStart(1, "div", 140);
856
+ i0.ɵɵtext(2, "Cache query results in memory to reduce database load on repeated runs");
857
+ i0.ɵɵelementEnd();
858
+ } if (rf & 2) {
859
+ const ctx_r2 = i0.ɵɵnextContext(2);
860
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.CacheEnabled);
861
+ } }
862
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_1_Template(rf, ctx) { if (rf & 1) {
863
+ i0.ɵɵelementStart(0, "span", 141);
864
+ i0.ɵɵelement(1, "i", 143);
865
+ i0.ɵɵtext(2, " Caching On");
866
+ i0.ɵɵelementEnd();
867
+ } }
868
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_2_Template(rf, ctx) { if (rf & 1) {
869
+ i0.ɵɵelementStart(0, "span", 142);
870
+ i0.ɵɵelement(1, "i", 144);
871
+ i0.ɵɵtext(2, " Caching Off");
872
+ i0.ɵɵelementEnd();
873
+ } }
874
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Template(rf, ctx) { if (rf & 1) {
875
+ i0.ɵɵelementStart(0, "div", 40);
876
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_1_Template, 3, 0, "span", 141)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_2_Template, 3, 0, "span", 142);
877
+ i0.ɵɵelementEnd();
878
+ } if (rf & 2) {
879
+ const ctx_r2 = i0.ɵɵnextContext(2);
880
+ i0.ɵɵadvance();
881
+ i0.ɵɵconditional(ctx_r2.record.CacheEnabled ? 1 : 2);
882
+ } }
883
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_60_Conditional_4_Template(rf, ctx) { if (rf & 1) {
884
+ const _r33 = i0.ɵɵgetCurrentView();
885
+ i0.ɵɵelementStart(0, "input", 147);
886
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_60_Conditional_4_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.record.CacheTTLMinutes, $event) || (ctx_r2.record.CacheTTLMinutes = $event); return i0.ɵɵresetView($event); });
887
+ i0.ɵɵelementEnd();
888
+ i0.ɵɵelementStart(1, "div", 140);
889
+ i0.ɵɵtext(2, "How long cached results remain valid. Leave blank for default TTL.");
890
+ i0.ɵɵelementEnd();
891
+ } if (rf & 2) {
892
+ const ctx_r2 = i0.ɵɵnextContext(3);
893
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.CacheTTLMinutes);
894
+ } }
895
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_60_Conditional_5_Template(rf, ctx) { if (rf & 1) {
896
+ i0.ɵɵelementStart(0, "div", 40);
897
+ i0.ɵɵtext(1);
898
+ i0.ɵɵelementEnd();
899
+ } if (rf & 2) {
900
+ const ctx_r2 = i0.ɵɵnextContext(3);
901
+ i0.ɵɵadvance();
902
+ i0.ɵɵtextInterpolate(ctx_r2.record.CacheTTLMinutes != null ? ctx_r2.record.CacheTTLMinutes + " min" : "Default");
903
+ } }
904
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_60_Template(rf, ctx) { if (rf & 1) {
905
+ i0.ɵɵelementStart(0, "div", 37)(1, "label", 38);
906
+ i0.ɵɵelement(2, "i", 146);
907
+ i0.ɵɵtext(3, " Cache TTL (Minutes) ");
908
+ i0.ɵɵelementEnd();
909
+ i0.ɵɵconditionalCreate(4, MJQueryFormComponentExtended_Conditional_1_Conditional_60_Conditional_4_Template, 3, 1)(5, MJQueryFormComponentExtended_Conditional_1_Conditional_60_Conditional_5_Template, 2, 1, "div", 40);
910
+ i0.ɵɵelementEnd();
911
+ } if (rf & 2) {
912
+ const ctx_r2 = i0.ɵɵnextContext(2);
913
+ i0.ɵɵadvance(4);
914
+ i0.ɵɵconditional(ctx_r2.EditMode ? 4 : 5);
915
+ } }
916
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template(rf, ctx) { if (rf & 1) {
917
+ const _r34 = i0.ɵɵgetCurrentView();
918
+ i0.ɵɵelementStart(0, "mj-switch", 148);
919
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.AuditQueryRuns, $event) || (ctx_r2.record.AuditQueryRuns = $event); return i0.ɵɵresetView($event); });
920
+ i0.ɵɵelementEnd();
921
+ i0.ɵɵelementStart(1, "div", 140);
922
+ i0.ɵɵtext(2, "Log all executions of this query to the Audit Log for tracking and compliance");
923
+ i0.ɵɵelementEnd();
924
+ } if (rf & 2) {
925
+ const ctx_r2 = i0.ɵɵnextContext(2);
926
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.AuditQueryRuns);
927
+ } }
928
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_1_Template(rf, ctx) { if (rf & 1) {
929
+ i0.ɵɵelementStart(0, "span", 141);
930
+ i0.ɵɵelement(1, "i", 143);
931
+ i0.ɵɵtext(2, " Auditing On");
932
+ i0.ɵɵelementEnd();
933
+ } }
934
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_2_Template(rf, ctx) { if (rf & 1) {
935
+ i0.ɵɵelementStart(0, "span", 142);
936
+ i0.ɵɵelement(1, "i", 144);
937
+ i0.ɵɵtext(2, " Auditing Off");
938
+ i0.ɵɵelementEnd();
939
+ } }
940
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Template(rf, ctx) { if (rf & 1) {
941
+ i0.ɵɵelementStart(0, "div", 40);
942
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_1_Template, 3, 0, "span", 141)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_2_Template, 3, 0, "span", 142);
943
+ i0.ɵɵelementEnd();
944
+ } if (rf & 2) {
945
+ const ctx_r2 = i0.ɵɵnextContext(2);
946
+ i0.ɵɵadvance();
947
+ i0.ɵɵconditional(ctx_r2.record.AuditQueryRuns ? 1 : 2);
948
+ } }
949
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_71_Template(rf, ctx) { if (rf & 1) {
950
+ const _r35 = i0.ɵɵgetCurrentView();
951
+ i0.ɵɵelementStart(0, "mj-switch", 149);
952
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_71_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.UsesTemplate, $event) || (ctx_r2.record.UsesTemplate = $event); return i0.ɵɵresetView($event); });
814
953
  i0.ɵɵelementEnd();
815
954
  } if (rf & 2) {
816
955
  const ctx_r2 = i0.ɵɵnextContext(2);
817
956
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.UsesTemplate);
818
957
  } }
819
- function MJQueryFormComponentExtended_Conditional_1_Conditional_52_Conditional_1_Template(rf, ctx) { if (rf & 1) {
820
- i0.ɵɵelementStart(0, "span", 135);
821
- i0.ɵɵelement(1, "i", 137);
958
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_72_Conditional_1_Template(rf, ctx) { if (rf & 1) {
959
+ i0.ɵɵelementStart(0, "span", 141);
960
+ i0.ɵɵelement(1, "i", 143);
822
961
  i0.ɵɵtext(2, " Uses Templates");
823
962
  i0.ɵɵelementEnd();
824
963
  } }
825
- function MJQueryFormComponentExtended_Conditional_1_Conditional_52_Conditional_2_Template(rf, ctx) { if (rf & 1) {
826
- i0.ɵɵelementStart(0, "span", 136);
827
- i0.ɵɵelement(1, "i", 138);
964
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_72_Conditional_2_Template(rf, ctx) { if (rf & 1) {
965
+ i0.ɵɵelementStart(0, "span", 142);
966
+ i0.ɵɵelement(1, "i", 144);
828
967
  i0.ɵɵtext(2, " No Templates");
829
968
  i0.ɵɵelementEnd();
830
969
  } }
831
- function MJQueryFormComponentExtended_Conditional_1_Conditional_52_Template(rf, ctx) { if (rf & 1) {
970
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_72_Template(rf, ctx) { if (rf & 1) {
832
971
  i0.ɵɵelementStart(0, "div", 40);
833
- i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_52_Conditional_1_Template, 3, 0, "span", 135)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_52_Conditional_2_Template, 3, 0, "span", 136);
972
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_72_Conditional_1_Template, 3, 0, "span", 141)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_72_Conditional_2_Template, 3, 0, "span", 142);
834
973
  i0.ɵɵelementEnd();
835
974
  } if (rf & 2) {
836
975
  const ctx_r2 = i0.ɵɵnextContext(2);
837
976
  i0.ɵɵadvance();
838
977
  i0.ɵɵconditional(ctx_r2.record.UsesTemplate ? 1 : 2);
839
978
  } }
840
- function MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template(rf, ctx) { if (rf & 1) {
841
- i0.ɵɵelementStart(0, "div", 36)(1, "label", 37);
842
- i0.ɵɵelement(2, "i", 139);
979
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_85_Template(rf, ctx) { if (rf & 1) {
980
+ i0.ɵɵelementStart(0, "div", 37)(1, "label", 38);
981
+ i0.ɵɵelement(2, "i", 150);
843
982
  i0.ɵɵtext(3, " Quality Rank ");
844
983
  i0.ɵɵelementEnd();
845
984
  i0.ɵɵelementStart(4, "div", 40);
@@ -850,79 +989,79 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template(rf,
850
989
  i0.ɵɵadvance(5);
851
990
  i0.ɵɵtextInterpolate1("", ctx_r2.record.QualityRank, "/10");
852
991
  } }
853
- function MJQueryFormComponentExtended_Conditional_1_Conditional_66_ng_template_1_Template(rf, ctx) { if (rf & 1) {
854
- i0.ɵɵelementStart(0, "span", 57);
855
- i0.ɵɵelement(1, "i", 140);
992
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_86_ng_template_1_Template(rf, ctx) { if (rf & 1) {
993
+ i0.ɵɵelementStart(0, "span", 62);
994
+ i0.ɵɵelement(1, "i", 151);
856
995
  i0.ɵɵtext(2, " Permissions ");
857
996
  i0.ɵɵelementEnd();
858
997
  } }
859
- function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_3_Template(rf, ctx) { if (rf & 1) {
860
- i0.ɵɵelementStart(0, "div", 75);
861
- i0.ɵɵelement(1, "mj-loading", 141);
998
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_3_Template(rf, ctx) { if (rf & 1) {
999
+ i0.ɵɵelementStart(0, "div", 80);
1000
+ i0.ɵɵelement(1, "mj-loading", 152);
862
1001
  i0.ɵɵelementEnd();
863
1002
  } }
864
- function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
865
- i0.ɵɵelementStart(0, "div", 79);
866
- i0.ɵɵelement(1, "i", 142);
867
- i0.ɵɵelementStart(2, "div", 81);
1003
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1004
+ i0.ɵɵelementStart(0, "div", 84);
1005
+ i0.ɵɵelement(1, "i", 153);
1006
+ i0.ɵɵelementStart(2, "div", 86);
868
1007
  i0.ɵɵtext(3, "No Permissions Set");
869
1008
  i0.ɵɵelementEnd();
870
- i0.ɵɵelementStart(4, "div", 82);
1009
+ i0.ɵɵelementStart(4, "div", 87);
871
1010
  i0.ɵɵtext(5, " This query uses default permissions. ");
872
1011
  i0.ɵɵelementEnd()();
873
1012
  } }
874
- function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
875
- i0.ɵɵelement(0, "mj-explorer-entity-data-grid", 143);
1013
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1014
+ i0.ɵɵelement(0, "mj-explorer-entity-data-grid", 154);
876
1015
  } if (rf & 2) {
877
1016
  const ctx_r2 = i0.ɵɵnextContext(5);
878
1017
  i0.ɵɵproperty("Params", ctx_r2.BuildRelationshipViewParamsByEntityName("MJ: Query Permissions", "QueryID"))("NewRecordValues", ctx_r2.NewRecordValues("MJ: Query Permissions"))("AllowLoad", true)("ShowToolbar", false);
879
1018
  } }
880
- function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Conditional_1_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
881
- i0.ɵɵelementStart(0, "div", 145);
882
- i0.ɵɵelement(1, "i", 146);
883
- i0.ɵɵelementStart(2, "div", 147)(3, "div", 148);
1019
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
1020
+ i0.ɵɵelementStart(0, "div", 156);
1021
+ i0.ɵɵelement(1, "i", 157);
1022
+ i0.ɵɵelementStart(2, "div", 158)(3, "div", 159);
884
1023
  i0.ɵɵtext(4);
885
1024
  i0.ɵɵelementEnd();
886
- i0.ɵɵelementStart(5, "div", 149);
1025
+ i0.ɵɵelementStart(5, "div", 160);
887
1026
  i0.ɵɵtext(6, "Role Permission");
888
1027
  i0.ɵɵelementEnd()();
889
- i0.ɵɵelementStart(7, "span", 150);
890
- i0.ɵɵelement(8, "i", 47);
1028
+ i0.ɵɵelementStart(7, "span", 161);
1029
+ i0.ɵɵelement(8, "i", 52);
891
1030
  i0.ɵɵtext(9, " Can Execute ");
892
1031
  i0.ɵɵelementEnd()();
893
1032
  } if (rf & 2) {
894
- const permission_r33 = ctx.$implicit;
1033
+ const permission_r37 = ctx.$implicit;
895
1034
  i0.ɵɵadvance(4);
896
- i0.ɵɵtextInterpolate(permission_r33.Role);
1035
+ i0.ɵɵtextInterpolate(permission_r37.Role);
897
1036
  } }
898
- function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
899
- i0.ɵɵelementStart(0, "div", 144);
900
- i0.ɵɵrepeaterCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Conditional_1_Conditional_1_For_2_Template, 10, 1, "div", 145, _forTrack2);
1037
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1038
+ i0.ɵɵelementStart(0, "div", 155);
1039
+ i0.ɵɵrepeaterCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_1_For_2_Template, 10, 1, "div", 156, _forTrack2);
901
1040
  i0.ɵɵelementEnd();
902
1041
  } if (rf & 2) {
903
1042
  const ctx_r2 = i0.ɵɵnextContext(5);
904
1043
  i0.ɵɵadvance();
905
1044
  i0.ɵɵrepeater(ctx_r2.queryPermissions);
906
1045
  } }
907
- function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
908
- i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Conditional_1_Conditional_0_Template, 1, 4, "mj-explorer-entity-data-grid", 143)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Conditional_1_Conditional_1_Template, 3, 0, "div", 144);
1046
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1047
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_0_Template, 1, 4, "mj-explorer-entity-data-grid", 154)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_1_Template, 3, 0, "div", 155);
909
1048
  } if (rf & 2) {
910
1049
  const ctx_r2 = i0.ɵɵnextContext(4);
911
1050
  i0.ɵɵconditional(ctx_r2.EditMode ? 0 : 1);
912
1051
  } }
913
- function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Template(rf, ctx) { if (rf & 1) {
914
- i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Conditional_0_Template, 6, 0, "div", 79)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Conditional_1_Template, 2, 1);
1052
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1053
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_0_Template, 6, 0, "div", 84)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Template, 2, 1);
915
1054
  } if (rf & 2) {
916
1055
  const ctx_r2 = i0.ɵɵnextContext(3);
917
1056
  i0.ɵɵconditional(ctx_r2.queryPermissions.length === 0 && !ctx_r2.EditMode ? 0 : 1);
918
1057
  } }
919
- function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Template(rf, ctx) { if (rf & 1) {
920
- const _r32 = i0.ɵɵgetCurrentView();
921
- i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
922
- i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.permissionsPanelExpanded, $event) || (ctx_r2.permissionsPanelExpanded = $event); return i0.ɵɵresetView($event); });
923
- i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_66_ng_template_1_Template, 3, 0, "ng-template", 25);
924
- i0.ɵɵelementStart(2, "div", 34);
925
- i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_3_Template, 2, 0, "div", 75)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_4_Template, 2, 1);
1058
+ function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Template(rf, ctx) { if (rf & 1) {
1059
+ const _r36 = i0.ɵɵgetCurrentView();
1060
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
1061
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.permissionsPanelExpanded, $event) || (ctx_r2.permissionsPanelExpanded = $event); return i0.ɵɵresetView($event); });
1062
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_86_ng_template_1_Template, 3, 0, "ng-template", 26);
1063
+ i0.ɵɵelementStart(2, "div", 35);
1064
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_3_Template, 2, 0, "div", 80)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Template, 2, 1);
926
1065
  i0.ɵɵelementEnd()();
927
1066
  } if (rf & 2) {
928
1067
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -934,128 +1073,162 @@ function MJQueryFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf &
934
1073
  const _r1 = i0.ɵɵgetCurrentView();
935
1074
  i0.ɵɵelementStart(0, "form", 3, 0);
936
1075
  i0.ɵɵelement(2, "mj-form-toolbar", 4);
937
- i0.ɵɵelementStart(3, "div", 5)(4, "div", 6)(5, "div", 7)(6, "div", 8);
938
- i0.ɵɵelement(7, "i", 9);
939
- i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_1_Conditional_8_Template, 1, 1, "input", 10)(9, MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template, 2, 1, "h4", 11);
1076
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_3_Template, 4, 0, "div", 5);
1077
+ i0.ɵɵelementStart(4, "div", 6)(5, "div", 7)(6, "div", 8)(7, "div", 9);
1078
+ i0.ɵɵelement(8, "i", 10);
1079
+ i0.ɵɵconditionalCreate(9, MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template, 1, 1, "input", 11)(10, MJQueryFormComponentExtended_Conditional_1_Conditional_10_Template, 2, 1, "h4", 12);
940
1080
  i0.ɵɵelementEnd();
941
- i0.ɵɵelementStart(10, "div", 12);
942
- i0.ɵɵconditionalCreate(11, MJQueryFormComponentExtended_Conditional_1_Conditional_11_Template, 3, 1, "button", 13);
1081
+ i0.ɵɵelementStart(11, "div", 13);
1082
+ i0.ɵɵconditionalCreate(12, MJQueryFormComponentExtended_Conditional_1_Conditional_12_Template, 3, 1, "button", 14);
943
1083
  i0.ɵɵelementEnd()();
944
- i0.ɵɵelementStart(12, "div", 14)(13, "div", 15)(14, "label", 16);
945
- i0.ɵɵtext(15, "Category");
1084
+ i0.ɵɵelementStart(13, "div", 15)(14, "div", 16)(15, "label", 17);
1085
+ i0.ɵɵtext(16, "Category");
946
1086
  i0.ɵɵelementEnd();
947
- i0.ɵɵconditionalCreate(16, MJQueryFormComponentExtended_Conditional_1_Conditional_16_Template, 1, 3, "mj-dropdown", 17)(17, MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template, 2, 1, "span", 18);
1087
+ i0.ɵɵconditionalCreate(17, MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template, 1, 7, "mj-tree-dropdown", 18)(18, MJQueryFormComponentExtended_Conditional_1_Conditional_18_Template, 2, 1, "span", 19);
948
1088
  i0.ɵɵelementEnd();
949
- i0.ɵɵelementStart(18, "div", 15)(19, "label", 16);
950
- i0.ɵɵtext(20, "Status");
1089
+ i0.ɵɵelementStart(19, "div", 16)(20, "label", 17);
1090
+ i0.ɵɵtext(21, "Status");
951
1091
  i0.ɵɵelementEnd();
952
- i0.ɵɵconditionalCreate(21, MJQueryFormComponentExtended_Conditional_1_Conditional_21_Template, 1, 3, "mj-dropdown", 19)(22, MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template, 3, 5, "span", 20);
1092
+ i0.ɵɵconditionalCreate(22, MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template, 1, 3, "mj-dropdown", 20)(23, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template, 3, 5, "span", 21);
953
1093
  i0.ɵɵelementEnd()();
954
- i0.ɵɵconditionalCreate(23, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template, 3, 1, "div", 21);
1094
+ i0.ɵɵconditionalCreate(24, MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template, 3, 1, "div", 22);
955
1095
  i0.ɵɵelementEnd()();
956
- i0.ɵɵconditionalCreate(24, MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template, 7, 8, "div", 22);
957
- i0.ɵɵelementStart(25, "div", 23)(26, "mj-accordion-panel", 24);
958
- i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_accordion_panel_ExpandedChange_26_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.sqlPanelExpanded, $event) || (ctx_r2.sqlPanelExpanded = $event); return i0.ɵɵresetView($event); });
959
- i0.ɵɵtemplate(27, MJQueryFormComponentExtended_Conditional_1_ng_template_27_Template, 5, 1, "ng-template", 25);
960
- i0.ɵɵelementStart(28, "div", 26)(29, "button", 27);
961
- i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleFiltersHelp()); });
962
- i0.ɵɵelement(30, "i", 28);
963
- i0.ɵɵelementStart(31, "span");
964
- i0.ɵɵtext(32, "Filters Help");
965
- i0.ɵɵelementEnd();
966
- i0.ɵɵelement(33, "i", 29);
1096
+ i0.ɵɵconditionalCreate(25, MJQueryFormComponentExtended_Conditional_1_Conditional_25_Template, 7, 8, "div", 23);
1097
+ i0.ɵɵelementStart(26, "div", 24)(27, "mj-accordion-panel", 25);
1098
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_accordion_panel_ExpandedChange_27_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.sqlPanelExpanded, $event) || (ctx_r2.sqlPanelExpanded = $event); return i0.ɵɵresetView($event); });
1099
+ i0.ɵɵtemplate(28, MJQueryFormComponentExtended_Conditional_1_ng_template_28_Template, 5, 1, "ng-template", 26);
1100
+ i0.ɵɵelementStart(29, "div", 27)(30, "button", 28);
1101
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleFiltersHelp()); });
1102
+ i0.ɵɵelement(31, "i", 29);
1103
+ i0.ɵɵelementStart(32, "span");
1104
+ i0.ɵɵtext(33, "Filters Help");
1105
+ i0.ɵɵelementEnd();
1106
+ i0.ɵɵelement(34, "i", 30);
967
1107
  i0.ɵɵelementEnd()();
968
- i0.ɵɵelementStart(34, "div", 30)(35, "mj-code-editor", 31, 1);
969
- i0.ɵɵlistener("change", function MJQueryFormComponentExtended_Conditional_1_Template_mj_code_editor_change_35_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSQLChange($event)); })("CompositionTokenClick", function MJQueryFormComponentExtended_Conditional_1_Template_mj_code_editor_CompositionTokenClick_35_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCompositionTokenClick($event)); });
1108
+ i0.ɵɵelementStart(35, "div", 31)(36, "mj-code-editor", 32, 1);
1109
+ i0.ɵɵlistener("change", function MJQueryFormComponentExtended_Conditional_1_Template_mj_code_editor_change_36_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSQLChange($event)); })("CompositionTokenClick", function MJQueryFormComponentExtended_Conditional_1_Template_mj_code_editor_CompositionTokenClick_36_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCompositionTokenClick($event)); });
970
1110
  i0.ɵɵelementEnd();
971
- i0.ɵɵconditionalCreate(37, MJQueryFormComponentExtended_Conditional_1_Conditional_37_Template, 7, 0, "div", 32);
1111
+ i0.ɵɵconditionalCreate(38, MJQueryFormComponentExtended_Conditional_1_Conditional_38_Template, 7, 0, "div", 33);
972
1112
  i0.ɵɵelementEnd()();
973
- i0.ɵɵconditionalCreate(38, MJQueryFormComponentExtended_Conditional_1_Conditional_38_Template, 5, 2, "mj-accordion-panel", 33);
974
- i0.ɵɵconditionalCreate(39, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template, 5, 2, "mj-accordion-panel", 33);
975
- i0.ɵɵconditionalCreate(40, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template, 5, 2, "mj-accordion-panel", 33);
976
- i0.ɵɵconditionalCreate(41, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template, 11, 2, "mj-accordion-panel", 33);
977
- i0.ɵɵconditionalCreate(42, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template, 5, 2, "mj-accordion-panel", 33);
978
- i0.ɵɵelementStart(43, "mj-accordion-panel", 24);
979
- i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_accordion_panel_ExpandedChange_43_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.detailsPanelExpanded, $event) || (ctx_r2.detailsPanelExpanded = $event); return i0.ɵɵresetView($event); });
980
- i0.ɵɵtemplate(44, MJQueryFormComponentExtended_Conditional_1_ng_template_44_Template, 3, 0, "ng-template", 25);
981
- i0.ɵɵelementStart(45, "div", 34)(46, "div", 35)(47, "div", 36)(48, "label", 37);
982
- i0.ɵɵelement(49, "i", 38);
983
- i0.ɵɵtext(50, " Template Usage ");
984
- i0.ɵɵelementEnd();
985
- i0.ɵɵconditionalCreate(51, MJQueryFormComponentExtended_Conditional_1_Conditional_51_Template, 1, 1, "mj-switch", 39)(52, MJQueryFormComponentExtended_Conditional_1_Conditional_52_Template, 3, 1, "div", 40);
986
- i0.ɵɵelementEnd();
987
- i0.ɵɵelementStart(53, "div", 36)(54, "label", 37);
988
- i0.ɵɵelement(55, "i", 41);
989
- i0.ɵɵtext(56, " Created ");
990
- i0.ɵɵelementEnd();
991
- i0.ɵɵelementStart(57, "div", 40);
992
- i0.ɵɵtext(58);
1113
+ i0.ɵɵconditionalCreate(39, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template, 5, 2, "mj-accordion-panel", 34);
1114
+ i0.ɵɵconditionalCreate(40, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template, 5, 2, "mj-accordion-panel", 34);
1115
+ i0.ɵɵconditionalCreate(41, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template, 5, 2, "mj-accordion-panel", 34);
1116
+ i0.ɵɵconditionalCreate(42, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template, 11, 2, "mj-accordion-panel", 34);
1117
+ i0.ɵɵconditionalCreate(43, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Template, 5, 2, "mj-accordion-panel", 34);
1118
+ i0.ɵɵelementStart(44, "mj-accordion-panel", 25);
1119
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_accordion_panel_ExpandedChange_44_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.detailsPanelExpanded, $event) || (ctx_r2.detailsPanelExpanded = $event); return i0.ɵɵresetView($event); });
1120
+ i0.ɵɵtemplate(45, MJQueryFormComponentExtended_Conditional_1_ng_template_45_Template, 3, 0, "ng-template", 26);
1121
+ i0.ɵɵelementStart(46, "div", 35)(47, "div", 36)(48, "div", 37)(49, "label", 38);
1122
+ i0.ɵɵelement(50, "i", 39);
1123
+ i0.ɵɵtext(51, " Reusable ");
1124
+ i0.ɵɵelementEnd();
1125
+ i0.ɵɵconditionalCreate(52, MJQueryFormComponentExtended_Conditional_1_Conditional_52_Template, 3, 1)(53, MJQueryFormComponentExtended_Conditional_1_Conditional_53_Template, 3, 1, "div", 40);
1126
+ i0.ɵɵelementEnd();
1127
+ i0.ɵɵelementStart(54, "div", 37)(55, "label", 38);
1128
+ i0.ɵɵelement(56, "i", 41);
1129
+ i0.ɵɵtext(57, " Cache Enabled ");
1130
+ i0.ɵɵelementEnd();
1131
+ i0.ɵɵconditionalCreate(58, MJQueryFormComponentExtended_Conditional_1_Conditional_58_Template, 3, 1)(59, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Template, 3, 1, "div", 40);
1132
+ i0.ɵɵelementEnd();
1133
+ i0.ɵɵconditionalCreate(60, MJQueryFormComponentExtended_Conditional_1_Conditional_60_Template, 6, 1, "div", 37);
1134
+ i0.ɵɵelementStart(61, "div", 37)(62, "label", 38);
1135
+ i0.ɵɵelement(63, "i", 42);
1136
+ i0.ɵɵtext(64, " Audit Runs ");
1137
+ i0.ɵɵelementEnd();
1138
+ i0.ɵɵconditionalCreate(65, MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template, 3, 1)(66, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Template, 3, 1, "div", 40);
1139
+ i0.ɵɵelementEnd();
1140
+ i0.ɵɵelementStart(67, "div", 37)(68, "label", 38);
1141
+ i0.ɵɵelement(69, "i", 43);
1142
+ i0.ɵɵtext(70, " Template Usage ");
1143
+ i0.ɵɵelementEnd();
1144
+ i0.ɵɵconditionalCreate(71, MJQueryFormComponentExtended_Conditional_1_Conditional_71_Template, 1, 1, "mj-switch", 44)(72, MJQueryFormComponentExtended_Conditional_1_Conditional_72_Template, 3, 1, "div", 40);
1145
+ i0.ɵɵelementEnd();
1146
+ i0.ɵɵelementStart(73, "div", 37)(74, "label", 38);
1147
+ i0.ɵɵelement(75, "i", 45);
1148
+ i0.ɵɵtext(76, " Created ");
1149
+ i0.ɵɵelementEnd();
1150
+ i0.ɵɵelementStart(77, "div", 40);
1151
+ i0.ɵɵtext(78);
993
1152
  i0.ɵɵelementEnd()();
994
- i0.ɵɵelementStart(59, "div", 36)(60, "label", 37);
995
- i0.ɵɵelement(61, "i", 42);
996
- i0.ɵɵtext(62, " Last Updated ");
1153
+ i0.ɵɵelementStart(79, "div", 37)(80, "label", 38);
1154
+ i0.ɵɵelement(81, "i", 46);
1155
+ i0.ɵɵtext(82, " Last Updated ");
997
1156
  i0.ɵɵelementEnd();
998
- i0.ɵɵelementStart(63, "div", 40);
999
- i0.ɵɵtext(64);
1157
+ i0.ɵɵelementStart(83, "div", 40);
1158
+ i0.ɵɵtext(84);
1000
1159
  i0.ɵɵelementEnd()();
1001
- i0.ɵɵconditionalCreate(65, MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template, 6, 1, "div", 36);
1160
+ i0.ɵɵconditionalCreate(85, MJQueryFormComponentExtended_Conditional_1_Conditional_85_Template, 6, 1, "div", 37);
1002
1161
  i0.ɵɵelementEnd()()();
1003
- i0.ɵɵconditionalCreate(66, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Template, 5, 2, "mj-accordion-panel", 33);
1162
+ i0.ɵɵconditionalCreate(86, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Template, 5, 2, "mj-accordion-panel", 34);
1004
1163
  i0.ɵɵelementEnd()();
1005
- i0.ɵɵelementStart(67, "mj-query-run-dialog", 43);
1006
- i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_run_dialog_isVisibleChange_67_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.showRunDialog, $event) || (ctx_r2.showRunDialog = $event); return i0.ɵɵresetView($event); });
1007
- i0.ɵɵlistener("onClose", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_run_dialog_onClose_67_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRunDialogClose()); });
1164
+ i0.ɵɵelementStart(87, "mj-query-run-dialog", 47);
1165
+ i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_run_dialog_isVisibleChange_87_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.showRunDialog, $event) || (ctx_r2.showRunDialog = $event); return i0.ɵɵresetView($event); });
1166
+ i0.ɵɵlistener("onClose", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_run_dialog_onClose_87_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRunDialogClose()); });
1008
1167
  i0.ɵɵelementEnd();
1009
- i0.ɵɵelementStart(68, "mj-query-category-dialog", 44);
1010
- i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_category_dialog_isVisibleChange_68_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.showCategoryDialog, $event) || (ctx_r2.showCategoryDialog = $event); return i0.ɵɵresetView($event); });
1011
- i0.ɵɵlistener("onCategoryCreated", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_category_dialog_onCategoryCreated_68_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCategoryCreated($event)); });
1168
+ i0.ɵɵelementStart(88, "mj-query-category-dialog", 48);
1169
+ i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_category_dialog_isVisibleChange_88_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.showCategoryDialog, $event) || (ctx_r2.showCategoryDialog = $event); return i0.ɵɵresetView($event); });
1170
+ i0.ɵɵlistener("onCategoryCreated", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_category_dialog_onCategoryCreated_88_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCategoryCreated($event)); });
1012
1171
  i0.ɵɵelementEnd();
1013
1172
  } if (rf & 2) {
1014
1173
  const ctx_r2 = i0.ɵɵnextContext();
1015
1174
  i0.ɵɵadvance(2);
1016
- i0.ɵɵproperty("Form", ctx_r2)("Config", ctx_r2.ToolbarConfig);
1017
- i0.ɵɵadvance(6);
1018
- i0.ɵɵconditional(ctx_r2.EditMode ? 8 : 9);
1175
+ i0.ɵɵproperty("Form", ctx_r2)("Config", ctx_r2.ToolbarConfig)("IsSaving", ctx_r2.IsSaving);
1176
+ i0.ɵɵadvance();
1177
+ i0.ɵɵconditional(ctx_r2.IsSaving ? 3 : -1);
1178
+ i0.ɵɵadvance();
1179
+ i0.ɵɵclassProp("content-saving", ctx_r2.IsSaving);
1180
+ i0.ɵɵadvance(5);
1181
+ i0.ɵɵconditional(ctx_r2.EditMode ? 9 : 10);
1019
1182
  i0.ɵɵadvance(3);
1020
- i0.ɵɵconditional(ctx_r2.record.ID ? 11 : -1);
1183
+ i0.ɵɵconditional(ctx_r2.record.ID ? 12 : -1);
1021
1184
  i0.ɵɵadvance(5);
1022
- i0.ɵɵconditional(ctx_r2.EditMode ? 16 : 17);
1185
+ i0.ɵɵconditional(ctx_r2.EditMode ? 17 : 18);
1023
1186
  i0.ɵɵadvance(5);
1024
- i0.ɵɵconditional(ctx_r2.EditMode ? 21 : 22);
1187
+ i0.ɵɵconditional(ctx_r2.EditMode ? 22 : 23);
1025
1188
  i0.ɵɵadvance(2);
1026
- i0.ɵɵconditional(ctx_r2.EditMode || ctx_r2.record.Description ? 23 : -1);
1189
+ i0.ɵɵconditional(ctx_r2.EditMode || ctx_r2.record.Description ? 24 : -1);
1190
+ i0.ɵɵadvance();
1191
+ i0.ɵɵconditional(ctx_r2.record.Status && ctx_r2.record.Status !== "Approved" && !ctx_r2.EditMode ? 25 : -1);
1192
+ i0.ɵɵadvance();
1193
+ i0.ɵɵclassProp("content-saving", ctx_r2.IsSaving);
1027
1194
  i0.ɵɵadvance();
1028
- i0.ɵɵconditional(ctx_r2.record.Status && ctx_r2.record.Status !== "Approved" && !ctx_r2.EditMode ? 24 : -1);
1029
- i0.ɵɵadvance(2);
1030
1195
  i0.ɵɵtwoWayProperty("Expanded", ctx_r2.sqlPanelExpanded);
1031
1196
  i0.ɵɵadvance(7);
1032
1197
  i0.ɵɵproperty("ngClass", ctx_r2.showFiltersHelp ? "fa-chevron-up" : "fa-chevron-down");
1033
1198
  i0.ɵɵadvance(2);
1034
1199
  i0.ɵɵproperty("language", "sql");
1035
1200
  i0.ɵɵadvance(2);
1036
- i0.ɵɵconditional(ctx_r2.showFiltersHelp ? 37 : -1);
1201
+ i0.ɵɵconditional(ctx_r2.showFiltersHelp ? 38 : -1);
1037
1202
  i0.ɵɵadvance();
1038
- i0.ɵɵconditional(ctx_r2.record.TechnicalDescription || ctx_r2.EditMode ? 38 : -1);
1039
- i0.ɵɵadvance();
1040
- i0.ɵɵconditional(ctx_r2.record.IsSaved ? 39 : -1);
1203
+ i0.ɵɵconditional(ctx_r2.record.TechnicalDescription || ctx_r2.EditMode ? 39 : -1);
1041
1204
  i0.ɵɵadvance();
1042
1205
  i0.ɵɵconditional(ctx_r2.record.IsSaved ? 40 : -1);
1043
1206
  i0.ɵɵadvance();
1044
- i0.ɵɵconditional(ctx_r2.record.IsSaved && ctx_r2.DependentQueries.length > 0 ? 41 : -1);
1207
+ i0.ɵɵconditional(ctx_r2.record.IsSaved ? 41 : -1);
1208
+ i0.ɵɵadvance();
1209
+ i0.ɵɵconditional(ctx_r2.record.IsSaved && ctx_r2.DependentQueries.length > 0 ? 42 : -1);
1045
1210
  i0.ɵɵadvance();
1046
- i0.ɵɵconditional(ctx_r2.record.IsSaved ? 42 : -1);
1211
+ i0.ɵɵconditional(ctx_r2.record.IsSaved ? 43 : -1);
1047
1212
  i0.ɵɵadvance();
1048
1213
  i0.ɵɵtwoWayProperty("Expanded", ctx_r2.detailsPanelExpanded);
1049
1214
  i0.ɵɵadvance(8);
1050
- i0.ɵɵconditional(ctx_r2.EditMode ? 51 : 52);
1215
+ i0.ɵɵconditional(ctx_r2.EditMode ? 52 : 53);
1216
+ i0.ɵɵadvance(6);
1217
+ i0.ɵɵconditional(ctx_r2.EditMode ? 58 : 59);
1218
+ i0.ɵɵadvance(2);
1219
+ i0.ɵɵconditional(ctx_r2.record.CacheEnabled ? 60 : -1);
1220
+ i0.ɵɵadvance(5);
1221
+ i0.ɵɵconditional(ctx_r2.EditMode ? 65 : 66);
1222
+ i0.ɵɵadvance(6);
1223
+ i0.ɵɵconditional(ctx_r2.EditMode ? 71 : 72);
1051
1224
  i0.ɵɵadvance(7);
1052
1225
  i0.ɵɵtextInterpolate(ctx_r2.formatDate(ctx_r2.record.__mj_CreatedAt));
1053
1226
  i0.ɵɵadvance(6);
1054
1227
  i0.ɵɵtextInterpolate(ctx_r2.formatDate(ctx_r2.record.__mj_UpdatedAt));
1055
1228
  i0.ɵɵadvance();
1056
- i0.ɵɵconditional(ctx_r2.record.QualityRank != null ? 65 : -1);
1229
+ i0.ɵɵconditional(ctx_r2.record.QualityRank != null ? 85 : -1);
1057
1230
  i0.ɵɵadvance();
1058
- i0.ɵɵconditional(ctx_r2.record.IsSaved ? 66 : -1);
1231
+ i0.ɵɵconditional(ctx_r2.record.IsSaved ? 86 : -1);
1059
1232
  i0.ɵɵadvance();
1060
1233
  i0.ɵɵproperty("query", ctx_r2.record)("parameters", ctx_r2.queryParameters);
1061
1234
  i0.ɵɵtwoWayProperty("isVisible", ctx_r2.showRunDialog);
@@ -1078,6 +1251,7 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1078
1251
  this.showRunDialog = false;
1079
1252
  this.showCategoryDialog = false;
1080
1253
  this.categoryPathDisplay = '';
1254
+ this.IsSaving = false;
1081
1255
  // Expansion panel states
1082
1256
  this.sqlPanelExpanded = true;
1083
1257
  this.parametersPanelExpanded = false;
@@ -1093,6 +1267,16 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1093
1267
  ];
1094
1268
  this.categories = [];
1095
1269
  this.categoryTreeData = [];
1270
+ /** Tree dropdown config for Query Categories */
1271
+ this.CategoryBranchConfig = {
1272
+ EntityName: 'MJ: Query Categories',
1273
+ DisplayField: 'Name',
1274
+ IDField: 'ID',
1275
+ ParentIDField: 'ParentID',
1276
+ DefaultIcon: 'fa-solid fa-folder',
1277
+ DescriptionField: 'Description',
1278
+ OrderBy: 'Name ASC'
1279
+ };
1096
1280
  // Status options — matches MJQueryEntity.Status type from database CHECK constraint
1097
1281
  this.statusOptions = [
1098
1282
  { text: 'Pending', value: 'Pending' },
@@ -1121,6 +1305,22 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1121
1305
  this.isUpdatingEditorValue = false;
1122
1306
  this.isInitialLoad = true;
1123
1307
  }
1308
+ /** CategoryID as CompositeKey for tree dropdown binding */
1309
+ get CategoryIDAsKey() {
1310
+ return this.record?.CategoryID ? CompositeKey.FromID(this.record.CategoryID) : null;
1311
+ }
1312
+ /** Handle tree dropdown category selection */
1313
+ OnCategoryTreeChange(value) {
1314
+ if (!this.record)
1315
+ return;
1316
+ if (value instanceof CompositeKey && value.HasValue) {
1317
+ this.record.CategoryID = value.KeyValuePairs[0]?.Value ?? null;
1318
+ }
1319
+ else {
1320
+ this.record.CategoryID = null;
1321
+ }
1322
+ this.updateCategoryPathDisplay();
1323
+ }
1124
1324
  /**
1125
1325
  * Gets the QueryInfo metadata object for the current record, used to access Dependents.
1126
1326
  */
@@ -1511,16 +1711,26 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1511
1711
  return;
1512
1712
  }
1513
1713
  try {
1514
- const deleted = await param.Delete();
1714
+ // Reload the parameter entity fresh to ensure we have a clean copy
1715
+ // not tied to any form transaction state
1716
+ const md = new Metadata();
1717
+ const freshParam = await md.GetEntityObject('MJ: Query Parameters');
1718
+ const loaded = await freshParam.Load(param.ID);
1719
+ if (!loaded) {
1720
+ MJNotificationService.Instance.CreateSimpleNotification('Could not load parameter record. It may have already been deleted.', 'warning', 3000);
1721
+ // Remove from local list anyway since it doesn't exist
1722
+ this.removeParameterFromList(param);
1723
+ return;
1724
+ }
1725
+ const deleted = await freshParam.Delete();
1515
1726
  if (deleted) {
1516
- const index = this.queryParameters.indexOf(param);
1517
- if (index > -1) {
1518
- this.queryParameters.splice(index, 1);
1519
- }
1727
+ this.removeParameterFromList(param);
1520
1728
  MJNotificationService.Instance.CreateSimpleNotification('Parameter deleted successfully', 'success', 3000);
1521
1729
  }
1522
1730
  else {
1523
- MJNotificationService.Instance.CreateSimpleNotification('Failed to delete parameter', 'error', 3000);
1731
+ const errorDetail = freshParam.LatestResult?.CompleteMessage ?? 'Unknown reason';
1732
+ console.error('Failed to delete parameter:', errorDetail);
1733
+ MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete parameter: ${errorDetail}`, 'error', 5000);
1524
1734
  }
1525
1735
  }
1526
1736
  catch (error) {
@@ -1528,6 +1738,13 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1528
1738
  MJNotificationService.Instance.CreateSimpleNotification('Error deleting parameter', 'error', 3000);
1529
1739
  }
1530
1740
  }
1741
+ removeParameterFromList(param) {
1742
+ const index = this.queryParameters.indexOf(param);
1743
+ if (index > -1) {
1744
+ this.queryParameters.splice(index, 1);
1745
+ }
1746
+ this.cdr.detectChanges();
1747
+ }
1531
1748
  /**
1532
1749
  * Handle category creation from dialog
1533
1750
  */
@@ -1549,6 +1766,18 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1549
1766
  return d.toLocaleDateString() + ' ' + d.toLocaleTimeString();
1550
1767
  }
1551
1768
  async SaveRecord(StopEditModeAfterSave = true) {
1769
+ this.IsSaving = true;
1770
+ this.cdr.markForCheck();
1771
+ try {
1772
+ return await this.internalSaveRecord(StopEditModeAfterSave);
1773
+ }
1774
+ finally {
1775
+ await Promise.resolve(); // microtask to avoid ExpressionChangedAfterItHasBeenCheckedError
1776
+ this.IsSaving = false;
1777
+ this.cdr.markForCheck();
1778
+ }
1779
+ }
1780
+ async internalSaveRecord(StopEditModeAfterSave) {
1552
1781
  // Handle category creation before saving query
1553
1782
  if (this.record.CategoryID && !this.categoryOptions.find(opt => opt.value === this.record.CategoryID)) {
1554
1783
  if (this.isDuplicateCategory(this.record.CategoryID)) {
@@ -1722,12 +1951,25 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1722
1951
  return;
1723
1952
  }
1724
1953
  try {
1725
- const deleted = await field.Delete();
1954
+ const md = new Metadata();
1955
+ const freshField = await md.GetEntityObject('MJ: Query Fields');
1956
+ const loaded = await freshField.Load(field.ID);
1957
+ if (!loaded) {
1958
+ this.queryFields = this.queryFields.filter(f => !UUIDsEqual(f.ID, field.ID));
1959
+ this.cdr.detectChanges();
1960
+ return;
1961
+ }
1962
+ const deleted = await freshField.Delete();
1726
1963
  if (deleted) {
1727
1964
  this.queryFields = this.queryFields.filter(f => !UUIDsEqual(f.ID, field.ID));
1728
1965
  this.updateUnsavedChangesFlag();
1729
1966
  MJNotificationService.Instance.CreateSimpleNotification('Field deleted successfully', 'success', 3000);
1730
1967
  }
1968
+ else {
1969
+ const errorDetail = freshField.LatestResult?.CompleteMessage ?? 'Unknown reason';
1970
+ console.error('Failed to delete field:', errorDetail);
1971
+ MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete field: ${errorDetail}`, 'error', 5000);
1972
+ }
1731
1973
  }
1732
1974
  catch (error) {
1733
1975
  console.error('Error deleting field:', error);
@@ -1759,12 +2001,25 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1759
2001
  return;
1760
2002
  }
1761
2003
  try {
1762
- const deleted = await entity.Delete();
2004
+ const md = new Metadata();
2005
+ const freshEntity = await md.GetEntityObject('MJ: Query Entities');
2006
+ const loaded = await freshEntity.Load(entity.ID);
2007
+ if (!loaded) {
2008
+ this.queryEntities = this.queryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));
2009
+ this.cdr.detectChanges();
2010
+ return;
2011
+ }
2012
+ const deleted = await freshEntity.Delete();
1763
2013
  if (deleted) {
1764
2014
  this.queryEntities = this.queryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));
1765
2015
  this.updateUnsavedChangesFlag();
1766
2016
  MJNotificationService.Instance.CreateSimpleNotification('Entity deleted successfully', 'success', 3000);
1767
2017
  }
2018
+ else {
2019
+ const errorDetail = freshEntity.LatestResult?.CompleteMessage ?? 'Unknown reason';
2020
+ console.error('Failed to delete entity:', errorDetail);
2021
+ MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete entity: ${errorDetail}`, 'error', 5000);
2022
+ }
1768
2023
  }
1769
2024
  catch (error) {
1770
2025
  console.error('Error deleting entity:', error);
@@ -1792,14 +2047,14 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1792
2047
  } if (rf & 2) {
1793
2048
  let _t;
1794
2049
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sqlEditor = _t.first);
1795
- } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [["form", "ngForm"], ["sqlEditor", ""], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [3, "Form", "Config"], [1, "query-header"], [1, "query-header-content"], [1, "query-header-top"], [1, "query-name-section"], [1, "fa-solid", "fa-database", "query-title-icon"], ["name", "queryName", "placeholder", "Enter query name...", 1, "mj-input", "query-name-input", 3, "ngModel"], [1, "query-name-display"], [1, "query-header-actions"], ["mjButton", "", "variant", "primary", "title", "Run Query", 1, "run-query-btn", 3, "disabled"], [1, "query-meta-row"], [1, "query-meta-item"], [1, "meta-label"], ["name", "categoryId", "TextField", "text", "ValueField", "value", "Placeholder", "Select category...", 1, "meta-dropdown", 3, "ngModel", "Data", "ValuePrimitive"], [1, "meta-value"], ["name", "status", "TextField", "text", "ValueField", "value", 1, "meta-dropdown", "status-dropdown", 3, "ngModel", "Data", "ValuePrimitive"], [1, "status-pill", 3, "background"], [1, "query-description-row"], [1, "status-warning-banner", 3, "border-left-color"], [1, "query-content"], [1, "query-panel", 3, "ExpandedChange", "Expanded"], ["mjAccordionTitle", ""], [1, "sql-panel-toolbar", 2, "display", "flex", "justify-content", "flex-end", "padding", "4px 0 8px"], ["type", "button", "mjButton", "", "variant", "flat", "title", "Show/hide SQL filters help", 1, "filters-help-btn", 3, "click"], [1, "fa-solid", "fa-question-circle"], [1, "fa-solid", 3, "ngClass"], [1, "sql-panel-content"], [1, "sql-editor", 3, "change", "CompositionTokenClick", "language"], [1, "filters-help"], [1, "query-panel", 3, "Expanded"], [1, "panel-body"], [1, "details-grid"], [1, "detail-item"], [1, "detail-label"], [1, "fa-solid", "fa-file-code"], ["name", "usesTemplate", 3, "ngModel"], [1, "detail-value"], [1, "fa-solid", "fa-calendar-plus"], [1, "fa-solid", "fa-calendar-check"], [3, "isVisibleChange", "onClose", "query", "parameters", "isVisible"], [3, "isVisibleChange", "onCategoryCreated", "isVisible"], ["name", "queryName", "placeholder", "Enter query name...", 1, "mj-input", "query-name-input", 3, "ngModelChange", "ngModel"], ["mjButton", "", "variant", "primary", "title", "Run Query", 1, "run-query-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], ["name", "categoryId", "TextField", "text", "ValueField", "value", "Placeholder", "Select category...", 1, "meta-dropdown", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["name", "status", "TextField", "text", "ValueField", "value", 1, "meta-dropdown", "status-dropdown", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], [1, "status-pill"], [1, "fa-solid"], ["name", "description", "rows", "2", "placeholder", "Enter query description...", 1, "mj-input", "query-description-input", 3, "ngModel"], [1, "query-description-text"], ["name", "description", "rows", "2", "placeholder", "Enter query description...", 1, "mj-input", "query-description-input", 3, "ngModelChange", "ngModel"], [1, "status-warning-banner"], [1, "panel-title-row"], [1, "panel-title"], [1, "fa-solid", "fa-code", "panel-icon", "sql-icon"], [1, "panel-badge", "defined"], [1, "filters-help-title"], [1, "fa-solid", "fa-filter"], [1, "filters-grid"], [1, "filter-card"], [1, "filter-name"], [1, "filter-description"], [1, "filter-syntax"], [1, "filter-notes"], [1, "technical-description-view"], [1, "fa-solid", "fa-book", "panel-icon"], ["name", "technicalDescription", "rows", "8", "placeholder", "Technical documentation of the query logic, performance considerations, and parameter usage. Supports markdown and mermaid diagrams.", 1, "mj-input", "technical-description-textarea", 3, "ngModelChange", "ngModel"], [1, "technical-description-preview"], [1, "preview-label"], [1, "fa-solid", "fa-eye"], [3, "data", "enableMermaid", "enableHighlight", "enableCollapsibleHeadings", "enableSmartypants"], [1, "panel-loading"], [1, "fa-solid", "fa-sliders", "panel-icon"], [1, "panel-badge", "count"], ["text", "Loading parameters..."], [1, "empty-state"], [1, "fa-solid", "fa-sliders", "empty-state-icon"], [1, "empty-state-title"], [1, "empty-state-text"], ["type", "button", 1, "add-item-btn"], ["type", "button", 1, "add-item-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "panel-toolbar"], [1, "card-grid"], [1, "item-card", 3, "required"], [1, "item-card", 3, "click"], [1, "item-card-header"], [1, "item-name"], [1, "fa-solid", "fa-at", "item-name-icon", "param-icon"], [1, "item-badges"], [1, "item-badge", "required"], [1, "item-card-body"], [1, "item-description"], [1, "item-meta"], [1, "meta-tag"], [1, "item-actions"], [1, "meta-code"], [1, "item-actions", 3, "click"], ["type", "button", "title", "Edit parameter", 1, "item-action-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["type", "button", "title", "Delete parameter", 1, "item-action-btn", "delete", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "fa-solid", "fa-table", "panel-icon"], ["text", "Loading fields..."], [1, "fa-solid", "fa-table", "empty-state-icon"], [1, "item-card"], [1, "fa-solid", "fa-columns", "item-name-icon", "field-icon"], [1, "item-badge", "type"], [1, "item-badge", "sequence"], [1, "fa-solid", "fa-code"], [1, "item-card-actions"], ["type", "button", "title", "Delete field", 1, "item-action-btn", "delete", 3, "click"], [1, "dependents-description"], [1, "item-card", "dependent-card"], [1, "fa-solid", "fa-arrow-left", "panel-icon", "dependents-icon"], [1, "item-card", "dependent-card", 3, "click"], [1, "fa-solid", "fa-arrow-left", "item-name-icon", "dependent-query-icon"], [1, "item-card-footer"], [1, "open-link"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-database", "panel-icon"], ["text", "Loading entities..."], [1, "fa-solid", "fa-database", "empty-state-icon"], [1, "fa-solid", "fa-table", "item-name-icon", "entity-icon"], [1, "entity-dropdown-wrapper"], ["TextField", "text", "ValueField", "id", "Placeholder", "Select entity...", 1, "entity-dropdown", 3, "ngModelChange", "ngModel", "name", "Data", "ValuePrimitive"], [1, "fa-solid", "fa-database"], ["type", "button", "title", "Delete entity", 1, "item-action-btn", "delete", 3, "click"], [1, "fa-solid", "fa-info-circle", "panel-icon"], ["name", "usesTemplate", 3, "ngModelChange", "ngModel"], [1, "detail-tag", "positive"], [1, "detail-tag", "neutral"], [1, "fa-solid", "fa-check"], [1, "fa-solid", "fa-times"], [1, "fa-solid", "fa-star"], [1, "fa-solid", "fa-shield-alt", "panel-icon"], ["text", "Loading permissions..."], [1, "fa-solid", "fa-shield-alt", "empty-state-icon"], [3, "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"], [1, "permissions-list"], [1, "permission-card"], [1, "fa-solid", "fa-users", "permission-icon"], [1, "permission-info"], [1, "permission-role"], [1, "permission-type"], [1, "permission-badge"]], template: function MJQueryFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
2050
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [["form", "ngForm"], ["sqlEditor", ""], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [3, "Form", "Config", "IsSaving"], [1, "saving-overlay"], [1, "query-header"], [1, "query-header-content"], [1, "query-header-top"], [1, "query-name-section"], [1, "fa-solid", "fa-database", "query-title-icon"], ["name", "queryName", "placeholder", "Enter query name...", 1, "mj-input", "query-name-input", 3, "ngModel"], [1, "query-name-display"], [1, "query-header-actions"], ["mjButton", "", "variant", "primary", "title", "Run Query", 1, "run-query-btn", 3, "disabled"], [1, "query-meta-row"], [1, "query-meta-item"], [1, "meta-label"], [1, "meta-dropdown", 3, "BranchConfig", "Value", "SelectableTypes", "SelectionMode", "Placeholder", "EnableSearch", "Clearable"], [1, "meta-value"], ["name", "status", "TextField", "text", "ValueField", "value", 1, "meta-dropdown", "status-dropdown", 3, "ngModel", "Data", "ValuePrimitive"], [1, "status-pill", 3, "background"], [1, "query-description-row"], [1, "status-warning-banner", 3, "border-left-color"], [1, "query-content"], [1, "query-panel", 3, "ExpandedChange", "Expanded"], ["mjAccordionTitle", ""], [1, "sql-panel-toolbar", 2, "display", "flex", "justify-content", "flex-end", "padding", "4px 0 8px"], ["type", "button", "mjButton", "", "variant", "flat", "title", "Show/hide SQL filters help", 1, "filters-help-btn", 3, "click"], [1, "fa-solid", "fa-question-circle"], [1, "fa-solid", 3, "ngClass"], [1, "sql-panel-content"], [1, "sql-editor", 3, "change", "CompositionTokenClick", "language"], [1, "filters-help"], [1, "query-panel", 3, "Expanded"], [1, "panel-body"], [1, "details-grid"], [1, "detail-item"], [1, "detail-label"], [1, "fa-solid", "fa-puzzle-piece"], [1, "detail-value"], [1, "fa-solid", "fa-bolt"], [1, "fa-solid", "fa-clipboard-list"], [1, "fa-solid", "fa-file-code"], ["name", "usesTemplate", 3, "ngModel"], [1, "fa-solid", "fa-calendar-plus"], [1, "fa-solid", "fa-calendar-check"], [3, "isVisibleChange", "onClose", "query", "parameters", "isVisible"], [3, "isVisibleChange", "onCategoryCreated", "isVisible"], [1, "fa-solid", "fa-spinner", "fa-spin", "saving-spinner"], ["name", "queryName", "placeholder", "Enter query name...", 1, "mj-input", "query-name-input", 3, "ngModelChange", "ngModel"], ["mjButton", "", "variant", "primary", "title", "Run Query", 1, "run-query-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], [1, "meta-dropdown", 3, "ValueChange", "BranchConfig", "Value", "SelectableTypes", "SelectionMode", "Placeholder", "EnableSearch", "Clearable"], ["name", "status", "TextField", "text", "ValueField", "value", 1, "meta-dropdown", "status-dropdown", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], [1, "status-pill"], [1, "fa-solid"], ["name", "description", "rows", "2", "placeholder", "Enter query description...", 1, "mj-input", "query-description-input", 3, "ngModel"], [1, "query-description-text"], ["name", "description", "rows", "2", "placeholder", "Enter query description...", 1, "mj-input", "query-description-input", 3, "ngModelChange", "ngModel"], [1, "status-warning-banner"], [1, "panel-title-row"], [1, "panel-title"], [1, "fa-solid", "fa-code", "panel-icon", "sql-icon"], [1, "panel-badge", "defined"], [1, "filters-help-title"], [1, "fa-solid", "fa-filter"], [1, "filters-grid"], [1, "filter-card"], [1, "filter-name"], [1, "filter-description"], [1, "filter-syntax"], [1, "filter-notes"], [1, "technical-description-view"], [1, "fa-solid", "fa-book", "panel-icon"], ["name", "technicalDescription", "rows", "8", "placeholder", "Technical documentation of the query logic, performance considerations, and parameter usage. Supports markdown and mermaid diagrams.", 1, "mj-input", "technical-description-textarea", 3, "ngModelChange", "ngModel"], [1, "technical-description-preview"], [1, "preview-label"], [1, "fa-solid", "fa-eye"], [3, "data", "enableMermaid", "enableHighlight", "enableCollapsibleHeadings", "enableSmartypants"], [1, "panel-loading"], [1, "fa-solid", "fa-sliders", "panel-icon"], [1, "panel-badge", "count"], ["text", "Loading parameters..."], [1, "empty-state"], [1, "fa-solid", "fa-sliders", "empty-state-icon"], [1, "empty-state-title"], [1, "empty-state-text"], ["type", "button", 1, "add-item-btn"], ["type", "button", 1, "add-item-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "panel-toolbar"], [1, "card-grid"], [1, "item-card", 3, "required"], [1, "item-card", 3, "click"], [1, "item-card-header"], [1, "item-name"], [1, "fa-solid", "fa-at", "item-name-icon", "param-icon"], [1, "item-badges"], [1, "item-badge", "required"], [1, "item-card-body"], [1, "item-description"], [1, "item-meta"], [1, "meta-tag"], [1, "item-actions"], [1, "meta-code"], [1, "item-actions", 3, "click"], ["type", "button", "title", "Edit parameter", 1, "item-action-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["type", "button", "title", "Delete parameter", 1, "item-action-btn", "delete", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "fa-solid", "fa-table", "panel-icon"], ["text", "Loading fields..."], [1, "fa-solid", "fa-table", "empty-state-icon"], [1, "item-card"], [1, "fa-solid", "fa-columns", "item-name-icon", "field-icon"], [1, "item-badge", "type"], [1, "item-badge", "sequence"], [1, "fa-solid", "fa-code"], [1, "item-card-actions"], ["type", "button", "title", "Delete field", 1, "item-action-btn", "delete", 3, "click"], [1, "dependents-description"], [1, "item-card", "dependent-card"], [1, "fa-solid", "fa-arrow-left", "panel-icon", "dependents-icon"], [1, "item-card", "dependent-card", 3, "click"], [1, "fa-solid", "fa-arrow-left", "item-name-icon", "dependent-query-icon"], [1, "item-card-footer"], [1, "open-link"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-database", "panel-icon"], ["text", "Loading entities..."], [1, "fa-solid", "fa-database", "empty-state-icon"], [1, "fa-solid", "fa-table", "item-name-icon", "entity-icon"], [1, "entity-dropdown-wrapper"], ["TextField", "text", "ValueField", "id", "Placeholder", "Select entity...", 1, "entity-dropdown", 3, "ngModelChange", "ngModel", "name", "Data", "ValuePrimitive"], [1, "fa-solid", "fa-database"], ["type", "button", "title", "Delete entity", 1, "item-action-btn", "delete", 3, "click"], [1, "fa-solid", "fa-info-circle", "panel-icon"], ["name", "reusable", 3, "ngModelChange", "ngModel"], [1, "detail-hint"], [1, "detail-tag", "positive"], [1, "detail-tag", "neutral"], [1, "fa-solid", "fa-check"], [1, "fa-solid", "fa-times"], ["name", "cacheEnabled", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-clock"], ["type", "number", "name", "cacheTTLMinutes", "min", "1", "placeholder", "Default", 1, "mj-input", "detail-input-narrow", 3, "ngModelChange", "ngModel"], ["name", "auditQueryRuns", 3, "ngModelChange", "ngModel"], ["name", "usesTemplate", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-star"], [1, "fa-solid", "fa-shield-alt", "panel-icon"], ["text", "Loading permissions..."], [1, "fa-solid", "fa-shield-alt", "empty-state-icon"], [3, "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"], [1, "permissions-list"], [1, "permission-card"], [1, "fa-solid", "fa-users", "permission-icon"], [1, "permission-info"], [1, "permission-role"], [1, "permission-type"], [1, "permission-badge"]], template: function MJQueryFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
1796
2051
  i0.ɵɵelementStart(0, "div", 2);
1797
- i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Template, 69, 27);
2052
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Template, 89, 37);
1798
2053
  i0.ɵɵelementEnd();
1799
2054
  } if (rf & 2) {
1800
2055
  i0.ɵɵadvance();
1801
2056
  i0.ɵɵconditional(ctx.record ? 1 : -1);
1802
- } }, dependencies: [i1.NgClass, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.NgModel, i2.NgForm, i3.MJButtonDirective, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i3.MJDropdownComponent, i3.MJSwitchComponent, i4.MjFormToolbarComponent, i4.ExplorerEntityDataGridComponent, i5.CodeEditorComponent, i6.LoadingComponent, i7.MarkdownComponent, i8.QueryRunDialogComponent, i9.QueryCategoryDialogComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\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-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}", "\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.record-form[_ngcontent-%COMP%] {\n min-height: 0 !important;\n}\n\n\n\n\n\n\n.query-header[_ngcontent-%COMP%] {\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n border-bottom: none;\n padding: 0;\n}\n\n.query-header-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 20px;\n}\n\n.query-header-top[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.query-name-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.query-title-icon[_ngcontent-%COMP%] {\n color: rgba(255, 255, 255, 0.85);\n font-size: 1.3em;\n flex-shrink: 0;\n}\n\n.query-name-input[_ngcontent-%COMP%] {\n font-size: 1.2em;\n font-weight: 600;\n min-width: 300px;\n flex: 1;\n}\n\n.query-name-display[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-inverse, white);\n font-weight: 600;\n font-size: 1.2em;\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.query-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.run-query-btn[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n\n\n.query-meta-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.query-meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: rgba(255, 255, 255, 0.75);\n font-size: var(--mj-text-sm);\n min-width: 60px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n color: rgba(255, 255, 255, 0.95);\n font-size: var(--mj-text-sm);\n}\n\n.meta-dropdown[_ngcontent-%COMP%] {\n min-width: 200px;\n}\n\n.status-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: var(--mj-radius-xl);\n color: var(--mj-text-inverse, white);\n font-size: var(--mj-text-sm);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n}\n\n\n\n.query-description-row[_ngcontent-%COMP%] {\n margin-top: 2px;\n}\n\n.query-description-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.query-description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: rgba(255, 255, 255, 0.8);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n}\n\n\n\n\n\n\n.status-warning-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n margin: 0;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-left: 4px solid var(--mj-status-warning);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.status-warning-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base);\n flex-shrink: 0;\n}\n\n.status-warning-banner[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n\n\n\n\n\n.query-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n padding: 16px;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n}\n\n\n\n\n\n\n.query-panel[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n .query-content mj-accordion-panel .mj-accordion-panel {\n border: none !important;\n border-radius: var(--mj-radius-md) !important;\n margin-bottom: 12px !important;\n box-shadow: var(--mj-shadow-sm) !important;\n background: var(--mj-bg-surface) !important;\n overflow: hidden !important;\n}\n\n .query-content .mj-accordion-header {\n background: var(--mj-bg-surface) !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: var(--mj-radius-md) !important;\n color: var(--mj-text-primary) !important;\n font-weight: 600 !important;\n font-size: var(--mj-text-sm) !important;\n transition: background 0.15s ease !important;\n}\n\n .query-content .mj-accordion-header:hover {\n background: var(--mj-bg-surface-card) !important;\n}\n\n .query-content .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n border-radius: var(--mj-radius-md) var(--mj-radius-md) 0 0 !important;\n}\n\n .query-content .mj-accordion-body {\n padding: 0 !important;\n border: none !important;\n background: var(--mj-bg-surface) !important;\n border-radius: 0 0 var(--mj-radius-md) var(--mj-radius-md) !important;\n}\n\n\n\n\n\n\n.panel-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-icon[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n opacity: 0.7;\n}\n\n.sql-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n .mj-accordion-panel--expanded .panel-icon {\n color: rgba(255, 255, 255, 0.85) !important;\n opacity: 1;\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n}\n\n.panel-badge.defined[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n.panel-badge.count[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n .mj-accordion-panel--expanded .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n .mj-accordion-panel--expanded .panel-badge.defined {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n.filters-help-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-right: 8px;\n font-size: var(--mj-text-xs);\n}\n\n\n\n\n\n\n.panel-body[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.panel-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.panel-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 0 20px 12px;\n}\n\n\n\n\n\n\n.sql-panel-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.sql-editor[_ngcontent-%COMP%] {\n flex: 1;\n height: 400px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n margin: 16px;\n}\n\n\n\n.filters-help[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: var(--mj-text-sm);\n}\n\n.filters-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 10px;\n}\n\n.filter-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.filter-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.filter-name[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: var(--mj-brand-primary);\n margin-bottom: 4px;\n}\n\n.filter-description[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.filter-syntax[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-size: var(--mj-text-xs);\n background: var(--mj-bg-surface-card);\n padding: 6px;\n border-radius: var(--mj-radius-sm);\n margin-bottom: 4px;\n}\n\n.filter-notes[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n\n\n\n\n\n.card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n gap: 12px;\n padding: 0 20px 20px;\n}\n\n.item-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px;\n transition: all 0.15s ease;\n cursor: pointer;\n position: relative;\n}\n\n.item-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.item-card.required[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.item-card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 10px;\n}\n\n.item-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n}\n\n.item-name-icon.param-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.field-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.entity-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.item-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n}\n\n.item-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.item-badge.type[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.item-badge.sequence[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-brand-primary) 80%, purple);\n}\n\n.item-card-body[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n}\n\n.item-description[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: var(--mj-text-xs);\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 1px 4px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n}\n\n\n\n.item-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.item-card[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.item-card-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n margin-top: 8px;\n}\n\n.item-action-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.item-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n.item-action-btn.delete[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n\n\n.entity-dropdown-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n margin-left: 12px;\n}\n\n.entity-dropdown[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 16px;\n padding: 16px 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 6px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.detail-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-sm);\n}\n\n.detail-tag.positive[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.detail-tag.neutral[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.permissions-list[_ngcontent-%COMP%] {\n padding: 0 20px;\n}\n\n.permission-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon[_ngcontent-%COMP%] {\n font-size: 1.3em;\n color: var(--mj-brand-primary);\n}\n\n.permission-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.permission-role[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.permission-type[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n}\n\n.permission-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--mj-brand-primary);\n color: white;\n padding: 4px 10px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n font-weight: 500;\n}\n\n\n\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.empty-state-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: var(--mj-text-primary);\n}\n\n.empty-state-title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base);\n font-weight: 600;\n margin-bottom: 6px;\n color: var(--mj-text-secondary);\n}\n\n.empty-state-text[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n margin-bottom: 16px;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.add-item-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n font-size: var(--mj-text-sm);\n}\n\n.add-item-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n box-shadow: 0 2px 6px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n\n\n\n\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n\n\n\n.technical-description-textarea[_ngcontent-%COMP%] {\n width: 100%;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 13px;\n}\n\n.technical-description-preview[_ngcontent-%COMP%] {\n margin-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n padding-top: 12px;\n}\n\n.preview-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.technical-description-view[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n padding: 12px 16px;\n}\n\n\n\n.dependents-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.dependents-description[_ngcontent-%COMP%] {\n padding: 0 20px 12px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.dependents-description[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n.dependent-card[_ngcontent-%COMP%] {\n cursor: pointer;\n border-left: 3px solid var(--mj-status-warning) !important;\n}\n\n.dependent-card[_ngcontent-%COMP%]:hover {\n border-left-color: var(--mj-status-warning-text) !important;\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface)) !important;\n}\n\n.dependent-query-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning) !important;\n}\n\n.item-card-footer[_ngcontent-%COMP%] {\n padding-top: 8px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n margin-top: 8px;\n}\n\n.open-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.dependent-card[_ngcontent-%COMP%]:hover .open-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary-hover);\n}"] }); }
2057
+ } }, dependencies: [i1.NgClass, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.MinValidator, i2.NgModel, i2.NgForm, i3.MJButtonDirective, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i3.MJDropdownComponent, i3.MJSwitchComponent, i4.MjFormToolbarComponent, i4.ExplorerEntityDataGridComponent, i5.CodeEditorComponent, i6.LoadingComponent, i7.MarkdownComponent, i8.TreeDropdownComponent, i9.QueryRunDialogComponent, i10.QueryCategoryDialogComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\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-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}", "\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.record-form[_ngcontent-%COMP%] {\n min-height: 0 !important;\n}\n\n\n\n\n\n\n.saving-overlay[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 16px;\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.saving-spinner[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.content-saving[_ngcontent-%COMP%] {\n pointer-events: none;\n opacity: 0.6;\n}\n\n\n\n\n\n\n.query-header[_ngcontent-%COMP%] {\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n border-bottom: none;\n padding: 0;\n}\n\n.query-header-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 20px;\n}\n\n.query-header-top[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.query-name-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.query-title-icon[_ngcontent-%COMP%] {\n color: rgba(255, 255, 255, 0.85);\n font-size: 1.3em;\n flex-shrink: 0;\n}\n\n.query-name-input[_ngcontent-%COMP%] {\n font-size: 1.2em;\n font-weight: 600;\n min-width: 300px;\n flex: 1;\n}\n\n.query-name-display[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-inverse, white);\n font-weight: 600;\n font-size: 1.2em;\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.query-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.run-query-btn[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n\n\n.query-meta-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.query-meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: rgba(255, 255, 255, 0.75);\n font-size: var(--mj-text-sm);\n min-width: 60px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n color: rgba(255, 255, 255, 0.95);\n font-size: var(--mj-text-sm);\n}\n\n.meta-dropdown[_ngcontent-%COMP%] {\n min-width: 200px;\n}\n\n.status-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: var(--mj-radius-xl);\n color: var(--mj-text-inverse, white);\n font-size: var(--mj-text-sm);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n}\n\n\n\n.query-description-row[_ngcontent-%COMP%] {\n margin-top: 2px;\n}\n\n.query-description-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.query-description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: rgba(255, 255, 255, 0.8);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n}\n\n\n\n\n\n\n.status-warning-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n margin: 0;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-left: 4px solid var(--mj-status-warning);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.status-warning-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base);\n flex-shrink: 0;\n}\n\n.status-warning-banner[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n\n\n\n\n\n.query-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n padding: 16px;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n}\n\n\n\n\n\n\n.query-panel[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n .query-content mj-accordion-panel .mj-accordion-panel {\n border: none !important;\n border-radius: var(--mj-radius-md) !important;\n margin-bottom: 12px !important;\n box-shadow: var(--mj-shadow-sm) !important;\n background: var(--mj-bg-surface) !important;\n overflow: hidden !important;\n}\n\n .query-content .mj-accordion-header {\n background: var(--mj-bg-surface) !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: var(--mj-radius-md) !important;\n color: var(--mj-text-primary) !important;\n font-weight: 600 !important;\n font-size: var(--mj-text-sm) !important;\n transition: background 0.15s ease !important;\n}\n\n .query-content .mj-accordion-header:hover {\n background: var(--mj-bg-surface-card) !important;\n}\n\n .query-content .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n border-radius: var(--mj-radius-md) var(--mj-radius-md) 0 0 !important;\n}\n\n .query-content .mj-accordion-body {\n padding: 0 !important;\n border: none !important;\n background: var(--mj-bg-surface) !important;\n border-radius: 0 0 var(--mj-radius-md) var(--mj-radius-md) !important;\n}\n\n\n\n\n\n\n.panel-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-icon[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n opacity: 0.7;\n}\n\n.sql-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n .mj-accordion-panel--expanded .panel-icon {\n color: rgba(255, 255, 255, 0.85) !important;\n opacity: 1;\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n}\n\n.panel-badge.defined[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n.panel-badge.count[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n .mj-accordion-panel--expanded .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n .mj-accordion-panel--expanded .panel-badge.defined {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n.filters-help-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-right: 8px;\n font-size: var(--mj-text-xs);\n}\n\n\n\n\n\n\n.panel-body[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.panel-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.panel-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 0 20px 12px;\n}\n\n\n\n\n\n\n.sql-panel-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.sql-editor[_ngcontent-%COMP%] {\n flex: 1;\n height: 400px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n margin: 16px;\n}\n\n\n\n.filters-help[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: var(--mj-text-sm);\n}\n\n.filters-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 10px;\n}\n\n.filter-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.filter-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.filter-name[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: var(--mj-brand-primary);\n margin-bottom: 4px;\n}\n\n.filter-description[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.filter-syntax[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-size: var(--mj-text-xs);\n background: var(--mj-bg-surface-card);\n padding: 6px;\n border-radius: var(--mj-radius-sm);\n margin-bottom: 4px;\n}\n\n.filter-notes[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n\n\n\n\n\n.card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n gap: 12px;\n padding: 0 20px 20px;\n}\n\n.item-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px;\n transition: all 0.15s ease;\n cursor: pointer;\n position: relative;\n}\n\n.item-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.item-card.required[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.item-card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 10px;\n}\n\n.item-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n}\n\n.item-name-icon.param-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.field-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.entity-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.item-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n}\n\n.item-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.item-badge.type[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.item-badge.sequence[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-brand-primary) 80%, purple);\n}\n\n.item-card-body[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n}\n\n.item-description[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: var(--mj-text-xs);\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 1px 4px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n}\n\n\n\n.item-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.item-card[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.item-card-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n margin-top: 8px;\n}\n\n.item-action-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.item-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n.item-action-btn.delete[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n\n\n.entity-dropdown-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n margin-left: 12px;\n}\n\n.entity-dropdown[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 16px;\n padding: 16px 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 6px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.detail-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-sm);\n}\n\n.detail-tag.positive[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.detail-tag.neutral[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.detail-hint[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.detail-input-narrow[_ngcontent-%COMP%] {\n max-width: 120px;\n padding: 4px 8px;\n font-size: var(--mj-text-sm);\n}\n\n\n\n\n\n\n.permissions-list[_ngcontent-%COMP%] {\n padding: 0 20px;\n}\n\n.permission-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon[_ngcontent-%COMP%] {\n font-size: 1.3em;\n color: var(--mj-brand-primary);\n}\n\n.permission-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.permission-role[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.permission-type[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n}\n\n.permission-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--mj-brand-primary);\n color: white;\n padding: 4px 10px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n font-weight: 500;\n}\n\n\n\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.empty-state-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: var(--mj-text-primary);\n}\n\n.empty-state-title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base);\n font-weight: 600;\n margin-bottom: 6px;\n color: var(--mj-text-secondary);\n}\n\n.empty-state-text[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n margin-bottom: 16px;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.add-item-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n font-size: var(--mj-text-sm);\n}\n\n.add-item-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n box-shadow: 0 2px 6px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n\n\n\n\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n\n\n\n.technical-description-textarea[_ngcontent-%COMP%] {\n width: 100%;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 13px;\n}\n\n.technical-description-preview[_ngcontent-%COMP%] {\n margin-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n padding-top: 12px;\n}\n\n.preview-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.technical-description-view[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n padding: 12px 16px;\n}\n\n\n\n.dependents-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.dependents-description[_ngcontent-%COMP%] {\n padding: 0 20px 12px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.dependents-description[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n.dependent-card[_ngcontent-%COMP%] {\n cursor: pointer;\n border-left: 3px solid var(--mj-status-warning) !important;\n}\n\n.dependent-card[_ngcontent-%COMP%]:hover {\n border-left-color: var(--mj-status-warning-text) !important;\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface)) !important;\n}\n\n.dependent-query-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning) !important;\n}\n\n.item-card-footer[_ngcontent-%COMP%] {\n padding-top: 8px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n margin-top: 8px;\n}\n\n.open-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.dependent-card[_ngcontent-%COMP%]:hover .open-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary-hover);\n}"] }); }
1803
2058
  };
1804
2059
  MJQueryFormComponentExtended = __decorate([
1805
2060
  RegisterClass(BaseFormComponent, 'MJ: Queries')
@@ -1807,10 +2062,10 @@ MJQueryFormComponentExtended = __decorate([
1807
2062
  export { MJQueryFormComponentExtended };
1808
2063
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJQueryFormComponentExtended, [{
1809
2064
  type: Component,
1810
- args: [{ standalone: false, selector: 'mj-query-form', template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\" [Config]=\"ToolbarConfig\"></mj-form-toolbar>\n\n <!-- Header Section -->\n <div class=\"query-header\">\n <div class=\"query-header-content\">\n <!-- Top Row: Name and Run Button -->\n <div class=\"query-header-top\">\n <!-- Left: Query Name -->\n <div class=\"query-name-section\">\n <i class=\"fa-solid fa-database query-title-icon\"></i>\n @if (EditMode) {\n <input class=\"mj-input query-name-input\"\n [(ngModel)]=\"record.Name\"\n name=\"queryName\"\n placeholder=\"Enter query name...\" />\n } @else {\n <h4 class=\"query-name-display\">{{ record.Name || 'Untitled Query' }}</h4>\n }\n </div>\n\n <!-- Right: Action Buttons -->\n <div class=\"query-header-actions\">\n @if (record.ID) {\n <button mjButton\n variant=\"primary\"\n [disabled]=\"EditMode || !record.SQL || record.SQL.trim().length === 0\"\n (click)=\"runQuery()\"\n title=\"Run Query\"\n class=\"run-query-btn\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n\n <!-- Second Row: Category and Status -->\n <div class=\"query-meta-row\">\n <!-- Category -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Category</label>\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.CategoryID\"\n name=\"categoryId\"\n [Data]=\"categoryOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n Placeholder=\"Select category...\"\n class=\"meta-dropdown\">\n </mj-dropdown>\n } @else {\n <span class=\"meta-value\">{{ categoryPathDisplay || 'Uncategorized' }}</span>\n }\n </div>\n\n <!-- Status -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Status</label>\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.Status\"\n name=\"status\"\n [Data]=\"statusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n class=\"meta-dropdown status-dropdown\">\n </mj-dropdown>\n } @else {\n <span class=\"status-pill\"\n [style.background]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid\" [class]=\"getStatusBannerIcon()\"></i>\n {{ record.Status || 'Unknown' }}\n </span>\n }\n </div>\n </div>\n\n <!-- Third Row: Description -->\n @if (EditMode || record.Description) {\n <div class=\"query-description-row\">\n @if (EditMode) {\n <textarea class=\"mj-input query-description-input\"\n [(ngModel)]=\"record.Description\"\n name=\"description\"\n rows=\"2\"\n placeholder=\"Enter query description...\">\n </textarea>\n } @else {\n <p class=\"query-description-text\">{{ record.Description }}</p>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Status Warning Banner for Non-Approved Queries -->\n @if (record.Status && record.Status !== 'Approved' && !EditMode) {\n <div class=\"status-warning-banner\" [style.border-left-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid\" [class]=\"getStatusBannerIcon()\"\n [style.color]=\"getStatusBadgeColor()\"></i>\n <span>\n This query has status <strong>{{ record.Status }}</strong>. {{ getStatusBannerMessage() }}\n </span>\n </div>\n }\n\n <!-- Main Content Area with Expansion Panels -->\n <div class=\"query-content\">\n\n <!-- SQL Query Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"sqlPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title-row\">\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-code panel-icon sql-icon\"></i>\n SQL\n @if (record.SQL) {\n <span class=\"panel-badge defined\">&mdash; Defined</span>\n }\n </span>\n </span>\n </ng-template>\n\n <div class=\"sql-panel-toolbar\" style=\"display: flex; justify-content: flex-end; padding: 4px 0 8px;\">\n <button type=\"button\"\n mjButton\n variant=\"flat\"\n (click)=\"toggleFiltersHelp()\"\n title=\"Show/hide SQL filters help\"\n class=\"filters-help-btn\">\n <i class=\"fa-solid fa-question-circle\"></i>\n <span>Filters Help</span>\n <i class=\"fa-solid\" [ngClass]=\"showFiltersHelp ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n </div>\n\n <div class=\"sql-panel-content\">\n <!-- Code Editor -->\n <mj-code-editor #sqlEditor\n (change)=\"onSQLChange($event)\"\n (CompositionTokenClick)=\"onCompositionTokenClick($event)\"\n [language]=\"'sql'\"\n class=\"sql-editor\">\n </mj-code-editor>\n\n <!-- SQL Filters Help (Below Editor) -->\n @if (showFiltersHelp) {\n <div class=\"filters-help\">\n <h6 class=\"filters-help-title\">\n <i class=\"fa-solid fa-filter\"></i> Available SQL Filters for Parameterized Queries\n </h6>\n <div class=\"filters-grid\">\n @for (filter of sqlFilters; track filter.name) {\n <div class=\"filter-card\">\n <div class=\"filter-name\">{{ filter.name }}</div>\n <div class=\"filter-description\">{{ filter.description }}</div>\n <div class=\"filter-syntax\">{{ filter.exampleSyntax }}</div>\n @if (filter.notes) {\n <div class=\"filter-notes\">{{ filter.notes }}</div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Technical Description Panel -->\n @if (record.TechnicalDescription || EditMode) {\n <mj-accordion-panel\n [(Expanded)]=\"technicalDescriptionPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-book panel-icon\"></i>\n Technical Description\n @if (record.TechnicalDescription) {\n <span class=\"panel-badge defined\">&mdash; Documented</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (EditMode) {\n <textarea class=\"mj-input technical-description-textarea\"\n [(ngModel)]=\"record.TechnicalDescription\"\n name=\"technicalDescription\"\n rows=\"8\"\n placeholder=\"Technical documentation of the query logic, performance considerations, and parameter usage. Supports markdown and mermaid diagrams.\">\n </textarea>\n @if (record.TechnicalDescription) {\n <div class=\"technical-description-preview\">\n <div class=\"preview-label\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n } @else {\n <div class=\"technical-description-view\">\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Parameters Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"parametersPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders panel-icon\"></i>\n Parameters\n @if (queryParameters.length > 0) {\n <span class=\"panel-badge count\">{{ queryParameters.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingParameters) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading parameters...\"></mj-loading>\n </div>\n } @else {\n @if (queryParameters.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sliders empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Parameters Defined</div>\n <div class=\"empty-state-text\">\n Add parameters to make your query dynamic and reusable.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (param of queryParameters; track param.ID || $index) {\n <div class=\"item-card\" [class.required]=\"param.IsRequired\" (click)=\"editParameter(param)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-at item-name-icon param-icon\"></i>\n {{ param.Name }}\n </div>\n <div class=\"item-badges\">\n @if (param.IsRequired) {\n <span class=\"item-badge required\">Required</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (param.Description) {\n <div class=\"item-description\">{{ param.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Type:</strong> {{ param.Type || 'Text' }}\n </span>\n @if (param.DefaultValue) {\n <span class=\"meta-tag\">\n <strong>Default:</strong>\n <code class=\"meta-code\">{{ param.DefaultValue }}</code>\n </span>\n }\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-actions\" (click)=\"$event.stopPropagation()\">\n <button type=\"button\" class=\"item-action-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Fields Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"fieldsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-table panel-icon\"></i>\n Fields\n @if (queryFields.length > 0) {\n <span class=\"panel-badge count\">{{ queryFields.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingFields) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading fields...\"></mj-loading>\n </div>\n } @else {\n @if (queryFields.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-table empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Fields Defined</div>\n <div class=\"empty-state-text\">\n Define output fields for your query results.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Field\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add Field\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (field of queryFields; track field.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-columns item-name-icon field-icon\"></i>\n {{ field.Name }}\n </div>\n <div class=\"item-badges\">\n <span class=\"item-badge type\">{{ field.SQLBaseType }}</span>\n @if (field.Sequence) {\n <span class=\"item-badge sequence\">#{{ field.Sequence }}</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (field.Description) {\n <div class=\"item-description\">{{ field.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-code\"></i> {{ field.SQLFullType || field.SQLBaseType }}\n </span>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteField(field)\" title=\"Delete field\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Dependent Queries Panel -->\n @if (record.IsSaved && DependentQueries.length > 0) {\n <mj-accordion-panel\n [(Expanded)]=\"dependentsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-arrow-left panel-icon dependents-icon\"></i>\n Dependent Queries\n <span class=\"panel-badge count\">{{ DependentQueries.length }}</span>\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"dependents-description\">\n These queries reference this query via <code>{{\"{{query:\\\"...\\\"}}\"}} </code> composition syntax.\n </div>\n <div class=\"card-grid\">\n @for (dep of DependentQueries; track dep.ID) {\n <div class=\"item-card dependent-card\" (click)=\"onDependentQueryClick(dep)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-arrow-left item-name-icon dependent-query-icon\"></i>\n {{ dep.Query }}\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (dep.ReferencePath) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-link\"></i> {{ dep.ReferencePath }}\n </span>\n </div>\n }\n @if (dep.Alias) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Alias:</strong> <code class=\"meta-code\">{{ dep.Alias }}</code>\n </span>\n </div>\n }\n </div>\n <div class=\"item-card-footer\">\n <span class=\"open-link\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Entities Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"entitiesPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-database panel-icon\"></i>\n Entities\n @if (queryEntities.length > 0) {\n <span class=\"panel-badge count\">{{ queryEntities.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingEntities) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading entities...\"></mj-loading>\n </div>\n } @else {\n @if (queryEntities.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Entities Tracked</div>\n <div class=\"empty-state-text\">\n Track which entities this query uses for documentation.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Entity\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add Entity\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (entity of queryEntities; track entity.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-table item-name-icon entity-icon\"></i>\n {{ entity.Entity || 'Select Entity...' }}\n </div>\n @if (EditMode) {\n <div class=\"entity-dropdown-wrapper\">\n <mj-dropdown\n [(ngModel)]=\"entity.EntityID\"\n [name]=\"'entity_' + entity.ID\"\n [Data]=\"getEntityOptions()\"\n TextField=\"text\"\n ValueField=\"id\"\n [ValuePrimitive]=\"true\"\n Placeholder=\"Select entity...\"\n class=\"entity-dropdown\">\n </mj-dropdown>\n </div>\n }\n </div>\n @if (!EditMode && entity.Entity) {\n <div class=\"item-card-body\">\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-database\"></i> Data Source\n </span>\n </div>\n </div>\n }\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteEntity(entity)\" title=\"Delete entity\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Details Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"detailsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle panel-icon\"></i>\n Details\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"details-grid\">\n <!-- Uses Template -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-file-code\"></i> Template Usage\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.UsesTemplate\" name=\"usesTemplate\"></mj-switch>\n } @else {\n <div class=\"detail-value\">\n @if (record.UsesTemplate) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Uses Templates</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> No Templates</span>\n }\n </div>\n }\n </div>\n\n <!-- Created Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-plus\"></i> Created\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_CreatedAt) }}</div>\n </div>\n\n <!-- Updated Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-check\"></i> Last Updated\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_UpdatedAt) }}</div>\n </div>\n\n <!-- Quality Rank -->\n @if (record.QualityRank != null) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-star\"></i> Quality Rank\n </label>\n <div class=\"detail-value\">{{ record.QualityRank }}/10</div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Permissions Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"permissionsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-alt panel-icon\"></i>\n Permissions\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingPermissions) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading permissions...\"></mj-loading>\n </div>\n } @else {\n @if (queryPermissions.length === 0 && !EditMode) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-shield-alt empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Permissions Set</div>\n <div class=\"empty-state-text\">\n This query uses default permissions.\n </div>\n </div>\n } @else {\n @if (EditMode) {\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Query Permissions','QueryID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Query Permissions')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n } @else {\n <div class=\"permissions-list\">\n @for (permission of queryPermissions; track permission.ID) {\n <div class=\"permission-card\">\n <i class=\"fa-solid fa-users permission-icon\"></i>\n <div class=\"permission-info\">\n <div class=\"permission-role\">{{ permission.Role }}</div>\n <div class=\"permission-type\">Role Permission</div>\n </div>\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-play\"></i> Can Execute\n </span>\n </div>\n }\n </div>\n }\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n </div>\n </form>\n\n <!-- Query Run Dialog -->\n <mj-query-run-dialog\n [query]=\"record\"\n [parameters]=\"queryParameters\"\n [(isVisible)]=\"showRunDialog\"\n (onClose)=\"onRunDialogClose()\">\n </mj-query-run-dialog>\n\n <!-- Category Creation Dialog -->\n <mj-query-category-dialog\n [(isVisible)]=\"showCategoryDialog\"\n (onCategoryCreated)=\"onCategoryCreated($event)\">\n </mj-query-category-dialog>\n }\n</div>\n", styles: [".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\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-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n", "/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n/* Override the shared record-form min-height so flex layout works properly */\n.record-form {\n min-height: 0 !important;\n}\n\n/* ========================================\n Header Section \u2014 matches Query Browser gradient\n ======================================== */\n\n.query-header {\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n border-bottom: none;\n padding: 0;\n}\n\n.query-header-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 20px;\n}\n\n.query-header-top {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.query-name-section {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.query-title-icon {\n color: rgba(255, 255, 255, 0.85);\n font-size: 1.3em;\n flex-shrink: 0;\n}\n\n.query-name-input {\n font-size: 1.2em;\n font-weight: 600;\n min-width: 300px;\n flex: 1;\n}\n\n.query-name-display {\n margin: 0;\n color: var(--mj-text-inverse, white);\n font-weight: 600;\n font-size: 1.2em;\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.query-header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.run-query-btn {\n white-space: nowrap;\n}\n\n/* Meta row (category + status) */\n.query-meta-row {\n display: flex;\n gap: 24px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.query-meta-item {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.meta-label {\n font-weight: 500;\n color: rgba(255, 255, 255, 0.75);\n font-size: var(--mj-text-sm);\n min-width: 60px;\n}\n\n.meta-value {\n color: rgba(255, 255, 255, 0.95);\n font-size: var(--mj-text-sm);\n}\n\n.meta-dropdown {\n min-width: 200px;\n}\n\n.status-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: var(--mj-radius-xl);\n color: var(--mj-text-inverse, white);\n font-size: var(--mj-text-sm);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-pill i {\n font-size: var(--mj-text-xs);\n}\n\n/* Description row */\n.query-description-row {\n margin-top: 2px;\n}\n\n.query-description-input {\n width: 100%;\n}\n\n.query-description-text {\n margin: 0;\n color: rgba(255, 255, 255, 0.8);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n}\n\n/* ========================================\n Status Warning Banner\n ======================================== */\n\n.status-warning-banner {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n margin: 0;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-left: 4px solid var(--mj-status-warning);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.status-warning-banner i {\n font-size: var(--mj-text-base);\n flex-shrink: 0;\n}\n\n.status-warning-banner strong {\n font-weight: 600;\n}\n\n/* ========================================\n Main Content Area\n ======================================== */\n\n.query-content {\n flex: 1;\n min-height: 0;\n padding: 16px;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n}\n\n/* ========================================\n Accordion Panel Overrides \u2014 Modern Style\n ======================================== */\n\n.query-panel {\n margin-bottom: 12px;\n}\n\n::ng-deep .query-content mj-accordion-panel .mj-accordion-panel {\n border: none !important;\n border-radius: var(--mj-radius-md) !important;\n margin-bottom: 12px !important;\n box-shadow: var(--mj-shadow-sm) !important;\n background: var(--mj-bg-surface) !important;\n overflow: hidden !important;\n}\n\n::ng-deep .query-content .mj-accordion-header {\n background: var(--mj-bg-surface) !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: var(--mj-radius-md) !important;\n color: var(--mj-text-primary) !important;\n font-weight: 600 !important;\n font-size: var(--mj-text-sm) !important;\n transition: background 0.15s ease !important;\n}\n\n::ng-deep .query-content .mj-accordion-header:hover {\n background: var(--mj-bg-surface-card) !important;\n}\n\n::ng-deep .query-content .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n border-radius: var(--mj-radius-md) var(--mj-radius-md) 0 0 !important;\n}\n\n::ng-deep .query-content .mj-accordion-body {\n padding: 0 !important;\n border: none !important;\n background: var(--mj-bg-surface) !important;\n border-radius: 0 0 var(--mj-radius-md) var(--mj-radius-md) !important;\n}\n\n/* ========================================\n Panel Title & Badges\n ======================================== */\n\n.panel-title-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-icon {\n font-size: var(--mj-text-sm);\n opacity: 0.7;\n}\n\n.sql-icon {\n color: var(--mj-brand-primary);\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-icon {\n color: rgba(255, 255, 255, 0.85) !important;\n opacity: 1;\n}\n\n.panel-badge {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n}\n\n.panel-badge.defined {\n background: var(--mj-status-success);\n color: white;\n}\n\n.panel-badge.count {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-badge.defined {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n.filters-help-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-right: 8px;\n font-size: var(--mj-text-xs);\n}\n\n/* ========================================\n Panel Body & Loading\n ======================================== */\n\n.panel-body {\n padding: 16px 0;\n}\n\n.panel-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.panel-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 0 20px 12px;\n}\n\n/* ========================================\n SQL Panel\n ======================================== */\n\n.sql-panel-content {\n display: flex;\n flex-direction: column;\n}\n\n.sql-editor {\n flex: 1;\n height: 400px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n margin: 16px;\n}\n\n/* Filters Help */\n.filters-help {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title {\n margin: 0 0 12px 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: var(--mj-text-sm);\n}\n\n.filters-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 10px;\n}\n\n.filter-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.filter-card:hover {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.filter-name {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: var(--mj-brand-primary);\n margin-bottom: 4px;\n}\n\n.filter-description {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.filter-syntax {\n font-family: 'Courier New', monospace;\n font-size: var(--mj-text-xs);\n background: var(--mj-bg-surface-card);\n padding: 6px;\n border-radius: var(--mj-radius-sm);\n margin-bottom: 4px;\n}\n\n.filter-notes {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n/* ========================================\n Card Grid (Parameters, Fields, Entities)\n ======================================== */\n\n.card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n gap: 12px;\n padding: 0 20px 20px;\n}\n\n.item-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px;\n transition: all 0.15s ease;\n cursor: pointer;\n position: relative;\n}\n\n.item-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.item-card.required {\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.item-card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 10px;\n}\n\n.item-name {\n font-weight: 600;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon {\n font-size: var(--mj-text-sm);\n}\n\n.item-name-icon.param-icon {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.field-icon {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.entity-icon {\n color: var(--mj-status-success);\n}\n\n.item-badges {\n display: flex;\n gap: 6px;\n}\n\n.item-badge {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required {\n background: var(--mj-status-warning);\n}\n\n.item-badge.type {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.item-badge.sequence {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-brand-primary) 80%, purple);\n}\n\n.item-card-body {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n}\n\n.item-description {\n margin-bottom: 8px;\n}\n\n.item-meta {\n display: flex;\n gap: 16px;\n font-size: var(--mj-text-xs);\n}\n\n.meta-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-code {\n background: var(--mj-bg-surface-card);\n padding: 1px 4px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n}\n\n/* Card actions (edit/delete) */\n.item-actions {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.item-card:hover .item-actions {\n opacity: 1;\n}\n\n.item-card-actions {\n display: flex;\n justify-content: flex-end;\n margin-top: 8px;\n}\n\n.item-action-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.item-action-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n.item-action-btn.delete:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n/* Entity dropdown in card */\n.entity-dropdown-wrapper {\n flex: 1;\n margin-left: 12px;\n}\n\n.entity-dropdown {\n width: 100%;\n}\n\n/* ========================================\n Details Grid\n ======================================== */\n\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 16px;\n padding: 16px 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.detail-label {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 6px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.detail-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-sm);\n}\n\n.detail-tag.positive {\n color: var(--mj-status-success);\n}\n\n.detail-tag.neutral {\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Permissions\n ======================================== */\n\n.permissions-list {\n padding: 0 20px;\n}\n\n.permission-card {\n display: flex;\n align-items: center;\n gap: 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon {\n font-size: 1.3em;\n color: var(--mj-brand-primary);\n}\n\n.permission-info {\n flex: 1;\n}\n\n.permission-role {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.permission-type {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--mj-brand-primary);\n color: white;\n padding: 4px 10px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n font-weight: 500;\n}\n\n/* ========================================\n Empty State\n ======================================== */\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.empty-state-icon {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: var(--mj-text-primary);\n}\n\n.empty-state-title {\n font-size: var(--mj-text-base);\n font-weight: 600;\n margin-bottom: 6px;\n color: var(--mj-text-secondary);\n}\n\n.empty-state-text {\n font-size: var(--mj-text-sm);\n margin-bottom: 16px;\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Buttons\n ======================================== */\n\n.add-item-btn {\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n font-size: var(--mj-text-sm);\n}\n\n.add-item-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n box-shadow: 0 2px 6px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n/* ========================================\n Badge (reused across components)\n ======================================== */\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n/* ========================================\n Technical Description Panel\n ======================================== */\n\n.technical-description-textarea {\n width: 100%;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 13px;\n}\n\n.technical-description-preview {\n margin-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n padding-top: 12px;\n}\n\n.preview-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.technical-description-view {\n max-height: 500px;\n overflow-y: auto;\n padding: 12px 16px;\n}\n\n/* Dependent Queries */\n.dependents-icon {\n color: var(--mj-status-warning);\n}\n\n.dependents-description {\n padding: 0 20px 12px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.dependents-description code {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n.dependent-card {\n cursor: pointer;\n border-left: 3px solid var(--mj-status-warning) !important;\n}\n\n.dependent-card:hover {\n border-left-color: var(--mj-status-warning-text) !important;\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface)) !important;\n}\n\n.dependent-query-icon {\n color: var(--mj-status-warning) !important;\n}\n\n.item-card-footer {\n padding-top: 8px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n margin-top: 8px;\n}\n\n.open-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.dependent-card:hover .open-link {\n color: var(--mj-brand-primary-hover);\n}\n"] }]
2065
+ args: [{ standalone: false, selector: 'mj-query-form', template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\" [Config]=\"ToolbarConfig\" [IsSaving]=\"IsSaving\"></mj-form-toolbar>\n\n <!-- Saving Overlay -->\n @if (IsSaving) {\n <div class=\"saving-overlay\">\n <i class=\"fa-solid fa-spinner fa-spin saving-spinner\"></i>\n <span>Saving...</span>\n </div>\n }\n\n <!-- Header Section -->\n <div class=\"query-header\" [class.content-saving]=\"IsSaving\">\n <div class=\"query-header-content\">\n <!-- Top Row: Name and Run Button -->\n <div class=\"query-header-top\">\n <!-- Left: Query Name -->\n <div class=\"query-name-section\">\n <i class=\"fa-solid fa-database query-title-icon\"></i>\n @if (EditMode) {\n <input class=\"mj-input query-name-input\"\n [(ngModel)]=\"record.Name\"\n name=\"queryName\"\n placeholder=\"Enter query name...\" />\n } @else {\n <h4 class=\"query-name-display\">{{ record.Name || 'Untitled Query' }}</h4>\n }\n </div>\n\n <!-- Right: Action Buttons -->\n <div class=\"query-header-actions\">\n @if (record.ID) {\n <button mjButton\n variant=\"primary\"\n [disabled]=\"EditMode || !record.SQL || record.SQL.trim().length === 0\"\n (click)=\"runQuery()\"\n title=\"Run Query\"\n class=\"run-query-btn\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n\n <!-- Second Row: Category and Status -->\n <div class=\"query-meta-row\">\n <!-- Category -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Category</label>\n @if (EditMode) {\n <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"CategoryIDAsKey\"\n [SelectableTypes]=\"'branch'\"\n [SelectionMode]=\"'single'\"\n [Placeholder]=\"'Select category...'\"\n [EnableSearch]=\"true\"\n [Clearable]=\"true\"\n (ValueChange)=\"OnCategoryTreeChange($event)\"\n class=\"meta-dropdown\">\n </mj-tree-dropdown>\n } @else {\n <span class=\"meta-value\">{{ categoryPathDisplay || 'Uncategorized' }}</span>\n }\n </div>\n\n <!-- Status -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Status</label>\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.Status\"\n name=\"status\"\n [Data]=\"statusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n class=\"meta-dropdown status-dropdown\">\n </mj-dropdown>\n } @else {\n <span class=\"status-pill\"\n [style.background]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid\" [class]=\"getStatusBannerIcon()\"></i>\n {{ record.Status || 'Unknown' }}\n </span>\n }\n </div>\n </div>\n\n <!-- Third Row: Description -->\n @if (EditMode || record.Description) {\n <div class=\"query-description-row\">\n @if (EditMode) {\n <textarea class=\"mj-input query-description-input\"\n [(ngModel)]=\"record.Description\"\n name=\"description\"\n rows=\"2\"\n placeholder=\"Enter query description...\">\n </textarea>\n } @else {\n <p class=\"query-description-text\">{{ record.Description }}</p>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Status Warning Banner for Non-Approved Queries -->\n @if (record.Status && record.Status !== 'Approved' && !EditMode) {\n <div class=\"status-warning-banner\" [style.border-left-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid\" [class]=\"getStatusBannerIcon()\"\n [style.color]=\"getStatusBadgeColor()\"></i>\n <span>\n This query has status <strong>{{ record.Status }}</strong>. {{ getStatusBannerMessage() }}\n </span>\n </div>\n }\n\n <!-- Main Content Area with Expansion Panels -->\n <div class=\"query-content\" [class.content-saving]=\"IsSaving\">\n\n <!-- SQL Query Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"sqlPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title-row\">\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-code panel-icon sql-icon\"></i>\n SQL\n @if (record.SQL) {\n <span class=\"panel-badge defined\">&mdash; Defined</span>\n }\n </span>\n </span>\n </ng-template>\n\n <div class=\"sql-panel-toolbar\" style=\"display: flex; justify-content: flex-end; padding: 4px 0 8px;\">\n <button type=\"button\"\n mjButton\n variant=\"flat\"\n (click)=\"toggleFiltersHelp()\"\n title=\"Show/hide SQL filters help\"\n class=\"filters-help-btn\">\n <i class=\"fa-solid fa-question-circle\"></i>\n <span>Filters Help</span>\n <i class=\"fa-solid\" [ngClass]=\"showFiltersHelp ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n </div>\n\n <div class=\"sql-panel-content\">\n <!-- Code Editor -->\n <mj-code-editor #sqlEditor\n (change)=\"onSQLChange($event)\"\n (CompositionTokenClick)=\"onCompositionTokenClick($event)\"\n [language]=\"'sql'\"\n class=\"sql-editor\">\n </mj-code-editor>\n\n <!-- SQL Filters Help (Below Editor) -->\n @if (showFiltersHelp) {\n <div class=\"filters-help\">\n <h6 class=\"filters-help-title\">\n <i class=\"fa-solid fa-filter\"></i> Available SQL Filters for Parameterized Queries\n </h6>\n <div class=\"filters-grid\">\n @for (filter of sqlFilters; track filter.name) {\n <div class=\"filter-card\">\n <div class=\"filter-name\">{{ filter.name }}</div>\n <div class=\"filter-description\">{{ filter.description }}</div>\n <div class=\"filter-syntax\">{{ filter.exampleSyntax }}</div>\n @if (filter.notes) {\n <div class=\"filter-notes\">{{ filter.notes }}</div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Technical Description Panel -->\n @if (record.TechnicalDescription || EditMode) {\n <mj-accordion-panel\n [(Expanded)]=\"technicalDescriptionPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-book panel-icon\"></i>\n Technical Description\n @if (record.TechnicalDescription) {\n <span class=\"panel-badge defined\">&mdash; Documented</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (EditMode) {\n <textarea class=\"mj-input technical-description-textarea\"\n [(ngModel)]=\"record.TechnicalDescription\"\n name=\"technicalDescription\"\n rows=\"8\"\n placeholder=\"Technical documentation of the query logic, performance considerations, and parameter usage. Supports markdown and mermaid diagrams.\">\n </textarea>\n @if (record.TechnicalDescription) {\n <div class=\"technical-description-preview\">\n <div class=\"preview-label\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n } @else {\n <div class=\"technical-description-view\">\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Parameters Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"parametersPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders panel-icon\"></i>\n Parameters\n @if (queryParameters.length > 0) {\n <span class=\"panel-badge count\">{{ queryParameters.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingParameters) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading parameters...\"></mj-loading>\n </div>\n } @else {\n @if (queryParameters.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sliders empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Parameters Defined</div>\n <div class=\"empty-state-text\">\n Add parameters to make your query dynamic and reusable.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (param of queryParameters; track param.ID || $index) {\n <div class=\"item-card\" [class.required]=\"param.IsRequired\" (click)=\"editParameter(param)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-at item-name-icon param-icon\"></i>\n {{ param.Name }}\n </div>\n <div class=\"item-badges\">\n @if (param.IsRequired) {\n <span class=\"item-badge required\">Required</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (param.Description) {\n <div class=\"item-description\">{{ param.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Type:</strong> {{ param.Type || 'Text' }}\n </span>\n @if (param.DefaultValue) {\n <span class=\"meta-tag\">\n <strong>Default:</strong>\n <code class=\"meta-code\">{{ param.DefaultValue }}</code>\n </span>\n }\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-actions\" (click)=\"$event.stopPropagation()\">\n <button type=\"button\" class=\"item-action-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Fields Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"fieldsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-table panel-icon\"></i>\n Fields\n @if (queryFields.length > 0) {\n <span class=\"panel-badge count\">{{ queryFields.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingFields) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading fields...\"></mj-loading>\n </div>\n } @else {\n @if (queryFields.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-table empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Fields Defined</div>\n <div class=\"empty-state-text\">\n Define output fields for your query results.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Field\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add Field\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (field of queryFields; track field.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-columns item-name-icon field-icon\"></i>\n {{ field.Name }}\n </div>\n <div class=\"item-badges\">\n <span class=\"item-badge type\">{{ field.SQLBaseType }}</span>\n @if (field.Sequence) {\n <span class=\"item-badge sequence\">#{{ field.Sequence }}</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (field.Description) {\n <div class=\"item-description\">{{ field.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-code\"></i> {{ field.SQLFullType || field.SQLBaseType }}\n </span>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteField(field)\" title=\"Delete field\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Dependent Queries Panel -->\n @if (record.IsSaved && DependentQueries.length > 0) {\n <mj-accordion-panel\n [(Expanded)]=\"dependentsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-arrow-left panel-icon dependents-icon\"></i>\n Dependent Queries\n <span class=\"panel-badge count\">{{ DependentQueries.length }}</span>\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"dependents-description\">\n These queries reference this query via <code>{{\"{{query:\\\"...\\\"}}\"}} </code> composition syntax.\n </div>\n <div class=\"card-grid\">\n @for (dep of DependentQueries; track dep.ID) {\n <div class=\"item-card dependent-card\" (click)=\"onDependentQueryClick(dep)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-arrow-left item-name-icon dependent-query-icon\"></i>\n {{ dep.Query }}\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (dep.ReferencePath) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-link\"></i> {{ dep.ReferencePath }}\n </span>\n </div>\n }\n @if (dep.Alias) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Alias:</strong> <code class=\"meta-code\">{{ dep.Alias }}</code>\n </span>\n </div>\n }\n </div>\n <div class=\"item-card-footer\">\n <span class=\"open-link\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Entities Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"entitiesPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-database panel-icon\"></i>\n Entities\n @if (queryEntities.length > 0) {\n <span class=\"panel-badge count\">{{ queryEntities.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingEntities) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading entities...\"></mj-loading>\n </div>\n } @else {\n @if (queryEntities.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Entities Tracked</div>\n <div class=\"empty-state-text\">\n Track which entities this query uses for documentation.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Entity\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add Entity\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (entity of queryEntities; track entity.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-table item-name-icon entity-icon\"></i>\n {{ entity.Entity || 'Select Entity...' }}\n </div>\n @if (EditMode) {\n <div class=\"entity-dropdown-wrapper\">\n <mj-dropdown\n [(ngModel)]=\"entity.EntityID\"\n [name]=\"'entity_' + entity.ID\"\n [Data]=\"getEntityOptions()\"\n TextField=\"text\"\n ValueField=\"id\"\n [ValuePrimitive]=\"true\"\n Placeholder=\"Select entity...\"\n class=\"entity-dropdown\">\n </mj-dropdown>\n </div>\n }\n </div>\n @if (!EditMode && entity.Entity) {\n <div class=\"item-card-body\">\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-database\"></i> Data Source\n </span>\n </div>\n </div>\n }\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteEntity(entity)\" title=\"Delete entity\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Details Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"detailsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle panel-icon\"></i>\n Details\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"details-grid\">\n <!-- Reusable -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-puzzle-piece\"></i> Reusable\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.Reusable\" name=\"reusable\"></mj-switch>\n <div class=\"detail-hint\">Allow other queries to reference this query using composition syntax</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.Reusable) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Reusable</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Not Reusable</span>\n }\n </div>\n }\n </div>\n\n <!-- Cache Enabled -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-bolt\"></i> Cache Enabled\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.CacheEnabled\" name=\"cacheEnabled\"></mj-switch>\n <div class=\"detail-hint\">Cache query results in memory to reduce database load on repeated runs</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.CacheEnabled) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Caching On</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Caching Off</span>\n }\n </div>\n }\n </div>\n\n <!-- Cache TTL -->\n @if (record.CacheEnabled) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-clock\"></i> Cache TTL (Minutes)\n </label>\n @if (EditMode) {\n <input class=\"mj-input detail-input-narrow\"\n type=\"number\"\n [(ngModel)]=\"record.CacheTTLMinutes\"\n name=\"cacheTTLMinutes\"\n min=\"1\"\n placeholder=\"Default\" />\n <div class=\"detail-hint\">How long cached results remain valid. Leave blank for default TTL.</div>\n } @else {\n <div class=\"detail-value\">{{ record.CacheTTLMinutes != null ? record.CacheTTLMinutes + ' min' : 'Default' }}</div>\n }\n </div>\n }\n\n <!-- Audit Query Runs -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-clipboard-list\"></i> Audit Runs\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.AuditQueryRuns\" name=\"auditQueryRuns\"></mj-switch>\n <div class=\"detail-hint\">Log all executions of this query to the Audit Log for tracking and compliance</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.AuditQueryRuns) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Auditing On</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Auditing Off</span>\n }\n </div>\n }\n </div>\n\n <!-- Uses Template -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-file-code\"></i> Template Usage\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.UsesTemplate\" name=\"usesTemplate\"></mj-switch>\n } @else {\n <div class=\"detail-value\">\n @if (record.UsesTemplate) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Uses Templates</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> No Templates</span>\n }\n </div>\n }\n </div>\n\n <!-- Created Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-plus\"></i> Created\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_CreatedAt) }}</div>\n </div>\n\n <!-- Updated Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-check\"></i> Last Updated\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_UpdatedAt) }}</div>\n </div>\n\n <!-- Quality Rank -->\n @if (record.QualityRank != null) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-star\"></i> Quality Rank\n </label>\n <div class=\"detail-value\">{{ record.QualityRank }}/10</div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Permissions Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"permissionsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-alt panel-icon\"></i>\n Permissions\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingPermissions) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading permissions...\"></mj-loading>\n </div>\n } @else {\n @if (queryPermissions.length === 0 && !EditMode) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-shield-alt empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Permissions Set</div>\n <div class=\"empty-state-text\">\n This query uses default permissions.\n </div>\n </div>\n } @else {\n @if (EditMode) {\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Query Permissions','QueryID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Query Permissions')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n } @else {\n <div class=\"permissions-list\">\n @for (permission of queryPermissions; track permission.ID) {\n <div class=\"permission-card\">\n <i class=\"fa-solid fa-users permission-icon\"></i>\n <div class=\"permission-info\">\n <div class=\"permission-role\">{{ permission.Role }}</div>\n <div class=\"permission-type\">Role Permission</div>\n </div>\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-play\"></i> Can Execute\n </span>\n </div>\n }\n </div>\n }\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n </div>\n </form>\n\n <!-- Query Run Dialog -->\n <mj-query-run-dialog\n [query]=\"record\"\n [parameters]=\"queryParameters\"\n [(isVisible)]=\"showRunDialog\"\n (onClose)=\"onRunDialogClose()\">\n </mj-query-run-dialog>\n\n <!-- Category Creation Dialog -->\n <mj-query-category-dialog\n [(isVisible)]=\"showCategoryDialog\"\n (onCategoryCreated)=\"onCategoryCreated($event)\">\n </mj-query-category-dialog>\n }\n</div>\n", styles: [".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\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-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n", "/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n/* Override the shared record-form min-height so flex layout works properly */\n.record-form {\n min-height: 0 !important;\n}\n\n/* ========================================\n Saving Overlay\n ======================================== */\n\n.saving-overlay {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 16px;\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.saving-spinner {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.content-saving {\n pointer-events: none;\n opacity: 0.6;\n}\n\n/* ========================================\n Header Section \u2014 matches Query Browser gradient\n ======================================== */\n\n.query-header {\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n border-bottom: none;\n padding: 0;\n}\n\n.query-header-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 20px;\n}\n\n.query-header-top {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.query-name-section {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.query-title-icon {\n color: rgba(255, 255, 255, 0.85);\n font-size: 1.3em;\n flex-shrink: 0;\n}\n\n.query-name-input {\n font-size: 1.2em;\n font-weight: 600;\n min-width: 300px;\n flex: 1;\n}\n\n.query-name-display {\n margin: 0;\n color: var(--mj-text-inverse, white);\n font-weight: 600;\n font-size: 1.2em;\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.query-header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.run-query-btn {\n white-space: nowrap;\n}\n\n/* Meta row (category + status) */\n.query-meta-row {\n display: flex;\n gap: 24px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.query-meta-item {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.meta-label {\n font-weight: 500;\n color: rgba(255, 255, 255, 0.75);\n font-size: var(--mj-text-sm);\n min-width: 60px;\n}\n\n.meta-value {\n color: rgba(255, 255, 255, 0.95);\n font-size: var(--mj-text-sm);\n}\n\n.meta-dropdown {\n min-width: 200px;\n}\n\n.status-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: var(--mj-radius-xl);\n color: var(--mj-text-inverse, white);\n font-size: var(--mj-text-sm);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-pill i {\n font-size: var(--mj-text-xs);\n}\n\n/* Description row */\n.query-description-row {\n margin-top: 2px;\n}\n\n.query-description-input {\n width: 100%;\n}\n\n.query-description-text {\n margin: 0;\n color: rgba(255, 255, 255, 0.8);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n}\n\n/* ========================================\n Status Warning Banner\n ======================================== */\n\n.status-warning-banner {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n margin: 0;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-left: 4px solid var(--mj-status-warning);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.status-warning-banner i {\n font-size: var(--mj-text-base);\n flex-shrink: 0;\n}\n\n.status-warning-banner strong {\n font-weight: 600;\n}\n\n/* ========================================\n Main Content Area\n ======================================== */\n\n.query-content {\n flex: 1;\n min-height: 0;\n padding: 16px;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n}\n\n/* ========================================\n Accordion Panel Overrides \u2014 Modern Style\n ======================================== */\n\n.query-panel {\n margin-bottom: 12px;\n}\n\n::ng-deep .query-content mj-accordion-panel .mj-accordion-panel {\n border: none !important;\n border-radius: var(--mj-radius-md) !important;\n margin-bottom: 12px !important;\n box-shadow: var(--mj-shadow-sm) !important;\n background: var(--mj-bg-surface) !important;\n overflow: hidden !important;\n}\n\n::ng-deep .query-content .mj-accordion-header {\n background: var(--mj-bg-surface) !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: var(--mj-radius-md) !important;\n color: var(--mj-text-primary) !important;\n font-weight: 600 !important;\n font-size: var(--mj-text-sm) !important;\n transition: background 0.15s ease !important;\n}\n\n::ng-deep .query-content .mj-accordion-header:hover {\n background: var(--mj-bg-surface-card) !important;\n}\n\n::ng-deep .query-content .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n border-radius: var(--mj-radius-md) var(--mj-radius-md) 0 0 !important;\n}\n\n::ng-deep .query-content .mj-accordion-body {\n padding: 0 !important;\n border: none !important;\n background: var(--mj-bg-surface) !important;\n border-radius: 0 0 var(--mj-radius-md) var(--mj-radius-md) !important;\n}\n\n/* ========================================\n Panel Title & Badges\n ======================================== */\n\n.panel-title-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-icon {\n font-size: var(--mj-text-sm);\n opacity: 0.7;\n}\n\n.sql-icon {\n color: var(--mj-brand-primary);\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-icon {\n color: rgba(255, 255, 255, 0.85) !important;\n opacity: 1;\n}\n\n.panel-badge {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n}\n\n.panel-badge.defined {\n background: var(--mj-status-success);\n color: white;\n}\n\n.panel-badge.count {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-badge.defined {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n.filters-help-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-right: 8px;\n font-size: var(--mj-text-xs);\n}\n\n/* ========================================\n Panel Body & Loading\n ======================================== */\n\n.panel-body {\n padding: 16px 0;\n}\n\n.panel-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.panel-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 0 20px 12px;\n}\n\n/* ========================================\n SQL Panel\n ======================================== */\n\n.sql-panel-content {\n display: flex;\n flex-direction: column;\n}\n\n.sql-editor {\n flex: 1;\n height: 400px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n margin: 16px;\n}\n\n/* Filters Help */\n.filters-help {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title {\n margin: 0 0 12px 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: var(--mj-text-sm);\n}\n\n.filters-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 10px;\n}\n\n.filter-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.filter-card:hover {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.filter-name {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: var(--mj-brand-primary);\n margin-bottom: 4px;\n}\n\n.filter-description {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.filter-syntax {\n font-family: 'Courier New', monospace;\n font-size: var(--mj-text-xs);\n background: var(--mj-bg-surface-card);\n padding: 6px;\n border-radius: var(--mj-radius-sm);\n margin-bottom: 4px;\n}\n\n.filter-notes {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n/* ========================================\n Card Grid (Parameters, Fields, Entities)\n ======================================== */\n\n.card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n gap: 12px;\n padding: 0 20px 20px;\n}\n\n.item-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px;\n transition: all 0.15s ease;\n cursor: pointer;\n position: relative;\n}\n\n.item-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.item-card.required {\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.item-card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 10px;\n}\n\n.item-name {\n font-weight: 600;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon {\n font-size: var(--mj-text-sm);\n}\n\n.item-name-icon.param-icon {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.field-icon {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.entity-icon {\n color: var(--mj-status-success);\n}\n\n.item-badges {\n display: flex;\n gap: 6px;\n}\n\n.item-badge {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required {\n background: var(--mj-status-warning);\n}\n\n.item-badge.type {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.item-badge.sequence {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-brand-primary) 80%, purple);\n}\n\n.item-card-body {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n}\n\n.item-description {\n margin-bottom: 8px;\n}\n\n.item-meta {\n display: flex;\n gap: 16px;\n font-size: var(--mj-text-xs);\n}\n\n.meta-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-code {\n background: var(--mj-bg-surface-card);\n padding: 1px 4px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n}\n\n/* Card actions (edit/delete) */\n.item-actions {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.item-card:hover .item-actions {\n opacity: 1;\n}\n\n.item-card-actions {\n display: flex;\n justify-content: flex-end;\n margin-top: 8px;\n}\n\n.item-action-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.item-action-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n.item-action-btn.delete:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n/* Entity dropdown in card */\n.entity-dropdown-wrapper {\n flex: 1;\n margin-left: 12px;\n}\n\n.entity-dropdown {\n width: 100%;\n}\n\n/* ========================================\n Details Grid\n ======================================== */\n\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 16px;\n padding: 16px 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.detail-label {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 6px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.detail-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-sm);\n}\n\n.detail-tag.positive {\n color: var(--mj-status-success);\n}\n\n.detail-tag.neutral {\n color: var(--mj-text-disabled);\n}\n\n.detail-hint {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.detail-input-narrow {\n max-width: 120px;\n padding: 4px 8px;\n font-size: var(--mj-text-sm);\n}\n\n/* ========================================\n Permissions\n ======================================== */\n\n.permissions-list {\n padding: 0 20px;\n}\n\n.permission-card {\n display: flex;\n align-items: center;\n gap: 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon {\n font-size: 1.3em;\n color: var(--mj-brand-primary);\n}\n\n.permission-info {\n flex: 1;\n}\n\n.permission-role {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.permission-type {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--mj-brand-primary);\n color: white;\n padding: 4px 10px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n font-weight: 500;\n}\n\n/* ========================================\n Empty State\n ======================================== */\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.empty-state-icon {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: var(--mj-text-primary);\n}\n\n.empty-state-title {\n font-size: var(--mj-text-base);\n font-weight: 600;\n margin-bottom: 6px;\n color: var(--mj-text-secondary);\n}\n\n.empty-state-text {\n font-size: var(--mj-text-sm);\n margin-bottom: 16px;\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Buttons\n ======================================== */\n\n.add-item-btn {\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n font-size: var(--mj-text-sm);\n}\n\n.add-item-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n box-shadow: 0 2px 6px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n/* ========================================\n Badge (reused across components)\n ======================================== */\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n/* ========================================\n Technical Description Panel\n ======================================== */\n\n.technical-description-textarea {\n width: 100%;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 13px;\n}\n\n.technical-description-preview {\n margin-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n padding-top: 12px;\n}\n\n.preview-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.technical-description-view {\n max-height: 500px;\n overflow-y: auto;\n padding: 12px 16px;\n}\n\n/* Dependent Queries */\n.dependents-icon {\n color: var(--mj-status-warning);\n}\n\n.dependents-description {\n padding: 0 20px 12px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.dependents-description code {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n.dependent-card {\n cursor: pointer;\n border-left: 3px solid var(--mj-status-warning) !important;\n}\n\n.dependent-card:hover {\n border-left-color: var(--mj-status-warning-text) !important;\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface)) !important;\n}\n\n.dependent-query-icon {\n color: var(--mj-status-warning) !important;\n}\n\n.item-card-footer {\n padding-top: 8px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n margin-top: 8px;\n}\n\n.open-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.dependent-card:hover .open-link {\n color: var(--mj-brand-primary-hover);\n}\n"] }]
1811
2066
  }], null, { sqlEditor: [{
1812
2067
  type: ViewChild,
1813
2068
  args: ['sqlEditor']
1814
2069
  }] }); })();
1815
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJQueryFormComponentExtended, { className: "MJQueryFormComponentExtended", filePath: "src/lib/custom/Queries/query-form.component.ts", lineNumber: 25 }); })();
2070
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJQueryFormComponentExtended, { className: "MJQueryFormComponentExtended", filePath: "src/lib/custom/Queries/query-form.component.ts", lineNumber: 26 }); })();
1816
2071
  //# sourceMappingURL=query-form.component.js.map