@memberjunction/ng-core-entity-forms 5.28.0 → 5.30.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 (102) hide show
  1. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +4 -0
  2. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  3. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +567 -566
  4. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  5. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +3 -0
  6. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  7. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +243 -244
  8. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  9. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +3 -0
  10. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  11. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +417 -416
  12. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  13. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +51 -16
  14. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
  15. package/dist/lib/custom/Actions/action-execution-log-form.component.js +422 -139
  16. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  17. package/dist/lib/custom/Actions/action-form.component.d.ts +68 -1
  18. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  19. package/dist/lib/custom/Actions/action-form.component.js +882 -422
  20. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  21. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +3 -0
  22. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
  23. package/dist/lib/custom/EntityActions/entityaction.form.component.js +23 -22
  24. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  25. package/dist/lib/custom/Queries/query-form.component.d.ts +13 -1
  26. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  27. package/dist/lib/custom/Queries/query-form.component.js +798 -553
  28. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  29. package/dist/lib/custom/Templates/templates-form.component.d.ts +3 -0
  30. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  31. package/dist/lib/custom/Templates/templates-form.component.js +157 -158
  32. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  33. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  34. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +44 -26
  35. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  36. package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.d.ts.map +1 -1
  37. package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +42 -6
  38. package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
  39. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
  40. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +57 -49
  41. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  42. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +83 -77
  43. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  44. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.d.ts +10 -0
  45. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.d.ts.map +1 -0
  46. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js +123 -0
  47. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js.map +1 -0
  48. package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.d.ts +10 -0
  49. package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.d.ts.map +1 -0
  50. package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.js +87 -0
  51. package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.js.map +1 -0
  52. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.d.ts +10 -0
  53. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.d.ts.map +1 -0
  54. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js +109 -0
  55. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js.map +1 -0
  56. package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.d.ts +10 -0
  57. package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.d.ts.map +1 -0
  58. package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js +83 -0
  59. package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js.map +1 -0
  60. package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js +39 -37
  61. package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js.map +1 -1
  62. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  63. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +104 -68
  64. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  65. package/dist/lib/generated/Entities/MJEntityPermission/mjentitypermission.form.component.js +11 -9
  66. package/dist/lib/generated/Entities/MJEntityPermission/mjentitypermission.form.component.js.map +1 -1
  67. package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.d.ts.map +1 -1
  68. package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js +32 -14
  69. package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js.map +1 -1
  70. package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +23 -21
  71. package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
  72. package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.js +9 -7
  73. package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.js.map +1 -1
  74. package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.d.ts.map +1 -1
  75. package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js +24 -6
  76. package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js.map +1 -1
  77. package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.d.ts +10 -0
  78. package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.d.ts.map +1 -0
  79. package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.js +55 -0
  80. package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.js.map +1 -0
  81. package/dist/lib/generated/Entities/MJPermissionDomain/mjpermissiondomain.form.component.d.ts +10 -0
  82. package/dist/lib/generated/Entities/MJPermissionDomain/mjpermissiondomain.form.component.d.ts.map +1 -0
  83. package/dist/lib/generated/Entities/MJPermissionDomain/mjpermissiondomain.form.component.js +85 -0
  84. package/dist/lib/generated/Entities/MJPermissionDomain/mjpermissiondomain.form.component.js.map +1 -0
  85. package/dist/lib/generated/Entities/MJResourcePermission/mjresourcepermission.form.component.d.ts.map +1 -1
  86. package/dist/lib/generated/Entities/MJResourcePermission/mjresourcepermission.form.component.js +21 -12
  87. package/dist/lib/generated/Entities/MJResourcePermission/mjresourcepermission.form.component.js.map +1 -1
  88. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js +5 -5
  89. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js.map +1 -1
  90. package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js +17 -17
  91. package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js.map +1 -1
  92. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  93. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +241 -169
  94. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  95. package/dist/lib/generated/generated-forms.module.d.ts +252 -246
  96. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  97. package/dist/lib/generated/generated-forms.module.js +168 -150
  98. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  99. package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
  100. package/dist/lib/shared/components/template-editor.component.js +14 -8
  101. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  102. package/package.json +34 -34
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { Component, ViewChild, inject } from '@angular/core';
8
8
  import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
9
- import { BaseFormComponent, DEFAULT_TOOLBAR_CONFIG } from '@memberjunction/ng-base-forms';
9
+ import { BaseFormComponent, CUSTOM_LAYOUT_TOOLBAR_CONFIG } from '@memberjunction/ng-base-forms';
10
10
  import { MJQueryFormComponent } from '../../generated/Entities/MJQuery/mjquery.form.component';
11
11
  import { Metadata, RunView, RUN_QUERY_SQL_FILTERS, CompositeKey } from '@memberjunction/core';
12
12
  import { MJNotificationService } from '@memberjunction/ng-notifications';
@@ -20,114 +20,121 @@ 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
- 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); });
30
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelementStart(0, "div", 4);
32
+ i0.ɵɵelement(1, "i", 48);
33
+ i0.ɵɵelementStart(2, "span");
34
+ i0.ɵɵtext(3, "Saving...");
35
+ i0.ɵɵelementEnd()();
36
+ } }
37
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
38
+ const _r3 = i0.ɵɵgetCurrentView();
39
+ i0.ɵɵelementStart(0, "input", 49);
40
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_9_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Name, $event) || (ctx_r1.record.Name = $event); return i0.ɵɵresetView($event); });
33
41
  i0.ɵɵelementEnd();
34
42
  } if (rf & 2) {
35
- const ctx_r2 = i0.ɵɵnextContext(2);
36
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Name);
43
+ const ctx_r1 = i0.ɵɵnextContext(2);
44
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Name);
37
45
  } }
38
- function MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
46
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
39
47
  i0.ɵɵelementStart(0, "h4", 11);
40
48
  i0.ɵɵtext(1);
41
49
  i0.ɵɵelementEnd();
42
50
  } if (rf & 2) {
43
- const ctx_r2 = i0.ɵɵnextContext(2);
51
+ const ctx_r1 = i0.ɵɵnextContext(2);
44
52
  i0.ɵɵadvance();
45
- i0.ɵɵtextInterpolate(ctx_r2.record.Name || "Untitled Query");
53
+ i0.ɵɵtextInterpolate(ctx_r1.record.Name || "Untitled Query");
46
54
  } }
47
- function MJQueryFormComponentExtended_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
55
+ function MJQueryFormComponentExtended_Conditional_0_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", 50);
58
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.runQuery()); });
59
+ i0.ɵɵelement(1, "i", 51);
52
60
  i0.ɵɵtext(2, " Run ");
53
61
  i0.ɵɵelementEnd();
54
62
  } if (rf & 2) {
55
- const ctx_r2 = i0.ɵɵnextContext(2);
56
- i0.ɵɵproperty("disabled", ctx_r2.EditMode || !ctx_r2.record.SQL || ctx_r2.record.SQL.trim().length === 0);
63
+ const ctx_r1 = i0.ɵɵnextContext(2);
64
+ i0.ɵɵproperty("disabled", ctx_r1.EditMode || !ctx_r1.record.SQL || ctx_r1.record.SQL.trim().length === 0);
57
65
  } }
58
- function MJQueryFormComponentExtended_Conditional_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
66
+ function MJQueryFormComponentExtended_Conditional_0_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", 52);
69
+ i0.ɵɵlistener("ValueChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_17_Template_mj_tree_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnCategoryTreeChange($event)); });
62
70
  i0.ɵɵelementEnd();
63
71
  } if (rf & 2) {
64
- const ctx_r2 = i0.ɵɵnextContext(2);
65
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.CategoryID);
66
- i0.ɵɵproperty("Data", ctx_r2.categoryOptions)("ValuePrimitive", true);
72
+ const ctx_r1 = i0.ɵɵnextContext(2);
73
+ i0.ɵɵproperty("BranchConfig", ctx_r1.CategoryBranchConfig)("Value", ctx_r1.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) {
75
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_18_Template(rf, ctx) { if (rf & 1) {
69
76
  i0.ɵɵelementStart(0, "span", 18);
70
77
  i0.ɵɵtext(1);
71
78
  i0.ɵɵelementEnd();
72
79
  } if (rf & 2) {
73
- const ctx_r2 = i0.ɵɵnextContext(2);
80
+ const ctx_r1 = i0.ɵɵnextContext(2);
74
81
  i0.ɵɵadvance();
75
- i0.ɵɵtextInterpolate(ctx_r2.categoryPathDisplay || "Uncategorized");
82
+ i0.ɵɵtextInterpolate(ctx_r1.categoryPathDisplay || "Uncategorized");
76
83
  } }
77
- function MJQueryFormComponentExtended_Conditional_1_Conditional_21_Template(rf, ctx) { if (rf & 1) {
84
+ function MJQueryFormComponentExtended_Conditional_0_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", 53);
87
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_22_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Status, $event) || (ctx_r1.record.Status = $event); return i0.ɵɵresetView($event); });
81
88
  i0.ɵɵelementEnd();
82
89
  } if (rf & 2) {
83
- const ctx_r2 = i0.ɵɵnextContext(2);
84
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Status);
85
- i0.ɵɵproperty("Data", ctx_r2.statusOptions)("ValuePrimitive", true);
90
+ const ctx_r1 = i0.ɵɵnextContext(2);
91
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Status);
92
+ i0.ɵɵproperty("Data", ctx_r1.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_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
95
+ i0.ɵɵelementStart(0, "span", 54);
96
+ i0.ɵɵelement(1, "i", 55);
90
97
  i0.ɵɵtext(2);
91
98
  i0.ɵɵelementEnd();
92
99
  } if (rf & 2) {
93
- const ctx_r2 = i0.ɵɵnextContext(2);
94
- i0.ɵɵstyleProp("background", ctx_r2.getStatusBadgeColor());
100
+ const ctx_r1 = i0.ɵɵnextContext(2);
101
+ i0.ɵɵstyleProp("background", ctx_r1.getStatusBadgeColor());
95
102
  i0.ɵɵadvance();
96
- i0.ɵɵclassMap(ctx_r2.getStatusBannerIcon());
103
+ i0.ɵɵclassMap(ctx_r1.getStatusBannerIcon());
97
104
  i0.ɵɵadvance();
98
- i0.ɵɵtextInterpolate1(" ", ctx_r2.record.Status || "Unknown", " ");
105
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status || "Unknown", " ");
99
106
  } }
100
- function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_1_Template(rf, ctx) { if (rf & 1) {
107
+ function MJQueryFormComponentExtended_Conditional_0_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", 58);
110
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_24_Conditional_1_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Description, $event) || (ctx_r1.record.Description = $event); return i0.ɵɵresetView($event); });
104
111
  i0.ɵɵtext(1, " ");
105
112
  i0.ɵɵelementEnd();
106
113
  } if (rf & 2) {
107
- const ctx_r2 = i0.ɵɵnextContext(3);
108
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Description);
114
+ const ctx_r1 = i0.ɵɵnextContext(3);
115
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.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_0_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
118
+ i0.ɵɵelementStart(0, "p", 57);
112
119
  i0.ɵɵtext(1);
113
120
  i0.ɵɵelementEnd();
114
121
  } if (rf & 2) {
115
- const ctx_r2 = i0.ɵɵnextContext(3);
122
+ const ctx_r1 = i0.ɵɵnextContext(3);
116
123
  i0.ɵɵadvance();
117
- i0.ɵɵtextInterpolate(ctx_r2.record.Description);
124
+ i0.ɵɵtextInterpolate(ctx_r1.record.Description);
118
125
  } }
119
- function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
126
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
120
127
  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);
128
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_24_Conditional_1_Template, 2, 1, "textarea", 56)(2, MJQueryFormComponentExtended_Conditional_0_Conditional_24_Conditional_2_Template, 2, 1, "p", 57);
122
129
  i0.ɵɵelementEnd();
123
130
  } if (rf & 2) {
124
- const ctx_r2 = i0.ɵɵnextContext(2);
131
+ const ctx_r1 = i0.ɵɵnextContext(2);
125
132
  i0.ɵɵadvance();
126
- i0.ɵɵconditional(ctx_r2.EditMode ? 1 : 2);
133
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
136
+ i0.ɵɵelementStart(0, "div", 59);
137
+ i0.ɵɵelement(1, "i", 55);
131
138
  i0.ɵɵelementStart(2, "span");
132
139
  i0.ɵɵtext(3, " This query has status ");
133
140
  i0.ɵɵelementStart(4, "strong");
@@ -136,34 +143,34 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template(rf,
136
143
  i0.ɵɵtext(6);
137
144
  i0.ɵɵelementEnd()();
138
145
  } if (rf & 2) {
139
- const ctx_r2 = i0.ɵɵnextContext(2);
140
- i0.ɵɵstyleProp("border-left-color", ctx_r2.getStatusBadgeColor());
146
+ const ctx_r1 = i0.ɵɵnextContext(2);
147
+ i0.ɵɵstyleProp("border-left-color", ctx_r1.getStatusBadgeColor());
141
148
  i0.ɵɵadvance();
142
- i0.ɵɵclassMap(ctx_r2.getStatusBannerIcon());
143
- i0.ɵɵstyleProp("color", ctx_r2.getStatusBadgeColor());
149
+ i0.ɵɵclassMap(ctx_r1.getStatusBannerIcon());
150
+ i0.ɵɵstyleProp("color", ctx_r1.getStatusBadgeColor());
144
151
  i0.ɵɵadvance(4);
145
- i0.ɵɵtextInterpolate(ctx_r2.record.Status);
152
+ i0.ɵɵtextInterpolate(ctx_r1.record.Status);
146
153
  i0.ɵɵadvance();
147
- i0.ɵɵtextInterpolate1(". ", ctx_r2.getStatusBannerMessage(), " ");
154
+ i0.ɵɵtextInterpolate1(". ", ctx_r1.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_0_ng_template_28_Conditional_4_Template(rf, ctx) { if (rf & 1) {
157
+ i0.ɵɵelementStart(0, "span", 63);
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_0_ng_template_28_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵelementStart(0, "span", 60)(1, "span", 61);
163
+ i0.ɵɵelement(2, "i", 62);
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_0_ng_template_28_Conditional_4_Template, 2, 0, "span", 63);
159
166
  i0.ɵɵelementEnd()();
160
167
  } if (rf & 2) {
161
- const ctx_r2 = i0.ɵɵnextContext(2);
168
+ const ctx_r1 = i0.ɵɵnextContext(2);
162
169
  i0.ɵɵadvance(4);
163
- i0.ɵɵconditional(ctx_r2.record.SQL ? 4 : -1);
170
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_38_For_6_Conditional_7_Template(rf, ctx) { if (rf & 1) {
173
+ i0.ɵɵelementStart(0, "div", 71);
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_0_Conditional_38_For_6_Template(rf, ctx) { if (rf & 1) {
182
+ i0.ɵɵelementStart(0, "div", 67)(1, "div", 68);
176
183
  i0.ɵɵtext(2);
177
184
  i0.ɵɵelementEnd();
178
- i0.ɵɵelementStart(3, "div", 65);
185
+ i0.ɵɵelementStart(3, "div", 69);
179
186
  i0.ɵɵtext(4);
180
187
  i0.ɵɵelementEnd();
181
- i0.ɵɵelementStart(5, "div", 66);
188
+ i0.ɵɵelementStart(5, "div", 70);
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_0_Conditional_38_For_6_Conditional_7_Template, 2, 1, "div", 71);
185
192
  i0.ɵɵelementEnd();
186
193
  } if (rf & 2) {
187
194
  const filter_r8 = ctx.$implicit;
@@ -194,147 +201,147 @@ 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_0_Conditional_38_Template(rf, ctx) { if (rf & 1) {
205
+ i0.ɵɵelementStart(0, "div", 32)(1, "h6", 64);
206
+ i0.ɵɵelement(2, "i", 65);
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", 66);
210
+ i0.ɵɵrepeaterCreate(5, MJQueryFormComponentExtended_Conditional_0_Conditional_38_For_6_Template, 8, 4, "div", 67, _forTrack0);
204
211
  i0.ɵɵelementEnd()();
205
212
  } if (rf & 2) {
206
- const ctx_r2 = i0.ɵɵnextContext(2);
213
+ const ctx_r1 = i0.ɵɵnextContext(2);
207
214
  i0.ɵɵadvance(5);
208
- i0.ɵɵrepeater(ctx_r2.sqlFilters);
215
+ i0.ɵɵrepeater(ctx_r1.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_0_Conditional_39_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
218
+ i0.ɵɵelementStart(0, "span", 63);
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_0_Conditional_39_ng_template_1_Template(rf, ctx) { if (rf & 1) {
223
+ i0.ɵɵelementStart(0, "span", 61);
224
+ i0.ɵɵelement(1, "i", 73);
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_0_Conditional_39_ng_template_1_Conditional_3_Template, 2, 0, "span", 63);
220
227
  i0.ɵɵelementEnd();
221
228
  } if (rf & 2) {
222
- const ctx_r2 = i0.ɵɵnextContext(3);
229
+ const ctx_r1 = i0.ɵɵnextContext(3);
223
230
  i0.ɵɵadvance(3);
224
- i0.ɵɵconditional(ctx_r2.record.TechnicalDescription ? 3 : -1);
231
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_39_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
234
+ i0.ɵɵelementStart(0, "div", 75)(1, "div", 76);
235
+ i0.ɵɵelement(2, "i", 77);
229
236
  i0.ɵɵtext(3, " Preview ");
230
237
  i0.ɵɵelementEnd();
231
- i0.ɵɵelement(4, "mj-markdown", 74);
238
+ i0.ɵɵelement(4, "mj-markdown", 78);
232
239
  i0.ɵɵelementEnd();
233
240
  } if (rf & 2) {
234
- const ctx_r2 = i0.ɵɵnextContext(4);
241
+ const ctx_r1 = i0.ɵɵnextContext(4);
235
242
  i0.ɵɵadvance(4);
236
- i0.ɵɵproperty("data", ctx_r2.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
243
+ i0.ɵɵproperty("data", ctx_r1.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_0_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", 74);
248
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.TechnicalDescription, $event) || (ctx_r1.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_0_Conditional_39_Conditional_3_Conditional_2_Template, 5, 5, "div", 75);
245
252
  } if (rf & 2) {
246
- const ctx_r2 = i0.ɵɵnextContext(3);
247
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.TechnicalDescription);
253
+ const ctx_r1 = i0.ɵɵnextContext(3);
254
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.TechnicalDescription);
248
255
  i0.ɵɵadvance(2);
249
- i0.ɵɵconditional(ctx_r2.record.TechnicalDescription ? 2 : -1);
256
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_39_Conditional_4_Template(rf, ctx) { if (rf & 1) {
259
+ i0.ɵɵelementStart(0, "div", 72);
260
+ i0.ɵɵelement(1, "mj-markdown", 78);
254
261
  i0.ɵɵelementEnd();
255
262
  } if (rf & 2) {
256
- const ctx_r2 = i0.ɵɵnextContext(3);
263
+ const ctx_r1 = i0.ɵɵnextContext(3);
257
264
  i0.ɵɵadvance();
258
- i0.ɵɵproperty("data", ctx_r2.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
265
+ i0.ɵɵproperty("data", ctx_r1.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_0_Conditional_39_Template(rf, ctx) { if (rf & 1) {
261
268
  const _r9 = i0.ɵɵgetCurrentView();
262
269
  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);
270
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_39_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.technicalDescriptionPanelExpanded, $event) || (ctx_r1.technicalDescriptionPanelExpanded = $event); return i0.ɵɵresetView($event); });
271
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_39_ng_template_1_Template, 4, 1, "ng-template", 25);
265
272
  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);
273
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Template, 3, 2)(4, MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Template, 2, 5, "div", 72);
267
274
  i0.ɵɵelementEnd()();
268
275
  } if (rf & 2) {
269
- const ctx_r2 = i0.ɵɵnextContext(2);
270
- i0.ɵɵtwoWayProperty("Expanded", ctx_r2.technicalDescriptionPanelExpanded);
276
+ const ctx_r1 = i0.ɵɵnextContext(2);
277
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.technicalDescriptionPanelExpanded);
271
278
  i0.ɵɵadvance(3);
272
- i0.ɵɵconditional(ctx_r2.EditMode ? 3 : 4);
279
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_40_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
282
+ i0.ɵɵelementStart(0, "span", 81);
276
283
  i0.ɵɵtext(1);
277
284
  i0.ɵɵelementEnd();
278
285
  } if (rf & 2) {
279
- const ctx_r2 = i0.ɵɵnextContext(4);
286
+ const ctx_r1 = i0.ɵɵnextContext(4);
280
287
  i0.ɵɵadvance();
281
- i0.ɵɵtextInterpolate(ctx_r2.queryParameters.length);
288
+ i0.ɵɵtextInterpolate(ctx_r1.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_0_Conditional_40_ng_template_1_Template(rf, ctx) { if (rf & 1) {
291
+ i0.ɵɵelementStart(0, "span", 61);
292
+ i0.ɵɵelement(1, "i", 80);
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_0_Conditional_40_ng_template_1_Conditional_3_Template, 2, 1, "span", 81);
288
295
  i0.ɵɵelementEnd();
289
296
  } if (rf & 2) {
290
- const ctx_r2 = i0.ɵɵnextContext(3);
297
+ const ctx_r1 = i0.ɵɵnextContext(3);
291
298
  i0.ɵɵadvance(3);
292
- i0.ɵɵconditional(ctx_r2.queryParameters.length > 0 ? 3 : -1);
299
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_40_Conditional_3_Template(rf, ctx) { if (rf & 1) {
302
+ i0.ɵɵelementStart(0, "div", 79);
303
+ i0.ɵɵelement(1, "mj-loading", 82);
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_0_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", 88);
309
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addParameter()); });
310
+ i0.ɵɵelement(1, "i", 89);
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_0_Conditional_40_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
315
+ i0.ɵɵelementStart(0, "div", 83);
316
+ i0.ɵɵelement(1, "i", 84);
317
+ i0.ɵɵelementStart(2, "div", 85);
311
318
  i0.ɵɵtext(3, "No Parameters Defined");
312
319
  i0.ɵɵelementEnd();
313
- i0.ɵɵelementStart(4, "div", 82);
320
+ i0.ɵɵelementStart(4, "div", 86);
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_0_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 87);
317
324
  i0.ɵɵelementEnd();
318
325
  } if (rf & 2) {
319
- const ctx_r2 = i0.ɵɵnextContext(4);
326
+ const ctx_r1 = i0.ɵɵnextContext(4);
320
327
  i0.ɵɵadvance(6);
321
- i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
328
+ i0.ɵɵconditional(ctx_r1.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_0_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", 90)(1, "button", 88);
333
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addParameter()); });
334
+ i0.ɵɵelement(2, "i", 89);
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_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
339
+ i0.ɵɵelementStart(0, "span", 98);
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_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
344
+ i0.ɵɵelementStart(0, "div", 100);
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_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
353
+ i0.ɵɵelementStart(0, "span", 102)(1, "strong");
347
354
  i0.ɵɵtext(2, "Default:");
348
355
  i0.ɵɵelementEnd();
349
- i0.ɵɵelementStart(3, "code", 100);
356
+ i0.ɵɵelementStart(3, "code", 104);
350
357
  i0.ɵɵtext(4);
351
358
  i0.ɵɵelementEnd()();
352
359
  } if (rf & 2) {
@@ -354,44 +361,44 @@ 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_0_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", 105);
367
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_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", 106);
369
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_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_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.editParameter(param_r15)); });
370
+ i0.ɵɵelement(2, "i", 107);
371
+ i0.ɵɵelementEnd();
372
+ i0.ɵɵelementStart(3, "button", 108);
373
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_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_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.deleteParameter(param_r15)); });
374
+ i0.ɵɵelement(4, "i", 109);
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_0_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", 93);
380
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Template_div_click_0_listener() { const param_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.editParameter(param_r15)); });
381
+ i0.ɵɵelementStart(1, "div", 94)(2, "div", 95);
382
+ i0.ɵɵelement(3, "i", 96);
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", 97);
386
+ i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 2, 0, "span", 98);
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", 99);
389
+ i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "div", 100);
390
+ i0.ɵɵelementStart(9, "div", 101)(10, "span", 102)(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_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_14_Template, 5, 1, "span", 102);
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_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 5, 0, "div", 103);
391
398
  i0.ɵɵelementEnd();
392
399
  } if (rf & 2) {
393
400
  const param_r15 = ctx.$implicit;
394
- const ctx_r2 = i0.ɵɵnextContext(5);
401
+ const ctx_r1 = i0.ɵɵnextContext(5);
395
402
  i0.ɵɵclassProp("required", param_r15.IsRequired);
396
403
  i0.ɵɵadvance(4);
397
404
  i0.ɵɵtextInterpolate1(" ", param_r15.Name, " ");
@@ -404,98 +411,98 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
404
411
  i0.ɵɵadvance();
405
412
  i0.ɵɵconditional(param_r15.DefaultValue ? 14 : -1);
406
413
  i0.ɵɵadvance();
407
- i0.ɵɵconditional(ctx_r2.EditMode ? 15 : -1);
414
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_40_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
417
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 90);
418
+ i0.ɵɵelementStart(1, "div", 91);
419
+ i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Template, 16, 8, "div", 92, _forTrack1);
413
420
  i0.ɵɵelementEnd();
414
421
  } if (rf & 2) {
415
- const ctx_r2 = i0.ɵɵnextContext(4);
416
- i0.ɵɵconditional(ctx_r2.EditMode ? 0 : -1);
422
+ const ctx_r1 = i0.ɵɵnextContext(4);
423
+ i0.ɵɵconditional(ctx_r1.EditMode ? 0 : -1);
417
424
  i0.ɵɵadvance(2);
418
- i0.ɵɵrepeater(ctx_r2.queryParameters);
425
+ i0.ɵɵrepeater(ctx_r1.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_0_Conditional_40_Conditional_4_Template(rf, ctx) { if (rf & 1) {
428
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_0_Template, 7, 1, "div", 83)(1, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_Template, 4, 1);
422
429
  } if (rf & 2) {
423
- const ctx_r2 = i0.ɵɵnextContext(3);
424
- i0.ɵɵconditional(ctx_r2.queryParameters.length === 0 ? 0 : 1);
430
+ const ctx_r1 = i0.ɵɵnextContext(3);
431
+ i0.ɵɵconditional(ctx_r1.queryParameters.length === 0 ? 0 : 1);
425
432
  } }
426
- function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template(rf, ctx) { if (rf & 1) {
433
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Template(rf, ctx) { if (rf & 1) {
427
434
  const _r11 = i0.ɵɵgetCurrentView();
428
435
  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);
436
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.parametersPanelExpanded, $event) || (ctx_r1.parametersPanelExpanded = $event); return i0.ɵɵresetView($event); });
437
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_40_ng_template_1_Template, 4, 1, "ng-template", 25);
431
438
  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);
439
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_3_Template, 2, 0, "div", 79)(4, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Template, 2, 1);
433
440
  i0.ɵɵelementEnd()();
434
441
  } if (rf & 2) {
435
- const ctx_r2 = i0.ɵɵnextContext(2);
436
- i0.ɵɵtwoWayProperty("Expanded", ctx_r2.parametersPanelExpanded);
442
+ const ctx_r1 = i0.ɵɵnextContext(2);
443
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.parametersPanelExpanded);
437
444
  i0.ɵɵadvance(3);
438
- i0.ɵɵconditional(ctx_r2.isLoadingParameters ? 3 : 4);
445
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_41_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
448
+ i0.ɵɵelementStart(0, "span", 81);
442
449
  i0.ɵɵtext(1);
443
450
  i0.ɵɵelementEnd();
444
451
  } if (rf & 2) {
445
- const ctx_r2 = i0.ɵɵnextContext(4);
452
+ const ctx_r1 = i0.ɵɵnextContext(4);
446
453
  i0.ɵɵadvance();
447
- i0.ɵɵtextInterpolate(ctx_r2.queryFields.length);
454
+ i0.ɵɵtextInterpolate(ctx_r1.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_0_Conditional_41_ng_template_1_Template(rf, ctx) { if (rf & 1) {
457
+ i0.ɵɵelementStart(0, "span", 61);
458
+ i0.ɵɵelement(1, "i", 110);
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_0_Conditional_41_ng_template_1_Conditional_3_Template, 2, 1, "span", 81);
454
461
  i0.ɵɵelementEnd();
455
462
  } if (rf & 2) {
456
- const ctx_r2 = i0.ɵɵnextContext(3);
463
+ const ctx_r1 = i0.ɵɵnextContext(3);
457
464
  i0.ɵɵadvance(3);
458
- i0.ɵɵconditional(ctx_r2.queryFields.length > 0 ? 3 : -1);
465
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_41_Conditional_3_Template(rf, ctx) { if (rf & 1) {
468
+ i0.ɵɵelementStart(0, "div", 79);
469
+ i0.ɵɵelement(1, "mj-loading", 111);
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_0_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", 88);
475
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addField()); });
476
+ i0.ɵɵelement(1, "i", 89);
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_0_Conditional_41_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
481
+ i0.ɵɵelementStart(0, "div", 83);
482
+ i0.ɵɵelement(1, "i", 112);
483
+ i0.ɵɵelementStart(2, "div", 85);
477
484
  i0.ɵɵtext(3, "No Fields Defined");
478
485
  i0.ɵɵelementEnd();
479
- i0.ɵɵelementStart(4, "div", 82);
486
+ i0.ɵɵelementStart(4, "div", 86);
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_0_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 87);
483
490
  i0.ɵɵelementEnd();
484
491
  } if (rf & 2) {
485
- const ctx_r2 = i0.ɵɵnextContext(4);
492
+ const ctx_r1 = i0.ɵɵnextContext(4);
486
493
  i0.ɵɵadvance(6);
487
- i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
494
+ i0.ɵɵconditional(ctx_r1.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_0_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", 90)(1, "button", 88);
499
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addField()); });
500
+ i0.ɵɵelement(2, "i", 89);
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_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
505
+ i0.ɵɵelementStart(0, "span", 116);
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_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
514
+ i0.ɵɵelementStart(0, "div", 100);
508
515
  i0.ɵɵtext(1);
509
516
  i0.ɵɵelementEnd();
510
517
  } if (rf & 2) {
@@ -512,34 +519,34 @@ 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_0_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", 118)(1, "button", 119);
525
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_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_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.deleteField(field_r20)); });
526
+ i0.ɵɵelement(2, "i", 109);
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_0_Conditional_41_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
530
+ i0.ɵɵelementStart(0, "div", 113)(1, "div", 94)(2, "div", 95);
531
+ i0.ɵɵelement(3, "i", 114);
525
532
  i0.ɵɵtext(4);
526
533
  i0.ɵɵelementEnd();
527
- i0.ɵɵelementStart(5, "div", 93)(6, "span", 111);
534
+ i0.ɵɵelementStart(5, "div", 97)(6, "span", 115);
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_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "span", 116);
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", 99);
540
+ i0.ɵɵconditionalCreate(10, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_10_Template, 2, 1, "div", 100);
541
+ i0.ɵɵelementStart(11, "div", 101)(12, "span", 102);
542
+ i0.ɵɵelement(13, "i", 117);
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_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 3, 0, "div", 118);
539
546
  i0.ɵɵelementEnd();
540
547
  } if (rf & 2) {
541
548
  const field_r20 = ctx.$implicit;
542
- const ctx_r2 = i0.ɵɵnextContext(5);
549
+ const ctx_r1 = i0.ɵɵnextContext(5);
543
550
  i0.ɵɵadvance(4);
544
551
  i0.ɵɵtextInterpolate1(" ", field_r20.Name, " ");
545
552
  i0.ɵɵadvance(3);
@@ -551,54 +558,54 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
551
558
  i0.ɵɵadvance(4);
552
559
  i0.ɵɵtextInterpolate1(" ", field_r20.SQLFullType || field_r20.SQLBaseType, " ");
553
560
  i0.ɵɵadvance();
554
- i0.ɵɵconditional(ctx_r2.EditMode ? 15 : -1);
561
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_41_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
564
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 90);
565
+ i0.ɵɵelementStart(1, "div", 91);
566
+ i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Template, 16, 6, "div", 113, _forTrack2);
560
567
  i0.ɵɵelementEnd();
561
568
  } if (rf & 2) {
562
- const ctx_r2 = i0.ɵɵnextContext(4);
563
- i0.ɵɵconditional(ctx_r2.EditMode ? 0 : -1);
569
+ const ctx_r1 = i0.ɵɵnextContext(4);
570
+ i0.ɵɵconditional(ctx_r1.EditMode ? 0 : -1);
564
571
  i0.ɵɵadvance(2);
565
- i0.ɵɵrepeater(ctx_r2.queryFields);
572
+ i0.ɵɵrepeater(ctx_r1.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_0_Conditional_41_Conditional_4_Template(rf, ctx) { if (rf & 1) {
575
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_0_Template, 7, 1, "div", 83)(1, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_Template, 4, 1);
569
576
  } if (rf & 2) {
570
- const ctx_r2 = i0.ɵɵnextContext(3);
571
- i0.ɵɵconditional(ctx_r2.queryFields.length === 0 ? 0 : 1);
577
+ const ctx_r1 = i0.ɵɵnextContext(3);
578
+ i0.ɵɵconditional(ctx_r1.queryFields.length === 0 ? 0 : 1);
572
579
  } }
573
- function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template(rf, ctx) { if (rf & 1) {
580
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Template(rf, ctx) { if (rf & 1) {
574
581
  const _r17 = i0.ɵɵgetCurrentView();
575
582
  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);
583
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.fieldsPanelExpanded, $event) || (ctx_r1.fieldsPanelExpanded = $event); return i0.ɵɵresetView($event); });
584
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_41_ng_template_1_Template, 4, 1, "ng-template", 25);
578
585
  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);
586
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_3_Template, 2, 0, "div", 79)(4, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Template, 2, 1);
580
587
  i0.ɵɵelementEnd()();
581
588
  } if (rf & 2) {
582
- const ctx_r2 = i0.ɵɵnextContext(2);
583
- i0.ɵɵtwoWayProperty("Expanded", ctx_r2.fieldsPanelExpanded);
589
+ const ctx_r1 = i0.ɵɵnextContext(2);
590
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.fieldsPanelExpanded);
584
591
  i0.ɵɵadvance(3);
585
- i0.ɵɵconditional(ctx_r2.isLoadingFields ? 3 : 4);
592
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_42_ng_template_1_Template(rf, ctx) { if (rf & 1) {
595
+ i0.ɵɵelementStart(0, "span", 61);
596
+ i0.ɵɵelement(1, "i", 122);
590
597
  i0.ɵɵtext(2, " Dependent Queries ");
591
- i0.ɵɵelementStart(3, "span", 77);
598
+ i0.ɵɵelementStart(3, "span", 81);
592
599
  i0.ɵɵtext(4);
593
600
  i0.ɵɵelementEnd()();
594
601
  } if (rf & 2) {
595
- const ctx_r2 = i0.ɵɵnextContext(3);
602
+ const ctx_r1 = i0.ɵɵnextContext(3);
596
603
  i0.ɵɵadvance(4);
597
- i0.ɵɵtextInterpolate(ctx_r2.DependentQueries.length);
604
+ i0.ɵɵtextInterpolate(ctx_r1.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_0_Conditional_42_For_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
607
+ i0.ɵɵelementStart(0, "div", 101)(1, "span", 102);
608
+ i0.ɵɵelement(2, "i", 128);
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_0_Conditional_42_For_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
617
+ i0.ɵɵelementStart(0, "div", 101)(1, "span", 102)(2, "strong");
611
618
  i0.ɵɵtext(3, "Alias:");
612
619
  i0.ɵɵelementEnd();
613
- i0.ɵɵelementStart(4, "code", 100);
620
+ i0.ɵɵelementStart(4, "code", 104);
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_0_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", 123);
631
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Template_div_click_0_listener() { const dep_r24 = i0.ɵɵrestoreView(_r23).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onDependentQueryClick(dep_r24)); });
632
+ i0.ɵɵelementStart(1, "div", 94)(2, "div", 95);
633
+ i0.ɵɵelement(3, "i", 124);
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", 99);
637
+ i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Conditional_6_Template, 4, 1, "div", 101);
638
+ i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Conditional_7_Template, 6, 1, "div", 101);
632
639
  i0.ɵɵelementEnd();
633
- i0.ɵɵelementStart(8, "div", 121)(9, "span", 122);
634
- i0.ɵɵelement(10, "i", 123);
640
+ i0.ɵɵelementStart(8, "div", 125)(9, "span", 126);
641
+ i0.ɵɵelement(10, "i", 127);
635
642
  i0.ɵɵtext(11, " Open ");
636
643
  i0.ɵɵelementEnd()()();
637
644
  } if (rf & 2) {
@@ -643,424 +650,590 @@ 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_0_Conditional_42_Template(rf, ctx) { if (rf & 1) {
647
654
  const _r22 = i0.ɵɵgetCurrentView();
648
655
  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);
656
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_42_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.dependentsPanelExpanded, $event) || (ctx_r1.dependentsPanelExpanded = $event); return i0.ɵɵresetView($event); });
657
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_42_ng_template_1_Template, 5, 1, "ng-template", 25);
658
+ i0.ɵɵelementStart(2, "div", 34)(3, "div", 120);
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", 91);
666
+ i0.ɵɵrepeaterCreate(9, MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Template, 12, 3, "div", 121, _forTrack2);
660
667
  i0.ɵɵelementEnd()()();
661
668
  } if (rf & 2) {
662
- const ctx_r2 = i0.ɵɵnextContext(2);
663
- i0.ɵɵtwoWayProperty("Expanded", ctx_r2.dependentsPanelExpanded);
669
+ const ctx_r1 = i0.ɵɵnextContext(2);
670
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.dependentsPanelExpanded);
664
671
  i0.ɵɵadvance(6);
665
672
  i0.ɵɵtextInterpolate1("", "{{query:\"...\"}}", " ");
666
673
  i0.ɵɵadvance(3);
667
- i0.ɵɵrepeater(ctx_r2.DependentQueries);
674
+ i0.ɵɵrepeater(ctx_r1.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_0_Conditional_43_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
677
+ i0.ɵɵelementStart(0, "span", 81);
671
678
  i0.ɵɵtext(1);
672
679
  i0.ɵɵelementEnd();
673
680
  } if (rf & 2) {
674
- const ctx_r2 = i0.ɵɵnextContext(4);
681
+ const ctx_r1 = i0.ɵɵnextContext(4);
675
682
  i0.ɵɵadvance();
676
- i0.ɵɵtextInterpolate(ctx_r2.queryEntities.length);
683
+ i0.ɵɵtextInterpolate(ctx_r1.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_0_Conditional_43_ng_template_1_Template(rf, ctx) { if (rf & 1) {
686
+ i0.ɵɵelementStart(0, "span", 61);
687
+ i0.ɵɵelement(1, "i", 129);
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_0_Conditional_43_ng_template_1_Conditional_3_Template, 2, 1, "span", 81);
683
690
  i0.ɵɵelementEnd();
684
691
  } if (rf & 2) {
685
- const ctx_r2 = i0.ɵɵnextContext(3);
692
+ const ctx_r1 = i0.ɵɵnextContext(3);
686
693
  i0.ɵɵadvance(3);
687
- i0.ɵɵconditional(ctx_r2.queryEntities.length > 0 ? 3 : -1);
694
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_43_Conditional_3_Template(rf, ctx) { if (rf & 1) {
697
+ i0.ɵɵelementStart(0, "div", 79);
698
+ i0.ɵɵelement(1, "mj-loading", 130);
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_0_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", 88);
704
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addEntity()); });
705
+ i0.ɵɵelement(1, "i", 89);
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_0_Conditional_43_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
710
+ i0.ɵɵelementStart(0, "div", 83);
711
+ i0.ɵɵelement(1, "i", 131);
712
+ i0.ɵɵelementStart(2, "div", 85);
706
713
  i0.ɵɵtext(3, "No Entities Tracked");
707
714
  i0.ɵɵelementEnd();
708
- i0.ɵɵelementStart(4, "div", 82);
715
+ i0.ɵɵelementStart(4, "div", 86);
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_0_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 87);
712
719
  i0.ɵɵelementEnd();
713
720
  } if (rf & 2) {
714
- const ctx_r2 = i0.ɵɵnextContext(4);
721
+ const ctx_r1 = i0.ɵɵnextContext(4);
715
722
  i0.ɵɵadvance(6);
716
- i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
723
+ i0.ɵɵconditional(ctx_r1.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_0_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", 90)(1, "button", 88);
728
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addEntity()); });
729
+ i0.ɵɵelement(2, "i", 89);
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_0_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", 133)(1, "mj-dropdown", 134);
736
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_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;
733
- const ctx_r2 = i0.ɵɵnextContext(5);
740
+ const ctx_r1 = i0.ɵɵnextContext(5);
734
741
  i0.ɵɵadvance();
735
742
  i0.ɵɵtwoWayProperty("ngModel", entity_r29.EntityID);
736
- i0.ɵɵproperty("name", "entity_" + entity_r29.ID)("Data", ctx_r2.getEntityOptions())("ValuePrimitive", true);
743
+ i0.ɵɵproperty("name", "entity_" + entity_r29.ID)("Data", ctx_r1.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_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
746
+ i0.ɵɵelementStart(0, "div", 99)(1, "div", 101)(2, "span", 102);
747
+ i0.ɵɵelement(3, "i", 135);
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_0_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", 118)(1, "button", 136);
754
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_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_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.deleteEntity(entity_r29)); });
755
+ i0.ɵɵelement(2, "i", 109);
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_0_Conditional_43_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
759
+ i0.ɵɵelementStart(0, "div", 113)(1, "div", 94)(2, "div", 95);
760
+ i0.ɵɵelement(3, "i", 132);
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_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_5_Template, 2, 4, "div", 133);
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_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 5, 0, "div", 99);
766
+ i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_7_Template, 3, 0, "div", 118);
760
767
  i0.ɵɵelementEnd();
761
768
  } if (rf & 2) {
762
769
  const entity_r29 = ctx.$implicit;
763
- const ctx_r2 = i0.ɵɵnextContext(5);
770
+ const ctx_r1 = i0.ɵɵnextContext(5);
764
771
  i0.ɵɵadvance(4);
765
772
  i0.ɵɵtextInterpolate1(" ", entity_r29.Entity || "Select Entity...", " ");
766
773
  i0.ɵɵadvance();
767
- i0.ɵɵconditional(ctx_r2.EditMode ? 5 : -1);
774
+ i0.ɵɵconditional(ctx_r1.EditMode ? 5 : -1);
768
775
  i0.ɵɵadvance();
769
- i0.ɵɵconditional(!ctx_r2.EditMode && entity_r29.Entity ? 6 : -1);
776
+ i0.ɵɵconditional(!ctx_r1.EditMode && entity_r29.Entity ? 6 : -1);
770
777
  i0.ɵɵadvance();
771
- i0.ɵɵconditional(ctx_r2.EditMode ? 7 : -1);
778
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_43_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
781
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 90);
782
+ i0.ɵɵelementStart(1, "div", 91);
783
+ i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Template, 8, 4, "div", 113, _forTrack2);
777
784
  i0.ɵɵelementEnd();
778
785
  } if (rf & 2) {
779
- const ctx_r2 = i0.ɵɵnextContext(4);
780
- i0.ɵɵconditional(ctx_r2.EditMode ? 0 : -1);
786
+ const ctx_r1 = i0.ɵɵnextContext(4);
787
+ i0.ɵɵconditional(ctx_r1.EditMode ? 0 : -1);
781
788
  i0.ɵɵadvance(2);
782
- i0.ɵɵrepeater(ctx_r2.queryEntities);
789
+ i0.ɵɵrepeater(ctx_r1.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_0_Conditional_43_Conditional_4_Template(rf, ctx) { if (rf & 1) {
792
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_0_Template, 7, 1, "div", 83)(1, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Template, 4, 1);
786
793
  } if (rf & 2) {
787
- const ctx_r2 = i0.ɵɵnextContext(3);
788
- i0.ɵɵconditional(ctx_r2.queryEntities.length === 0 ? 0 : 1);
794
+ const ctx_r1 = i0.ɵɵnextContext(3);
795
+ i0.ɵɵconditional(ctx_r1.queryEntities.length === 0 ? 0 : 1);
789
796
  } }
790
- function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template(rf, ctx) { if (rf & 1) {
797
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
791
798
  const _r25 = i0.ɵɵgetCurrentView();
792
799
  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);
800
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.entitiesPanelExpanded, $event) || (ctx_r1.entitiesPanelExpanded = $event); return i0.ɵɵresetView($event); });
801
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_43_ng_template_1_Template, 4, 1, "ng-template", 25);
795
802
  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);
803
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_3_Template, 2, 0, "div", 79)(4, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Template, 2, 1);
797
804
  i0.ɵɵelementEnd()();
798
805
  } if (rf & 2) {
799
- const ctx_r2 = i0.ɵɵnextContext(2);
800
- i0.ɵɵtwoWayProperty("Expanded", ctx_r2.entitiesPanelExpanded);
806
+ const ctx_r1 = i0.ɵɵnextContext(2);
807
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.entitiesPanelExpanded);
801
808
  i0.ɵɵadvance(3);
802
- i0.ɵɵconditional(ctx_r2.isLoadingEntities ? 3 : 4);
809
+ i0.ɵɵconditional(ctx_r1.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_0_ng_template_45_Template(rf, ctx) { if (rf & 1) {
812
+ i0.ɵɵelementStart(0, "span", 61);
813
+ i0.ɵɵelement(1, "i", 137);
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_0_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", 138);
820
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_52_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Reusable, $event) || (ctx_r1.record.Reusable = $event); return i0.ɵɵresetView($event); });
821
+ i0.ɵɵelementEnd();
822
+ i0.ɵɵelementStart(1, "div", 139);
823
+ i0.ɵɵtext(2, "Allow other queries to reference this query using composition syntax");
814
824
  i0.ɵɵelementEnd();
815
825
  } if (rf & 2) {
816
- const ctx_r2 = i0.ɵɵnextContext(2);
817
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.UsesTemplate);
826
+ const ctx_r1 = i0.ɵɵnextContext(2);
827
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Reusable);
818
828
  } }
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);
829
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_53_Conditional_1_Template(rf, ctx) { if (rf & 1) {
830
+ i0.ɵɵelementStart(0, "span", 140);
831
+ i0.ɵɵelement(1, "i", 142);
832
+ i0.ɵɵtext(2, " Reusable");
833
+ i0.ɵɵelementEnd();
834
+ } }
835
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_53_Conditional_2_Template(rf, ctx) { if (rf & 1) {
836
+ i0.ɵɵelementStart(0, "span", 141);
837
+ i0.ɵɵelement(1, "i", 143);
838
+ i0.ɵɵtext(2, " Not Reusable");
839
+ i0.ɵɵelementEnd();
840
+ } }
841
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_53_Template(rf, ctx) { if (rf & 1) {
842
+ i0.ɵɵelementStart(0, "div", 39);
843
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_53_Conditional_1_Template, 3, 0, "span", 140)(2, MJQueryFormComponentExtended_Conditional_0_Conditional_53_Conditional_2_Template, 3, 0, "span", 141);
844
+ i0.ɵɵelementEnd();
845
+ } if (rf & 2) {
846
+ const ctx_r1 = i0.ɵɵnextContext(2);
847
+ i0.ɵɵadvance();
848
+ i0.ɵɵconditional(ctx_r1.record.Reusable ? 1 : 2);
849
+ } }
850
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_58_Template(rf, ctx) { if (rf & 1) {
851
+ const _r32 = i0.ɵɵgetCurrentView();
852
+ i0.ɵɵelementStart(0, "mj-switch", 144);
853
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_58_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.CacheEnabled, $event) || (ctx_r1.record.CacheEnabled = $event); return i0.ɵɵresetView($event); });
854
+ i0.ɵɵelementEnd();
855
+ i0.ɵɵelementStart(1, "div", 139);
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_r1 = i0.ɵɵnextContext(2);
860
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.CacheEnabled);
861
+ } }
862
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_59_Conditional_1_Template(rf, ctx) { if (rf & 1) {
863
+ i0.ɵɵelementStart(0, "span", 140);
864
+ i0.ɵɵelement(1, "i", 142);
865
+ i0.ɵɵtext(2, " Caching On");
866
+ i0.ɵɵelementEnd();
867
+ } }
868
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Template(rf, ctx) { if (rf & 1) {
869
+ i0.ɵɵelementStart(0, "span", 141);
870
+ i0.ɵɵelement(1, "i", 143);
871
+ i0.ɵɵtext(2, " Caching Off");
872
+ i0.ɵɵelementEnd();
873
+ } }
874
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_59_Template(rf, ctx) { if (rf & 1) {
875
+ i0.ɵɵelementStart(0, "div", 39);
876
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_59_Conditional_1_Template, 3, 0, "span", 140)(2, MJQueryFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Template, 3, 0, "span", 141);
877
+ i0.ɵɵelementEnd();
878
+ } if (rf & 2) {
879
+ const ctx_r1 = i0.ɵɵnextContext(2);
880
+ i0.ɵɵadvance();
881
+ i0.ɵɵconditional(ctx_r1.record.CacheEnabled ? 1 : 2);
882
+ } }
883
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_4_Template(rf, ctx) { if (rf & 1) {
884
+ const _r33 = i0.ɵɵgetCurrentView();
885
+ i0.ɵɵelementStart(0, "input", 146);
886
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_4_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.CacheTTLMinutes, $event) || (ctx_r1.record.CacheTTLMinutes = $event); return i0.ɵɵresetView($event); });
887
+ i0.ɵɵelementEnd();
888
+ i0.ɵɵelementStart(1, "div", 139);
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_r1 = i0.ɵɵnextContext(3);
893
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.CacheTTLMinutes);
894
+ } }
895
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_5_Template(rf, ctx) { if (rf & 1) {
896
+ i0.ɵɵelementStart(0, "div", 39);
897
+ i0.ɵɵtext(1);
898
+ i0.ɵɵelementEnd();
899
+ } if (rf & 2) {
900
+ const ctx_r1 = i0.ɵɵnextContext(3);
901
+ i0.ɵɵadvance();
902
+ i0.ɵɵtextInterpolate(ctx_r1.record.CacheTTLMinutes != null ? ctx_r1.record.CacheTTLMinutes + " min" : "Default");
903
+ } }
904
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_60_Template(rf, ctx) { if (rf & 1) {
905
+ i0.ɵɵelementStart(0, "div", 36)(1, "label", 37);
906
+ i0.ɵɵelement(2, "i", 145);
907
+ i0.ɵɵtext(3, " Cache TTL (Minutes) ");
908
+ i0.ɵɵelementEnd();
909
+ i0.ɵɵconditionalCreate(4, MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_4_Template, 3, 1)(5, MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_5_Template, 2, 1, "div", 39);
910
+ i0.ɵɵelementEnd();
911
+ } if (rf & 2) {
912
+ const ctx_r1 = i0.ɵɵnextContext(2);
913
+ i0.ɵɵadvance(4);
914
+ i0.ɵɵconditional(ctx_r1.EditMode ? 4 : 5);
915
+ } }
916
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_65_Template(rf, ctx) { if (rf & 1) {
917
+ const _r34 = i0.ɵɵgetCurrentView();
918
+ i0.ɵɵelementStart(0, "mj-switch", 147);
919
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_65_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.AuditQueryRuns, $event) || (ctx_r1.record.AuditQueryRuns = $event); return i0.ɵɵresetView($event); });
920
+ i0.ɵɵelementEnd();
921
+ i0.ɵɵelementStart(1, "div", 139);
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_r1 = i0.ɵɵnextContext(2);
926
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.AuditQueryRuns);
927
+ } }
928
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_66_Conditional_1_Template(rf, ctx) { if (rf & 1) {
929
+ i0.ɵɵelementStart(0, "span", 140);
930
+ i0.ɵɵelement(1, "i", 142);
931
+ i0.ɵɵtext(2, " Auditing On");
932
+ i0.ɵɵelementEnd();
933
+ } }
934
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_66_Conditional_2_Template(rf, ctx) { if (rf & 1) {
935
+ i0.ɵɵelementStart(0, "span", 141);
936
+ i0.ɵɵelement(1, "i", 143);
937
+ i0.ɵɵtext(2, " Auditing Off");
938
+ i0.ɵɵelementEnd();
939
+ } }
940
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_66_Template(rf, ctx) { if (rf & 1) {
941
+ i0.ɵɵelementStart(0, "div", 39);
942
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_66_Conditional_1_Template, 3, 0, "span", 140)(2, MJQueryFormComponentExtended_Conditional_0_Conditional_66_Conditional_2_Template, 3, 0, "span", 141);
943
+ i0.ɵɵelementEnd();
944
+ } if (rf & 2) {
945
+ const ctx_r1 = i0.ɵɵnextContext(2);
946
+ i0.ɵɵadvance();
947
+ i0.ɵɵconditional(ctx_r1.record.AuditQueryRuns ? 1 : 2);
948
+ } }
949
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_71_Template(rf, ctx) { if (rf & 1) {
950
+ const _r35 = i0.ɵɵgetCurrentView();
951
+ i0.ɵɵelementStart(0, "mj-switch", 148);
952
+ i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_71_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.UsesTemplate, $event) || (ctx_r1.record.UsesTemplate = $event); return i0.ɵɵresetView($event); });
953
+ i0.ɵɵelementEnd();
954
+ } if (rf & 2) {
955
+ const ctx_r1 = i0.ɵɵnextContext(2);
956
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.UsesTemplate);
957
+ } }
958
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_72_Conditional_1_Template(rf, ctx) { if (rf & 1) {
959
+ i0.ɵɵelementStart(0, "span", 140);
960
+ i0.ɵɵelement(1, "i", 142);
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_0_Conditional_72_Conditional_2_Template(rf, ctx) { if (rf & 1) {
965
+ i0.ɵɵelementStart(0, "span", 141);
966
+ i0.ɵɵelement(1, "i", 143);
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) {
832
- 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);
970
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_72_Template(rf, ctx) { if (rf & 1) {
971
+ i0.ɵɵelementStart(0, "div", 39);
972
+ i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_72_Conditional_1_Template, 3, 0, "span", 140)(2, MJQueryFormComponentExtended_Conditional_0_Conditional_72_Conditional_2_Template, 3, 0, "span", 141);
834
973
  i0.ɵɵelementEnd();
835
974
  } if (rf & 2) {
836
- const ctx_r2 = i0.ɵɵnextContext(2);
975
+ const ctx_r1 = i0.ɵɵnextContext(2);
837
976
  i0.ɵɵadvance();
838
- i0.ɵɵconditional(ctx_r2.record.UsesTemplate ? 1 : 2);
977
+ i0.ɵɵconditional(ctx_r1.record.UsesTemplate ? 1 : 2);
839
978
  } }
840
- function MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template(rf, ctx) { if (rf & 1) {
979
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_85_Template(rf, ctx) { if (rf & 1) {
841
980
  i0.ɵɵelementStart(0, "div", 36)(1, "label", 37);
842
- i0.ɵɵelement(2, "i", 139);
981
+ i0.ɵɵelement(2, "i", 149);
843
982
  i0.ɵɵtext(3, " Quality Rank ");
844
983
  i0.ɵɵelementEnd();
845
- i0.ɵɵelementStart(4, "div", 40);
984
+ i0.ɵɵelementStart(4, "div", 39);
846
985
  i0.ɵɵtext(5);
847
986
  i0.ɵɵelementEnd()();
848
987
  } if (rf & 2) {
849
- const ctx_r2 = i0.ɵɵnextContext(2);
988
+ const ctx_r1 = i0.ɵɵnextContext(2);
850
989
  i0.ɵɵadvance(5);
851
- i0.ɵɵtextInterpolate1("", ctx_r2.record.QualityRank, "/10");
990
+ i0.ɵɵtextInterpolate1("", ctx_r1.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_0_Conditional_86_ng_template_1_Template(rf, ctx) { if (rf & 1) {
993
+ i0.ɵɵelementStart(0, "span", 61);
994
+ i0.ɵɵelement(1, "i", 150);
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_0_Conditional_86_Conditional_3_Template(rf, ctx) { if (rf & 1) {
999
+ i0.ɵɵelementStart(0, "div", 79);
1000
+ i0.ɵɵelement(1, "mj-loading", 151);
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_0_Conditional_86_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1004
+ i0.ɵɵelementStart(0, "div", 83);
1005
+ i0.ɵɵelement(1, "i", 152);
1006
+ i0.ɵɵelementStart(2, "div", 85);
868
1007
  i0.ɵɵtext(3, "No Permissions Set");
869
1008
  i0.ɵɵelementEnd();
870
- i0.ɵɵelementStart(4, "div", 82);
1009
+ i0.ɵɵelementStart(4, "div", 86);
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_0_Conditional_86_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1014
+ i0.ɵɵelement(0, "mj-explorer-entity-data-grid", 153);
876
1015
  } if (rf & 2) {
877
- const ctx_r2 = i0.ɵɵnextContext(5);
878
- i0.ɵɵproperty("Params", ctx_r2.BuildRelationshipViewParamsByEntityName("MJ: Query Permissions", "QueryID"))("NewRecordValues", ctx_r2.NewRecordValues("MJ: Query Permissions"))("AllowLoad", true)("ShowToolbar", false);
1016
+ const ctx_r1 = i0.ɵɵnextContext(5);
1017
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: Query Permissions", "QueryID"))("NewRecordValues", ctx_r1.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_0_Conditional_86_Conditional_4_Conditional_1_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
1020
+ i0.ɵɵelementStart(0, "div", 155);
1021
+ i0.ɵɵelement(1, "i", 156);
1022
+ i0.ɵɵelementStart(2, "div", 157)(3, "div", 158);
884
1023
  i0.ɵɵtext(4);
885
1024
  i0.ɵɵelementEnd();
886
- i0.ɵɵelementStart(5, "div", 149);
1025
+ i0.ɵɵelementStart(5, "div", 159);
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", 160);
1029
+ i0.ɵɵelement(8, "i", 51);
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_0_Conditional_86_Conditional_4_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1038
+ i0.ɵɵelementStart(0, "div", 154);
1039
+ i0.ɵɵrepeaterCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Conditional_1_For_2_Template, 10, 1, "div", 155, _forTrack2);
901
1040
  i0.ɵɵelementEnd();
902
1041
  } if (rf & 2) {
903
- const ctx_r2 = i0.ɵɵnextContext(5);
1042
+ const ctx_r1 = i0.ɵɵnextContext(5);
904
1043
  i0.ɵɵadvance();
905
- i0.ɵɵrepeater(ctx_r2.queryPermissions);
1044
+ i0.ɵɵrepeater(ctx_r1.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_0_Conditional_86_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1047
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Conditional_0_Template, 1, 4, "mj-explorer-entity-data-grid", 153)(1, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Conditional_1_Template, 3, 0, "div", 154);
909
1048
  } if (rf & 2) {
910
- const ctx_r2 = i0.ɵɵnextContext(4);
911
- i0.ɵɵconditional(ctx_r2.EditMode ? 0 : 1);
1049
+ const ctx_r1 = i0.ɵɵnextContext(4);
1050
+ i0.ɵɵconditional(ctx_r1.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_0_Conditional_86_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1053
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_0_Template, 6, 0, "div", 83)(1, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Template, 2, 1);
915
1054
  } if (rf & 2) {
916
- const ctx_r2 = i0.ɵɵnextContext(3);
917
- i0.ɵɵconditional(ctx_r2.queryPermissions.length === 0 && !ctx_r2.EditMode ? 0 : 1);
1055
+ const ctx_r1 = i0.ɵɵnextContext(3);
1056
+ i0.ɵɵconditional(ctx_r1.queryPermissions.length === 0 && !ctx_r1.EditMode ? 0 : 1);
918
1057
  } }
919
- function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Template(rf, ctx) { if (rf & 1) {
920
- const _r32 = i0.ɵɵgetCurrentView();
1058
+ function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Template(rf, ctx) { if (rf & 1) {
1059
+ const _r36 = i0.ɵɵgetCurrentView();
921
1060
  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);
1061
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.permissionsPanelExpanded, $event) || (ctx_r1.permissionsPanelExpanded = $event); return i0.ɵɵresetView($event); });
1062
+ i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_86_ng_template_1_Template, 3, 0, "ng-template", 25);
924
1063
  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);
1064
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_3_Template, 2, 0, "div", 79)(4, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Template, 2, 1);
926
1065
  i0.ɵɵelementEnd()();
927
1066
  } if (rf & 2) {
928
- const ctx_r2 = i0.ɵɵnextContext(2);
929
- i0.ɵɵtwoWayProperty("Expanded", ctx_r2.permissionsPanelExpanded);
1067
+ const ctx_r1 = i0.ɵɵnextContext(2);
1068
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.permissionsPanelExpanded);
930
1069
  i0.ɵɵadvance(3);
931
- i0.ɵɵconditional(ctx_r2.isLoadingPermissions ? 3 : 4);
1070
+ i0.ɵɵconditional(ctx_r1.isLoadingPermissions ? 3 : 4);
932
1071
  } }
933
- function MJQueryFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1072
+ function MJQueryFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf & 1) {
934
1073
  const _r1 = i0.ɵɵgetCurrentView();
935
- i0.ɵɵelementStart(0, "form", 3, 0);
936
- 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);
940
- i0.ɵɵelementEnd();
941
- i0.ɵɵelementStart(10, "div", 12);
942
- i0.ɵɵconditionalCreate(11, MJQueryFormComponentExtended_Conditional_1_Conditional_11_Template, 3, 1, "button", 13);
1074
+ i0.ɵɵelementStart(0, "mj-record-form-container", 2);
1075
+ i0.ɵɵlistener("Navigate", function MJQueryFormComponentExtended_Conditional_0_Template_mj_record_form_container_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("DeleteRequested", function MJQueryFormComponentExtended_Conditional_0_Template_mj_record_form_container_DeleteRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteRequested()); })("FavoriteToggled", function MJQueryFormComponentExtended_Conditional_0_Template_mj_record_form_container_FavoriteToggled_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFavoriteToggled()); })("HistoryRequested", function MJQueryFormComponentExtended_Conditional_0_Template_mj_record_form_container_HistoryRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnHistoryRequested()); })("ListManagementRequested", function MJQueryFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
1076
+ i0.ɵɵelementStart(1, "form", 3, 0);
1077
+ i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_3_Template, 4, 0, "div", 4);
1078
+ i0.ɵɵelementStart(4, "div", 5)(5, "div", 6)(6, "div", 7)(7, "div", 8);
1079
+ i0.ɵɵelement(8, "i", 9);
1080
+ i0.ɵɵconditionalCreate(9, MJQueryFormComponentExtended_Conditional_0_Conditional_9_Template, 1, 1, "input", 10)(10, MJQueryFormComponentExtended_Conditional_0_Conditional_10_Template, 2, 1, "h4", 11);
1081
+ i0.ɵɵelementEnd();
1082
+ i0.ɵɵelementStart(11, "div", 12);
1083
+ i0.ɵɵconditionalCreate(12, MJQueryFormComponentExtended_Conditional_0_Conditional_12_Template, 3, 1, "button", 13);
943
1084
  i0.ɵɵelementEnd()();
944
- i0.ɵɵelementStart(12, "div", 14)(13, "div", 15)(14, "label", 16);
945
- i0.ɵɵtext(15, "Category");
1085
+ i0.ɵɵelementStart(13, "div", 14)(14, "div", 15)(15, "label", 16);
1086
+ i0.ɵɵtext(16, "Category");
946
1087
  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);
1088
+ i0.ɵɵconditionalCreate(17, MJQueryFormComponentExtended_Conditional_0_Conditional_17_Template, 1, 7, "mj-tree-dropdown", 17)(18, MJQueryFormComponentExtended_Conditional_0_Conditional_18_Template, 2, 1, "span", 18);
948
1089
  i0.ɵɵelementEnd();
949
- i0.ɵɵelementStart(18, "div", 15)(19, "label", 16);
950
- i0.ɵɵtext(20, "Status");
1090
+ i0.ɵɵelementStart(19, "div", 15)(20, "label", 16);
1091
+ i0.ɵɵtext(21, "Status");
951
1092
  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);
1093
+ i0.ɵɵconditionalCreate(22, MJQueryFormComponentExtended_Conditional_0_Conditional_22_Template, 1, 3, "mj-dropdown", 19)(23, MJQueryFormComponentExtended_Conditional_0_Conditional_23_Template, 3, 5, "span", 20);
953
1094
  i0.ɵɵelementEnd()();
954
- i0.ɵɵconditionalCreate(23, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template, 3, 1, "div", 21);
1095
+ i0.ɵɵconditionalCreate(24, MJQueryFormComponentExtended_Conditional_0_Conditional_24_Template, 3, 1, "div", 21);
955
1096
  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);
1097
+ i0.ɵɵconditionalCreate(25, MJQueryFormComponentExtended_Conditional_0_Conditional_25_Template, 7, 8, "div", 22);
1098
+ i0.ɵɵelementStart(26, "div", 23)(27, "mj-accordion-panel", 24);
1099
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_27_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.sqlPanelExpanded, $event) || (ctx_r1.sqlPanelExpanded = $event); return i0.ɵɵresetView($event); });
1100
+ i0.ɵɵtemplate(28, MJQueryFormComponentExtended_Conditional_0_ng_template_28_Template, 5, 1, "ng-template", 25);
1101
+ i0.ɵɵelementStart(29, "div", 26)(30, "button", 27);
1102
+ i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleFiltersHelp()); });
1103
+ i0.ɵɵelement(31, "i", 28);
1104
+ i0.ɵɵelementStart(32, "span");
1105
+ i0.ɵɵtext(33, "Filters Help");
1106
+ i0.ɵɵelementEnd();
1107
+ i0.ɵɵelement(34, "i", 29);
967
1108
  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)); });
1109
+ i0.ɵɵelementStart(35, "div", 30)(36, "mj-code-editor", 31, 1);
1110
+ i0.ɵɵlistener("change", function MJQueryFormComponentExtended_Conditional_0_Template_mj_code_editor_change_36_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSQLChange($event)); })("CompositionTokenClick", function MJQueryFormComponentExtended_Conditional_0_Template_mj_code_editor_CompositionTokenClick_36_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCompositionTokenClick($event)); });
970
1111
  i0.ɵɵelementEnd();
971
- i0.ɵɵconditionalCreate(37, MJQueryFormComponentExtended_Conditional_1_Conditional_37_Template, 7, 0, "div", 32);
1112
+ i0.ɵɵconditionalCreate(38, MJQueryFormComponentExtended_Conditional_0_Conditional_38_Template, 7, 0, "div", 32);
972
1113
  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);
1114
+ i0.ɵɵconditionalCreate(39, MJQueryFormComponentExtended_Conditional_0_Conditional_39_Template, 5, 2, "mj-accordion-panel", 33);
1115
+ i0.ɵɵconditionalCreate(40, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Template, 5, 2, "mj-accordion-panel", 33);
1116
+ i0.ɵɵconditionalCreate(41, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Template, 5, 2, "mj-accordion-panel", 33);
1117
+ i0.ɵɵconditionalCreate(42, MJQueryFormComponentExtended_Conditional_0_Conditional_42_Template, 11, 2, "mj-accordion-panel", 33);
1118
+ i0.ɵɵconditionalCreate(43, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Template, 5, 2, "mj-accordion-panel", 33);
1119
+ i0.ɵɵelementStart(44, "mj-accordion-panel", 24);
1120
+ i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_44_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.detailsPanelExpanded, $event) || (ctx_r1.detailsPanelExpanded = $event); return i0.ɵɵresetView($event); });
1121
+ i0.ɵɵtemplate(45, MJQueryFormComponentExtended_Conditional_0_ng_template_45_Template, 3, 0, "ng-template", 25);
1122
+ i0.ɵɵelementStart(46, "div", 34)(47, "div", 35)(48, "div", 36)(49, "label", 37);
1123
+ i0.ɵɵelement(50, "i", 38);
1124
+ i0.ɵɵtext(51, " Reusable ");
1125
+ i0.ɵɵelementEnd();
1126
+ i0.ɵɵconditionalCreate(52, MJQueryFormComponentExtended_Conditional_0_Conditional_52_Template, 3, 1)(53, MJQueryFormComponentExtended_Conditional_0_Conditional_53_Template, 3, 1, "div", 39);
1127
+ i0.ɵɵelementEnd();
1128
+ i0.ɵɵelementStart(54, "div", 36)(55, "label", 37);
1129
+ i0.ɵɵelement(56, "i", 40);
1130
+ i0.ɵɵtext(57, " Cache Enabled ");
1131
+ i0.ɵɵelementEnd();
1132
+ i0.ɵɵconditionalCreate(58, MJQueryFormComponentExtended_Conditional_0_Conditional_58_Template, 3, 1)(59, MJQueryFormComponentExtended_Conditional_0_Conditional_59_Template, 3, 1, "div", 39);
1133
+ i0.ɵɵelementEnd();
1134
+ i0.ɵɵconditionalCreate(60, MJQueryFormComponentExtended_Conditional_0_Conditional_60_Template, 6, 1, "div", 36);
1135
+ i0.ɵɵelementStart(61, "div", 36)(62, "label", 37);
1136
+ i0.ɵɵelement(63, "i", 41);
1137
+ i0.ɵɵtext(64, " Audit Runs ");
1138
+ i0.ɵɵelementEnd();
1139
+ i0.ɵɵconditionalCreate(65, MJQueryFormComponentExtended_Conditional_0_Conditional_65_Template, 3, 1)(66, MJQueryFormComponentExtended_Conditional_0_Conditional_66_Template, 3, 1, "div", 39);
1140
+ i0.ɵɵelementEnd();
1141
+ i0.ɵɵelementStart(67, "div", 36)(68, "label", 37);
1142
+ i0.ɵɵelement(69, "i", 42);
1143
+ i0.ɵɵtext(70, " Template Usage ");
1144
+ i0.ɵɵelementEnd();
1145
+ i0.ɵɵconditionalCreate(71, MJQueryFormComponentExtended_Conditional_0_Conditional_71_Template, 1, 1, "mj-switch", 43)(72, MJQueryFormComponentExtended_Conditional_0_Conditional_72_Template, 3, 1, "div", 39);
1146
+ i0.ɵɵelementEnd();
1147
+ i0.ɵɵelementStart(73, "div", 36)(74, "label", 37);
1148
+ i0.ɵɵelement(75, "i", 44);
1149
+ i0.ɵɵtext(76, " Created ");
1150
+ i0.ɵɵelementEnd();
1151
+ i0.ɵɵelementStart(77, "div", 39);
1152
+ i0.ɵɵtext(78);
993
1153
  i0.ɵɵelementEnd()();
994
- i0.ɵɵelementStart(59, "div", 36)(60, "label", 37);
995
- i0.ɵɵelement(61, "i", 42);
996
- i0.ɵɵtext(62, " Last Updated ");
1154
+ i0.ɵɵelementStart(79, "div", 36)(80, "label", 37);
1155
+ i0.ɵɵelement(81, "i", 45);
1156
+ i0.ɵɵtext(82, " Last Updated ");
997
1157
  i0.ɵɵelementEnd();
998
- i0.ɵɵelementStart(63, "div", 40);
999
- i0.ɵɵtext(64);
1158
+ i0.ɵɵelementStart(83, "div", 39);
1159
+ i0.ɵɵtext(84);
1000
1160
  i0.ɵɵelementEnd()();
1001
- i0.ɵɵconditionalCreate(65, MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template, 6, 1, "div", 36);
1161
+ i0.ɵɵconditionalCreate(85, MJQueryFormComponentExtended_Conditional_0_Conditional_85_Template, 6, 1, "div", 36);
1002
1162
  i0.ɵɵelementEnd()()();
1003
- i0.ɵɵconditionalCreate(66, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Template, 5, 2, "mj-accordion-panel", 33);
1004
- 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()); });
1163
+ i0.ɵɵconditionalCreate(86, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Template, 5, 2, "mj-accordion-panel", 33);
1164
+ i0.ɵɵelementEnd()()();
1165
+ i0.ɵɵelementStart(87, "mj-query-run-dialog", 46);
1166
+ i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_0_Template_mj_query_run_dialog_isVisibleChange_87_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.showRunDialog, $event) || (ctx_r1.showRunDialog = $event); return i0.ɵɵresetView($event); });
1167
+ i0.ɵɵlistener("onClose", function MJQueryFormComponentExtended_Conditional_0_Template_mj_query_run_dialog_onClose_87_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onRunDialogClose()); });
1008
1168
  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)); });
1169
+ i0.ɵɵelementStart(88, "mj-query-category-dialog", 47);
1170
+ i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_0_Template_mj_query_category_dialog_isVisibleChange_88_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.showCategoryDialog, $event) || (ctx_r1.showCategoryDialog = $event); return i0.ɵɵresetView($event); });
1171
+ i0.ɵɵlistener("onCategoryCreated", function MJQueryFormComponentExtended_Conditional_0_Template_mj_query_category_dialog_onCategoryCreated_88_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCategoryCreated($event)); });
1012
1172
  i0.ɵɵelementEnd();
1013
1173
  } if (rf & 2) {
1014
- const ctx_r2 = i0.ɵɵnextContext();
1015
- 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);
1174
+ const ctx_r1 = i0.ɵɵnextContext();
1175
+ i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1)("ToolbarConfig", ctx_r1.ToolbarConfig)("IsSaving", ctx_r1.IsSaving)("WidthMode", "full-width");
1176
+ i0.ɵɵadvance(3);
1177
+ i0.ɵɵconditional(ctx_r1.IsSaving ? 3 : -1);
1178
+ i0.ɵɵadvance();
1179
+ i0.ɵɵclassProp("content-saving", ctx_r1.IsSaving);
1180
+ i0.ɵɵadvance(5);
1181
+ i0.ɵɵconditional(ctx_r1.EditMode ? 9 : 10);
1019
1182
  i0.ɵɵadvance(3);
1020
- i0.ɵɵconditional(ctx_r2.record.ID ? 11 : -1);
1183
+ i0.ɵɵconditional(ctx_r1.record.ID ? 12 : -1);
1021
1184
  i0.ɵɵadvance(5);
1022
- i0.ɵɵconditional(ctx_r2.EditMode ? 16 : 17);
1185
+ i0.ɵɵconditional(ctx_r1.EditMode ? 17 : 18);
1023
1186
  i0.ɵɵadvance(5);
1024
- i0.ɵɵconditional(ctx_r2.EditMode ? 21 : 22);
1187
+ i0.ɵɵconditional(ctx_r1.EditMode ? 22 : 23);
1025
1188
  i0.ɵɵadvance(2);
1026
- i0.ɵɵconditional(ctx_r2.EditMode || ctx_r2.record.Description ? 23 : -1);
1189
+ i0.ɵɵconditional(ctx_r1.EditMode || ctx_r1.record.Description ? 24 : -1);
1027
1190
  i0.ɵɵadvance();
1028
- i0.ɵɵconditional(ctx_r2.record.Status && ctx_r2.record.Status !== "Approved" && !ctx_r2.EditMode ? 24 : -1);
1029
- i0.ɵɵadvance(2);
1030
- i0.ɵɵtwoWayProperty("Expanded", ctx_r2.sqlPanelExpanded);
1191
+ i0.ɵɵconditional(ctx_r1.record.Status && ctx_r1.record.Status !== "Approved" && !ctx_r1.EditMode ? 25 : -1);
1192
+ i0.ɵɵadvance();
1193
+ i0.ɵɵclassProp("content-saving", ctx_r1.IsSaving);
1194
+ i0.ɵɵadvance();
1195
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.sqlPanelExpanded);
1031
1196
  i0.ɵɵadvance(7);
1032
- i0.ɵɵproperty("ngClass", ctx_r2.showFiltersHelp ? "fa-chevron-up" : "fa-chevron-down");
1197
+ i0.ɵɵproperty("ngClass", ctx_r1.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_r1.showFiltersHelp ? 38 : -1);
1037
1202
  i0.ɵɵadvance();
1038
- i0.ɵɵconditional(ctx_r2.record.TechnicalDescription || ctx_r2.EditMode ? 38 : -1);
1203
+ i0.ɵɵconditional(ctx_r1.record.TechnicalDescription || ctx_r1.EditMode ? 39 : -1);
1039
1204
  i0.ɵɵadvance();
1040
- i0.ɵɵconditional(ctx_r2.record.IsSaved ? 39 : -1);
1205
+ i0.ɵɵconditional(ctx_r1.record.IsSaved ? 40 : -1);
1041
1206
  i0.ɵɵadvance();
1042
- i0.ɵɵconditional(ctx_r2.record.IsSaved ? 40 : -1);
1207
+ i0.ɵɵconditional(ctx_r1.record.IsSaved ? 41 : -1);
1043
1208
  i0.ɵɵadvance();
1044
- i0.ɵɵconditional(ctx_r2.record.IsSaved && ctx_r2.DependentQueries.length > 0 ? 41 : -1);
1209
+ i0.ɵɵconditional(ctx_r1.record.IsSaved && ctx_r1.DependentQueries.length > 0 ? 42 : -1);
1045
1210
  i0.ɵɵadvance();
1046
- i0.ɵɵconditional(ctx_r2.record.IsSaved ? 42 : -1);
1211
+ i0.ɵɵconditional(ctx_r1.record.IsSaved ? 43 : -1);
1047
1212
  i0.ɵɵadvance();
1048
- i0.ɵɵtwoWayProperty("Expanded", ctx_r2.detailsPanelExpanded);
1213
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.detailsPanelExpanded);
1049
1214
  i0.ɵɵadvance(8);
1050
- i0.ɵɵconditional(ctx_r2.EditMode ? 51 : 52);
1215
+ i0.ɵɵconditional(ctx_r1.EditMode ? 52 : 53);
1216
+ i0.ɵɵadvance(6);
1217
+ i0.ɵɵconditional(ctx_r1.EditMode ? 58 : 59);
1218
+ i0.ɵɵadvance(2);
1219
+ i0.ɵɵconditional(ctx_r1.record.CacheEnabled ? 60 : -1);
1220
+ i0.ɵɵadvance(5);
1221
+ i0.ɵɵconditional(ctx_r1.EditMode ? 65 : 66);
1222
+ i0.ɵɵadvance(6);
1223
+ i0.ɵɵconditional(ctx_r1.EditMode ? 71 : 72);
1051
1224
  i0.ɵɵadvance(7);
1052
- i0.ɵɵtextInterpolate(ctx_r2.formatDate(ctx_r2.record.__mj_CreatedAt));
1225
+ i0.ɵɵtextInterpolate(ctx_r1.formatDate(ctx_r1.record.__mj_CreatedAt));
1053
1226
  i0.ɵɵadvance(6);
1054
- i0.ɵɵtextInterpolate(ctx_r2.formatDate(ctx_r2.record.__mj_UpdatedAt));
1227
+ i0.ɵɵtextInterpolate(ctx_r1.formatDate(ctx_r1.record.__mj_UpdatedAt));
1055
1228
  i0.ɵɵadvance();
1056
- i0.ɵɵconditional(ctx_r2.record.QualityRank != null ? 65 : -1);
1229
+ i0.ɵɵconditional(ctx_r1.record.QualityRank != null ? 85 : -1);
1057
1230
  i0.ɵɵadvance();
1058
- i0.ɵɵconditional(ctx_r2.record.IsSaved ? 66 : -1);
1231
+ i0.ɵɵconditional(ctx_r1.record.IsSaved ? 86 : -1);
1059
1232
  i0.ɵɵadvance();
1060
- i0.ɵɵproperty("query", ctx_r2.record)("parameters", ctx_r2.queryParameters);
1061
- i0.ɵɵtwoWayProperty("isVisible", ctx_r2.showRunDialog);
1233
+ i0.ɵɵproperty("query", ctx_r1.record)("parameters", ctx_r1.queryParameters);
1234
+ i0.ɵɵtwoWayProperty("isVisible", ctx_r1.showRunDialog);
1062
1235
  i0.ɵɵadvance();
1063
- i0.ɵɵtwoWayProperty("isVisible", ctx_r2.showCategoryDialog);
1236
+ i0.ɵɵtwoWayProperty("isVisible", ctx_r1.showCategoryDialog);
1064
1237
  } }
1065
1238
  let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJQueryFormComponent {
1066
1239
  constructor() {
@@ -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' },
@@ -1100,19 +1284,10 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1100
1284
  { text: 'Rejected', value: 'Rejected' },
1101
1285
  { text: 'Expired', value: 'Expired' }
1102
1286
  ];
1103
- // Toolbar config: hide non-functional buttons (delete/favorite/history are not wired
1104
- // in legacy [Form] mode) and section controls (custom form uses its own panel state).
1105
- this.ToolbarConfig = {
1106
- ...DEFAULT_TOOLBAR_CONFIG,
1107
- ShowDeleteButton: false,
1108
- ShowFavoriteButton: false,
1109
- ShowHistoryButton: false,
1110
- ShowListButton: false,
1111
- ShowSectionControls: false,
1112
- ShowSectionFilter: false,
1113
- AllowSectionReorder: false,
1114
- ShowSectionManager: false,
1115
- };
1287
+ // Toolbar config: custom layout hides the right-hand section-controls
1288
+ // group, keeps all left-side action buttons (delete/favorite/history/list)
1289
+ // since they're now wired through `<mj-record-form-container>`.
1290
+ this.ToolbarConfig = CUSTOM_LAYOUT_TOOLBAR_CONFIG;
1116
1291
  this.sqlEditor = null;
1117
1292
  // SQL Filters for help display
1118
1293
  this.sqlFilters = RUN_QUERY_SQL_FILTERS;
@@ -1121,6 +1296,24 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1121
1296
  this.isUpdatingEditorValue = false;
1122
1297
  this.isInitialLoad = true;
1123
1298
  }
1299
+ /** CategoryID as CompositeKey for tree dropdown binding */
1300
+ get CategoryIDAsKey() {
1301
+ return this.record?.CategoryID ? CompositeKey.FromID(this.record.CategoryID) : null;
1302
+ }
1303
+ /** Handle tree dropdown category selection */
1304
+ OnCategoryTreeChange(value) {
1305
+ if (!this.record)
1306
+ return;
1307
+ if (value instanceof CompositeKey && value.HasValue) {
1308
+ this.record.CategoryID = value.KeyValuePairs[0]?.Value ?? null;
1309
+ }
1310
+ else {
1311
+ this.record.CategoryID = null;
1312
+ }
1313
+ this.updateCategoryPathDisplay();
1314
+ }
1315
+ /** Custom-layout Query form looks best full-width on first open. */
1316
+ getDefaultFormWidthMode() { return 'full-width'; }
1124
1317
  /**
1125
1318
  * Gets the QueryInfo metadata object for the current record, used to access Dependents.
1126
1319
  */
@@ -1511,16 +1704,26 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1511
1704
  return;
1512
1705
  }
1513
1706
  try {
1514
- const deleted = await param.Delete();
1707
+ // Reload the parameter entity fresh to ensure we have a clean copy
1708
+ // not tied to any form transaction state
1709
+ const md = new Metadata();
1710
+ const freshParam = await md.GetEntityObject('MJ: Query Parameters');
1711
+ const loaded = await freshParam.Load(param.ID);
1712
+ if (!loaded) {
1713
+ MJNotificationService.Instance.CreateSimpleNotification('Could not load parameter record. It may have already been deleted.', 'warning', 3000);
1714
+ // Remove from local list anyway since it doesn't exist
1715
+ this.removeParameterFromList(param);
1716
+ return;
1717
+ }
1718
+ const deleted = await freshParam.Delete();
1515
1719
  if (deleted) {
1516
- const index = this.queryParameters.indexOf(param);
1517
- if (index > -1) {
1518
- this.queryParameters.splice(index, 1);
1519
- }
1720
+ this.removeParameterFromList(param);
1520
1721
  MJNotificationService.Instance.CreateSimpleNotification('Parameter deleted successfully', 'success', 3000);
1521
1722
  }
1522
1723
  else {
1523
- MJNotificationService.Instance.CreateSimpleNotification('Failed to delete parameter', 'error', 3000);
1724
+ const errorDetail = freshParam.LatestResult?.CompleteMessage ?? 'Unknown reason';
1725
+ console.error('Failed to delete parameter:', errorDetail);
1726
+ MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete parameter: ${errorDetail}`, 'error', 5000);
1524
1727
  }
1525
1728
  }
1526
1729
  catch (error) {
@@ -1528,6 +1731,13 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1528
1731
  MJNotificationService.Instance.CreateSimpleNotification('Error deleting parameter', 'error', 3000);
1529
1732
  }
1530
1733
  }
1734
+ removeParameterFromList(param) {
1735
+ const index = this.queryParameters.indexOf(param);
1736
+ if (index > -1) {
1737
+ this.queryParameters.splice(index, 1);
1738
+ }
1739
+ this.cdr.detectChanges();
1740
+ }
1531
1741
  /**
1532
1742
  * Handle category creation from dialog
1533
1743
  */
@@ -1549,6 +1759,18 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1549
1759
  return d.toLocaleDateString() + ' ' + d.toLocaleTimeString();
1550
1760
  }
1551
1761
  async SaveRecord(StopEditModeAfterSave = true) {
1762
+ this.IsSaving = true;
1763
+ this.cdr.markForCheck();
1764
+ try {
1765
+ return await this.internalSaveRecord(StopEditModeAfterSave);
1766
+ }
1767
+ finally {
1768
+ await Promise.resolve(); // microtask to avoid ExpressionChangedAfterItHasBeenCheckedError
1769
+ this.IsSaving = false;
1770
+ this.cdr.markForCheck();
1771
+ }
1772
+ }
1773
+ async internalSaveRecord(StopEditModeAfterSave) {
1552
1774
  // Handle category creation before saving query
1553
1775
  if (this.record.CategoryID && !this.categoryOptions.find(opt => opt.value === this.record.CategoryID)) {
1554
1776
  if (this.isDuplicateCategory(this.record.CategoryID)) {
@@ -1722,12 +1944,25 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1722
1944
  return;
1723
1945
  }
1724
1946
  try {
1725
- const deleted = await field.Delete();
1947
+ const md = new Metadata();
1948
+ const freshField = await md.GetEntityObject('MJ: Query Fields');
1949
+ const loaded = await freshField.Load(field.ID);
1950
+ if (!loaded) {
1951
+ this.queryFields = this.queryFields.filter(f => !UUIDsEqual(f.ID, field.ID));
1952
+ this.cdr.detectChanges();
1953
+ return;
1954
+ }
1955
+ const deleted = await freshField.Delete();
1726
1956
  if (deleted) {
1727
1957
  this.queryFields = this.queryFields.filter(f => !UUIDsEqual(f.ID, field.ID));
1728
1958
  this.updateUnsavedChangesFlag();
1729
1959
  MJNotificationService.Instance.CreateSimpleNotification('Field deleted successfully', 'success', 3000);
1730
1960
  }
1961
+ else {
1962
+ const errorDetail = freshField.LatestResult?.CompleteMessage ?? 'Unknown reason';
1963
+ console.error('Failed to delete field:', errorDetail);
1964
+ MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete field: ${errorDetail}`, 'error', 5000);
1965
+ }
1731
1966
  }
1732
1967
  catch (error) {
1733
1968
  console.error('Error deleting field:', error);
@@ -1759,12 +1994,25 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1759
1994
  return;
1760
1995
  }
1761
1996
  try {
1762
- const deleted = await entity.Delete();
1997
+ const md = new Metadata();
1998
+ const freshEntity = await md.GetEntityObject('MJ: Query Entities');
1999
+ const loaded = await freshEntity.Load(entity.ID);
2000
+ if (!loaded) {
2001
+ this.queryEntities = this.queryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));
2002
+ this.cdr.detectChanges();
2003
+ return;
2004
+ }
2005
+ const deleted = await freshEntity.Delete();
1763
2006
  if (deleted) {
1764
2007
  this.queryEntities = this.queryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));
1765
2008
  this.updateUnsavedChangesFlag();
1766
2009
  MJNotificationService.Instance.CreateSimpleNotification('Entity deleted successfully', 'success', 3000);
1767
2010
  }
2011
+ else {
2012
+ const errorDetail = freshEntity.LatestResult?.CompleteMessage ?? 'Unknown reason';
2013
+ console.error('Failed to delete entity:', errorDetail);
2014
+ MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete entity: ${errorDetail}`, 'error', 5000);
2015
+ }
1768
2016
  }
1769
2017
  catch (error) {
1770
2018
  console.error('Error deleting entity:', error);
@@ -1792,14 +2040,11 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1792
2040
  } if (rf & 2) {
1793
2041
  let _t;
1794
2042
  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) {
1796
- i0.ɵɵelementStart(0, "div", 2);
1797
- i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Template, 69, 27);
1798
- i0.ɵɵelementEnd();
2043
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["form", "ngForm"], ["sqlEditor", ""], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "IsSaving", "WidthMode"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [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) {
2044
+ i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Template, 89, 39);
1799
2045
  } if (rf & 2) {
1800
- i0.ɵɵadvance();
1801
- 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}"] }); }
2046
+ i0.ɵɵconditional(ctx.record ? 0 : -1);
2047
+ } }, 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.MjRecordFormContainerComponent, 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
2048
  };
1804
2049
  MJQueryFormComponentExtended = __decorate([
1805
2050
  RegisterClass(BaseFormComponent, 'MJ: Queries')
@@ -1807,10 +2052,10 @@ MJQueryFormComponentExtended = __decorate([
1807
2052
  export { MJQueryFormComponentExtended };
1808
2053
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJQueryFormComponentExtended, [{
1809
2054
  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"] }]
2055
+ args: [{ standalone: false, selector: 'mj-query-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"ToolbarConfig\"\n [IsSaving]=\"IsSaving\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\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</mj-record-form-container>\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", 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
2056
  }], null, { sqlEditor: [{
1812
2057
  type: ViewChild,
1813
2058
  args: ['sqlEditor']
1814
2059
  }] }); })();
1815
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJQueryFormComponentExtended, { className: "MJQueryFormComponentExtended", filePath: "src/lib/custom/Queries/query-form.component.ts", lineNumber: 25 }); })();
2060
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJQueryFormComponentExtended, { className: "MJQueryFormComponentExtended", filePath: "src/lib/custom/Queries/query-form.component.ts", lineNumber: 26 }); })();
1816
2061
  //# sourceMappingURL=query-form.component.js.map