@memberjunction/ng-core-entity-forms 5.10.1 → 5.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +2 -2
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +8 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +199 -139
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +6 -6
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +6 -6
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +2 -2
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +2 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +4 -4
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +2 -2
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +4 -4
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +22 -22
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +11 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +244 -217
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +2 -2
- package/dist/lib/custom/Lists/list-form.component.js +3 -3
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-category-dialog.component.js +3 -3
- package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +25 -2
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +299 -139
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +3 -3
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +107 -111
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.js +2 -2
- package/dist/lib/custom/Templates/templates-form.component.js +40 -43
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.js +2 -2
- package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +2 -2
- package/dist/lib/custom/Tests/test-rubric-form.component.js +2 -2
- package/dist/lib/custom/Tests/test-rubric-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js +2 -2
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +2 -2
- package/dist/lib/custom/Tests/test-suite-form.component.js +2 -2
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +2 -2
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +2 -2
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +2 -2
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +2 -2
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +2 -2
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +28 -18
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +2 -2
- package/dist/lib/custom/custom-forms.module.d.ts +2 -1
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +7 -3
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +2 -2
- package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +155 -153
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.js +105 -0
- package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.js +31 -7
- package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.js +89 -0
- package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +50 -14
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js +22 -4
- package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js +13 -11
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +83 -81
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +35 -33
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +25 -19
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +87 -49
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQueryDependency/mjquerydependency.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJQueryDependency/mjquerydependency.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJQueryDependency/mjquerydependency.form.component.js +69 -0
- package/dist/lib/generated/Entities/MJQueryDependency/mjquerydependency.form.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +289 -286
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +113 -104
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +85 -89
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/package.json +31 -31
|
@@ -45,7 +45,6 @@ function TemplateEditorComponent_Conditional_0_Conditional_1_For_3_Template(rf,
|
|
|
45
45
|
const content_r5 = ctx.$implicit;
|
|
46
46
|
const ɵ$index_9_r2 = ctx.$index;
|
|
47
47
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
48
|
-
i0.ɵɵstyleProp("border-color", ctx_r2.selectedContentIndex === ɵ$index_9_r2 && !ctx_r2.isAddingNewContent ? "#007bff" : "#ccc")("background", ctx_r2.selectedContentIndex === ɵ$index_9_r2 && !ctx_r2.isAddingNewContent ? "#e3f2fd" : "#fff");
|
|
49
48
|
i0.ɵɵclassProp("active", ctx_r2.selectedContentIndex === ɵ$index_9_r2 && !ctx_r2.isAddingNewContent);
|
|
50
49
|
i0.ɵɵadvance(3);
|
|
51
50
|
i0.ɵɵtextInterpolate1(" ", content_r5.Type || "Version " + (ɵ$index_9_r2 + 1), " ");
|
|
@@ -68,13 +67,13 @@ function TemplateEditorComponent_Conditional_0_Conditional_1_Conditional_5_Templ
|
|
|
68
67
|
i0.ɵɵelementStart(0, "div", 19);
|
|
69
68
|
i0.ɵɵlistener("click", function TemplateEditorComponent_Conditional_0_Conditional_1_Conditional_5_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.addNewTemplateContent()); });
|
|
70
69
|
i0.ɵɵelement(1, "i", 20);
|
|
71
|
-
i0.ɵɵelementStart(2, "span"
|
|
70
|
+
i0.ɵɵelementStart(2, "span");
|
|
72
71
|
i0.ɵɵtext(3, "New");
|
|
73
72
|
i0.ɵɵelementEnd()();
|
|
74
73
|
} }
|
|
75
74
|
function TemplateEditorComponent_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
76
75
|
i0.ɵɵelementStart(0, "div", 2)(1, "div", 5);
|
|
77
|
-
i0.ɵɵrepeaterCreate(2, TemplateEditorComponent_Conditional_0_Conditional_1_For_3_Template, 8,
|
|
76
|
+
i0.ɵɵrepeaterCreate(2, TemplateEditorComponent_Conditional_0_Conditional_1_For_3_Template, 8, 6, "div", 6, _forTrack0);
|
|
78
77
|
i0.ɵɵconditionalCreate(4, TemplateEditorComponent_Conditional_0_Conditional_1_Conditional_4_Template, 4, 0, "div", 7);
|
|
79
78
|
i0.ɵɵconditionalCreate(5, TemplateEditorComponent_Conditional_0_Conditional_1_Conditional_5_Template, 4, 0, "div", 8);
|
|
80
79
|
i0.ɵɵelementEnd()();
|
|
@@ -89,7 +88,7 @@ function TemplateEditorComponent_Conditional_0_Conditional_1_Template(rf, ctx) {
|
|
|
89
88
|
} }
|
|
90
89
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
91
90
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
92
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
91
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 44);
|
|
93
92
|
i0.ɵɵtwoWayListener("ngModelChange", function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_7_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.currentTemplateContent.TypeID, $event) || (ctx_r2.currentTemplateContent.TypeID = $event); return i0.ɵɵresetView($event); });
|
|
94
93
|
i0.ɵɵlistener("valueChange", function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_7_Template_kendo_dropdownlist_valueChange_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContentTypeChange()); });
|
|
95
94
|
i0.ɵɵelementEnd();
|
|
@@ -99,7 +98,7 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_7_Templ
|
|
|
99
98
|
i0.ɵɵproperty("data", ctx_r2.getContentTypeOptionsForContent())("valuePrimitive", true);
|
|
100
99
|
} }
|
|
101
100
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
-
i0.ɵɵelementStart(0, "div",
|
|
101
|
+
i0.ɵɵelementStart(0, "div", 27);
|
|
103
102
|
i0.ɵɵtext(1);
|
|
104
103
|
i0.ɵɵelementEnd();
|
|
105
104
|
} if (rf & 2) {
|
|
@@ -109,7 +108,7 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_8_Templ
|
|
|
109
108
|
} }
|
|
110
109
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
111
110
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
112
|
-
i0.ɵɵelementStart(0, "kendo-numerictextbox",
|
|
111
|
+
i0.ɵɵelementStart(0, "kendo-numerictextbox", 45);
|
|
113
112
|
i0.ɵɵtwoWayListener("ngModelChange", function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_13_Template_kendo_numerictextbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.currentTemplateContent.Priority, $event) || (ctx_r2.currentTemplateContent.Priority = $event); return i0.ɵɵresetView($event); });
|
|
114
113
|
i0.ɵɵelementEnd();
|
|
115
114
|
} if (rf & 2) {
|
|
@@ -118,7 +117,7 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_13_Temp
|
|
|
118
117
|
i0.ɵɵproperty("min", 1)("step", 1)("format", "n0");
|
|
119
118
|
} }
|
|
120
119
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
121
|
-
i0.ɵɵelementStart(0, "div",
|
|
120
|
+
i0.ɵɵelementStart(0, "div", 27);
|
|
122
121
|
i0.ɵɵtext(1);
|
|
123
122
|
i0.ɵɵelementEnd();
|
|
124
123
|
} if (rf & 2) {
|
|
@@ -128,10 +127,10 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_14_Temp
|
|
|
128
127
|
} }
|
|
129
128
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
130
129
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
131
|
-
i0.ɵɵelementStart(0, "div",
|
|
130
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "input", 46);
|
|
132
131
|
i0.ɵɵtwoWayListener("ngModelChange", function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_19_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.currentTemplateContent.IsActive, $event) || (ctx_r2.currentTemplateContent.IsActive = $event); return i0.ɵɵresetView($event); });
|
|
133
132
|
i0.ɵɵelementEnd();
|
|
134
|
-
i0.ɵɵelementStart(2, "label",
|
|
133
|
+
i0.ɵɵelementStart(2, "label", 47);
|
|
135
134
|
i0.ɵɵtext(3, " Active ");
|
|
136
135
|
i0.ɵɵelementEnd()();
|
|
137
136
|
} if (rf & 2) {
|
|
@@ -140,20 +139,20 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_19_Temp
|
|
|
140
139
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.currentTemplateContent.IsActive);
|
|
141
140
|
} }
|
|
142
141
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_20_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵelementStart(0, "span",
|
|
144
|
-
i0.ɵɵelement(1, "i",
|
|
142
|
+
i0.ɵɵelementStart(0, "span", 48);
|
|
143
|
+
i0.ɵɵelement(1, "i", 50);
|
|
145
144
|
i0.ɵɵtext(2, " Active ");
|
|
146
145
|
i0.ɵɵelementEnd();
|
|
147
146
|
} }
|
|
148
147
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_20_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
149
|
-
i0.ɵɵelementStart(0, "span",
|
|
150
|
-
i0.ɵɵelement(1, "i",
|
|
148
|
+
i0.ɵɵelementStart(0, "span", 49);
|
|
149
|
+
i0.ɵɵelement(1, "i", 51);
|
|
151
150
|
i0.ɵɵtext(2, " Inactive ");
|
|
152
151
|
i0.ɵɵelementEnd();
|
|
153
152
|
} }
|
|
154
153
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
155
|
-
i0.ɵɵelementStart(0, "div",
|
|
156
|
-
i0.ɵɵconditionalCreate(1, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_20_Conditional_1_Template, 3, 0, "span",
|
|
154
|
+
i0.ɵɵelementStart(0, "div", 27);
|
|
155
|
+
i0.ɵɵconditionalCreate(1, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_20_Conditional_1_Template, 3, 0, "span", 48)(2, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_20_Conditional_2_Template, 3, 0, "span", 49);
|
|
157
156
|
i0.ɵɵelementEnd();
|
|
158
157
|
} if (rf & 2) {
|
|
159
158
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
@@ -170,22 +169,22 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_28_Temp
|
|
|
170
169
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.getContentTypeDisplayText(ctx_r2.currentTemplateContent.TypeID), " ");
|
|
171
170
|
} }
|
|
172
171
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
173
|
-
i0.ɵɵelementStart(0, "span",
|
|
174
|
-
i0.ɵɵelement(1, "i",
|
|
172
|
+
i0.ɵɵelementStart(0, "span", 40);
|
|
173
|
+
i0.ɵɵelement(1, "i", 52);
|
|
175
174
|
i0.ɵɵtext(2, " Unsaved changes ");
|
|
176
175
|
i0.ɵɵelementEnd();
|
|
177
176
|
} }
|
|
178
177
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_31_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
179
|
-
i0.ɵɵelement(0, "i",
|
|
178
|
+
i0.ɵɵelement(0, "i", 54);
|
|
180
179
|
i0.ɵɵtext(1, " Running... ");
|
|
181
180
|
} }
|
|
182
181
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_31_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
183
|
-
i0.ɵɵelement(0, "i",
|
|
182
|
+
i0.ɵɵelement(0, "i", 55);
|
|
184
183
|
i0.ɵɵtext(1, " Run ");
|
|
185
184
|
} }
|
|
186
185
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
187
186
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
188
|
-
i0.ɵɵelementStart(0, "button",
|
|
187
|
+
i0.ɵɵelementStart(0, "button", 53);
|
|
189
188
|
i0.ɵɵlistener("click", function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onRunTemplate()); });
|
|
190
189
|
i0.ɵɵconditionalCreate(1, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_31_Conditional_1_Template, 2, 0)(2, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_31_Conditional_2_Template, 2, 0);
|
|
191
190
|
i0.ɵɵelementEnd();
|
|
@@ -196,36 +195,36 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_31_Temp
|
|
|
196
195
|
i0.ɵɵconditional(ctx_r2.isRunningTemplate ? 1 : 2);
|
|
197
196
|
} }
|
|
198
197
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
199
|
-
i0.ɵɵelementStart(0, "div",
|
|
200
|
-
i0.ɵɵelement(2, "i",
|
|
198
|
+
i0.ɵɵelementStart(0, "div", 60)(1, "div", 62);
|
|
199
|
+
i0.ɵɵelement(2, "i", 63);
|
|
201
200
|
i0.ɵɵtext(3, " Template Syntax Quick Reference ");
|
|
202
201
|
i0.ɵɵelementEnd();
|
|
203
|
-
i0.ɵɵelementStart(4, "div",
|
|
202
|
+
i0.ɵɵelementStart(4, "div", 64)(5, "div")(6, "div", 65)(7, "strong");
|
|
204
203
|
i0.ɵɵtext(8, "Parameters:");
|
|
205
204
|
i0.ɵɵelementEnd();
|
|
206
205
|
i0.ɵɵelement(9, "br");
|
|
207
|
-
i0.ɵɵelementStart(10, "code"
|
|
206
|
+
i0.ɵɵelementStart(10, "code");
|
|
208
207
|
i0.ɵɵtext(11);
|
|
209
208
|
i0.ɵɵelementEnd()();
|
|
210
209
|
i0.ɵɵelementStart(12, "div")(13, "strong");
|
|
211
210
|
i0.ɵɵtext(14, "Template Includes:");
|
|
212
211
|
i0.ɵɵelementEnd();
|
|
213
212
|
i0.ɵɵelement(15, "br");
|
|
214
|
-
i0.ɵɵelementStart(16, "code"
|
|
213
|
+
i0.ɵɵelementStart(16, "code");
|
|
215
214
|
i0.ɵɵtext(17);
|
|
216
215
|
i0.ɵɵelementEnd()()();
|
|
217
|
-
i0.ɵɵelementStart(18, "div")(19, "div",
|
|
216
|
+
i0.ɵɵelementStart(18, "div")(19, "div", 65)(20, "strong");
|
|
218
217
|
i0.ɵɵtext(21, "Conditionals:");
|
|
219
218
|
i0.ɵɵelementEnd();
|
|
220
219
|
i0.ɵɵelement(22, "br");
|
|
221
|
-
i0.ɵɵelementStart(23, "code"
|
|
220
|
+
i0.ɵɵelementStart(23, "code");
|
|
222
221
|
i0.ɵɵtext(24);
|
|
223
222
|
i0.ɵɵelementEnd()();
|
|
224
223
|
i0.ɵɵelementStart(25, "div")(26, "strong");
|
|
225
224
|
i0.ɵɵtext(27, "Loops:");
|
|
226
225
|
i0.ɵɵelementEnd();
|
|
227
226
|
i0.ɵɵelement(28, "br");
|
|
228
|
-
i0.ɵɵelementStart(29, "code"
|
|
227
|
+
i0.ɵɵelementStart(29, "code");
|
|
229
228
|
i0.ɵɵtext(30);
|
|
230
229
|
i0.ɵɵelementEnd()()()()();
|
|
231
230
|
} if (rf & 2) {
|
|
@@ -240,17 +239,16 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Cond
|
|
|
240
239
|
} }
|
|
241
240
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
242
241
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
243
|
-
i0.ɵɵelementStart(0, "button",
|
|
242
|
+
i0.ɵɵelementStart(0, "button", 74);
|
|
244
243
|
i0.ɵɵlistener("click", function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_8_Template_button_click_0_listener() { const categoryGroup_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.activePlaceholderCategory = categoryGroup_r14.category.name); });
|
|
245
|
-
i0.ɵɵelement(1, "i",
|
|
244
|
+
i0.ɵɵelement(1, "i", 75);
|
|
246
245
|
i0.ɵɵtext(2);
|
|
247
|
-
i0.ɵɵelementStart(3, "span",
|
|
246
|
+
i0.ɵɵelementStart(3, "span", 76);
|
|
248
247
|
i0.ɵɵtext(4);
|
|
249
248
|
i0.ɵɵelementEnd()();
|
|
250
249
|
} if (rf & 2) {
|
|
251
250
|
const categoryGroup_r14 = ctx.$implicit;
|
|
252
251
|
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
253
|
-
i0.ɵɵstyleProp("border-color", ctx_r2.activePlaceholderCategory === categoryGroup_r14.category.name ? categoryGroup_r14.category.color : "#dee2e6")("background", ctx_r2.activePlaceholderCategory === categoryGroup_r14.category.name ? categoryGroup_r14.category.color + "10" : "white")("color", ctx_r2.activePlaceholderCategory === categoryGroup_r14.category.name ? categoryGroup_r14.category.color : "#6c757d");
|
|
254
252
|
i0.ɵɵclassProp("active", ctx_r2.activePlaceholderCategory === categoryGroup_r14.category.name);
|
|
255
253
|
i0.ɵɵadvance();
|
|
256
254
|
i0.ɵɵclassMap("fa-solid " + categoryGroup_r14.category.icon);
|
|
@@ -260,7 +258,7 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Cond
|
|
|
260
258
|
i0.ɵɵtextInterpolate1(" ", categoryGroup_r14.placeholders.length, " ");
|
|
261
259
|
} }
|
|
262
260
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_11_Conditional_0_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
263
|
-
i0.ɵɵelementStart(0, "div",
|
|
261
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
264
262
|
i0.ɵɵtext(1);
|
|
265
263
|
i0.ɵɵelementEnd();
|
|
266
264
|
} if (rf & 2) {
|
|
@@ -270,14 +268,14 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Cond
|
|
|
270
268
|
} }
|
|
271
269
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_11_Conditional_0_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
272
270
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
273
|
-
i0.ɵɵelementStart(0, "div",
|
|
271
|
+
i0.ɵɵelementStart(0, "div", 79)(1, "div", 80)(2, "div")(3, "div", 81)(4, "code", 82);
|
|
274
272
|
i0.ɵɵtext(5);
|
|
275
273
|
i0.ɵɵelementEnd();
|
|
276
|
-
i0.ɵɵelementStart(6, "button",
|
|
274
|
+
i0.ɵɵelementStart(6, "button", 83);
|
|
277
275
|
i0.ɵɵlistener("click", function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_11_Conditional_0_For_6_Template_button_click_6_listener() { const placeholder_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(7); return i0.ɵɵresetView(ctx_r2.copyPlaceholder(placeholder_r16.name)); });
|
|
278
|
-
i0.ɵɵelement(7, "i",
|
|
276
|
+
i0.ɵɵelement(7, "i", 84);
|
|
279
277
|
i0.ɵɵelementEnd()();
|
|
280
|
-
i0.ɵɵconditionalCreate(8, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_11_Conditional_0_For_6_Conditional_8_Template, 2, 1, "div",
|
|
278
|
+
i0.ɵɵconditionalCreate(8, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_11_Conditional_0_For_6_Conditional_8_Template, 2, 1, "div", 85);
|
|
281
279
|
i0.ɵɵelementEnd()()();
|
|
282
280
|
} if (rf & 2) {
|
|
283
281
|
const placeholder_r16 = ctx.$implicit;
|
|
@@ -287,13 +285,13 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Cond
|
|
|
287
285
|
i0.ɵɵconditional(placeholder_r16.description ? 8 : -1);
|
|
288
286
|
} }
|
|
289
287
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_11_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
290
|
-
i0.ɵɵelementStart(0, "div",
|
|
291
|
-
i0.ɵɵelement(1, "i"
|
|
292
|
-
i0.ɵɵelementStart(2, "h5"
|
|
288
|
+
i0.ɵɵelementStart(0, "div", 77);
|
|
289
|
+
i0.ɵɵelement(1, "i");
|
|
290
|
+
i0.ɵɵelementStart(2, "h5");
|
|
293
291
|
i0.ɵɵtext(3);
|
|
294
292
|
i0.ɵɵelementEnd()();
|
|
295
|
-
i0.ɵɵelementStart(4, "div",
|
|
296
|
-
i0.ɵɵrepeaterCreate(5, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_11_Conditional_0_For_6_Template, 9, 4, "div",
|
|
293
|
+
i0.ɵɵelementStart(4, "div", 78);
|
|
294
|
+
i0.ɵɵrepeaterCreate(5, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_11_Conditional_0_For_6_Template, 9, 4, "div", 79, _forTrack2);
|
|
297
295
|
i0.ɵɵelementEnd();
|
|
298
296
|
} if (rf & 2) {
|
|
299
297
|
const categoryGroup_r17 = i0.ɵɵnextContext().$implicit;
|
|
@@ -313,26 +311,26 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Cond
|
|
|
313
311
|
i0.ɵɵconditional(ctx_r2.activePlaceholderCategory === categoryGroup_r17.category.name ? 0 : -1);
|
|
314
312
|
} }
|
|
315
313
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
316
|
-
i0.ɵɵelementStart(0, "div",
|
|
317
|
-
i0.ɵɵelement(2, "i",
|
|
314
|
+
i0.ɵɵelementStart(0, "div", 61)(1, "div", 62);
|
|
315
|
+
i0.ɵɵelement(2, "i", 58);
|
|
318
316
|
i0.ɵɵtext(3, " System Placeholders Reference ");
|
|
319
317
|
i0.ɵɵelementEnd();
|
|
320
|
-
i0.ɵɵelementStart(4, "p",
|
|
318
|
+
i0.ɵɵelementStart(4, "p", 66);
|
|
321
319
|
i0.ɵɵtext(5, " System placeholders are automatically available in all AI prompt templates. Simply use them in your template text and they will be replaced with their current values at execution time. ");
|
|
322
320
|
i0.ɵɵelementEnd();
|
|
323
|
-
i0.ɵɵelementStart(6, "div",
|
|
324
|
-
i0.ɵɵrepeaterCreate(7, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_8_Template, 5,
|
|
321
|
+
i0.ɵɵelementStart(6, "div", 67);
|
|
322
|
+
i0.ɵɵrepeaterCreate(7, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_8_Template, 5, 6, "button", 68, _forTrack1);
|
|
325
323
|
i0.ɵɵelementEnd();
|
|
326
|
-
i0.ɵɵelementStart(9, "div",
|
|
324
|
+
i0.ɵɵelementStart(9, "div", 69);
|
|
327
325
|
i0.ɵɵrepeaterCreate(10, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_For_11_Template, 1, 1, null, null, _forTrack1);
|
|
328
326
|
i0.ɵɵelementEnd();
|
|
329
|
-
i0.ɵɵelementStart(12, "div",
|
|
330
|
-
i0.ɵɵelement(14, "i",
|
|
331
|
-
i0.ɵɵelementStart(15, "div",
|
|
327
|
+
i0.ɵɵelementStart(12, "div", 70)(13, "div", 71);
|
|
328
|
+
i0.ɵɵelement(14, "i", 72);
|
|
329
|
+
i0.ɵɵelementStart(15, "div", 73)(16, "strong");
|
|
332
330
|
i0.ɵɵtext(17, "Usage Example:");
|
|
333
331
|
i0.ɵɵelementEnd();
|
|
334
332
|
i0.ɵɵtext(18, " To use a system placeholder in your template, simply include it in double curly braces. For example: ");
|
|
335
|
-
i0.ɵɵelementStart(19, "code"
|
|
333
|
+
i0.ɵɵelementStart(19, "code");
|
|
336
334
|
i0.ɵɵtext(20);
|
|
337
335
|
i0.ɵɵelementEnd()()()()();
|
|
338
336
|
} if (rf & 2) {
|
|
@@ -346,27 +344,25 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Cond
|
|
|
346
344
|
} }
|
|
347
345
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
348
346
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
349
|
-
i0.ɵɵelementStart(0, "div",
|
|
347
|
+
i0.ɵɵelementStart(0, "div", 43)(1, "div", 56)(2, "button", 57);
|
|
350
348
|
i0.ɵɵlistener("click", function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.activeHelpTab = "syntax"); });
|
|
351
|
-
i0.ɵɵelement(3, "i",
|
|
349
|
+
i0.ɵɵelement(3, "i", 37);
|
|
352
350
|
i0.ɵɵtext(4, " Template Syntax ");
|
|
353
351
|
i0.ɵɵelementEnd();
|
|
354
|
-
i0.ɵɵelementStart(5, "button",
|
|
352
|
+
i0.ɵɵelementStart(5, "button", 57);
|
|
355
353
|
i0.ɵɵlistener("click", function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.activeHelpTab = "placeholders"); });
|
|
356
|
-
i0.ɵɵelement(6, "i",
|
|
354
|
+
i0.ɵɵelement(6, "i", 58);
|
|
357
355
|
i0.ɵɵtext(7, " System Placeholders ");
|
|
358
356
|
i0.ɵɵelementEnd()();
|
|
359
|
-
i0.ɵɵelementStart(8, "div",
|
|
360
|
-
i0.ɵɵconditionalCreate(9, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_9_Template, 31, 7, "div",
|
|
361
|
-
i0.ɵɵconditionalCreate(10, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_Template, 21, 4, "div",
|
|
357
|
+
i0.ɵɵelementStart(8, "div", 59);
|
|
358
|
+
i0.ɵɵconditionalCreate(9, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_9_Template, 31, 7, "div", 60);
|
|
359
|
+
i0.ɵɵconditionalCreate(10, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Conditional_10_Template, 21, 4, "div", 61);
|
|
362
360
|
i0.ɵɵelementEnd()();
|
|
363
361
|
} if (rf & 2) {
|
|
364
362
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
365
363
|
i0.ɵɵadvance(2);
|
|
366
|
-
i0.ɵɵstyleProp("color", ctx_r2.activeHelpTab === "syntax" ? "#28a745" : "#6c757d")("border-bottom-color", ctx_r2.activeHelpTab === "syntax" ? "#28a745" : "transparent");
|
|
367
364
|
i0.ɵɵclassProp("active", ctx_r2.activeHelpTab === "syntax");
|
|
368
365
|
i0.ɵɵadvance(3);
|
|
369
|
-
i0.ɵɵstyleProp("color", ctx_r2.activeHelpTab === "placeholders" ? "#28a745" : "#6c757d")("border-bottom-color", ctx_r2.activeHelpTab === "placeholders" ? "#28a745" : "transparent");
|
|
370
366
|
i0.ɵɵclassProp("active", ctx_r2.activeHelpTab === "placeholders");
|
|
371
367
|
i0.ɵɵadvance(4);
|
|
372
368
|
i0.ɵɵconditional(ctx_r2.activeHelpTab === "syntax" ? 9 : -1);
|
|
@@ -375,38 +371,38 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Temp
|
|
|
375
371
|
} }
|
|
376
372
|
function TemplateEditorComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
377
373
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
378
|
-
i0.ɵɵelementStart(0, "div", 3)(1, "div",
|
|
379
|
-
i0.ɵɵelement(5, "i",
|
|
374
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "div", 21)(2, "div", 22)(3, "div", 23)(4, "label", 24);
|
|
375
|
+
i0.ɵɵelement(5, "i", 25);
|
|
380
376
|
i0.ɵɵtext(6, " Content Type ");
|
|
381
377
|
i0.ɵɵelementEnd();
|
|
382
|
-
i0.ɵɵconditionalCreate(7, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_7_Template, 1, 3, "kendo-dropdownlist",
|
|
378
|
+
i0.ɵɵconditionalCreate(7, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_7_Template, 1, 3, "kendo-dropdownlist", 26)(8, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_8_Template, 2, 1, "div", 27);
|
|
383
379
|
i0.ɵɵelementEnd();
|
|
384
|
-
i0.ɵɵelementStart(9, "div",
|
|
385
|
-
i0.ɵɵelement(11, "i",
|
|
380
|
+
i0.ɵɵelementStart(9, "div", 23)(10, "label", 28);
|
|
381
|
+
i0.ɵɵelement(11, "i", 29);
|
|
386
382
|
i0.ɵɵtext(12, " Priority ");
|
|
387
383
|
i0.ɵɵelementEnd();
|
|
388
|
-
i0.ɵɵconditionalCreate(13, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_13_Template, 1, 4, "kendo-numerictextbox",
|
|
384
|
+
i0.ɵɵconditionalCreate(13, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_13_Template, 1, 4, "kendo-numerictextbox", 30)(14, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_14_Template, 2, 1, "div", 27);
|
|
389
385
|
i0.ɵɵelementEnd();
|
|
390
|
-
i0.ɵɵelementStart(15, "div",
|
|
391
|
-
i0.ɵɵelement(17, "i",
|
|
386
|
+
i0.ɵɵelementStart(15, "div", 23)(16, "label", 31);
|
|
387
|
+
i0.ɵɵelement(17, "i", 32);
|
|
392
388
|
i0.ɵɵtext(18, " Status ");
|
|
393
389
|
i0.ɵɵelementEnd();
|
|
394
|
-
i0.ɵɵconditionalCreate(19, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_19_Template, 4, 1, "div",
|
|
390
|
+
i0.ɵɵconditionalCreate(19, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_19_Template, 4, 1, "div", 33)(20, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_20_Template, 3, 1, "div", 27);
|
|
395
391
|
i0.ɵɵelementEnd()()();
|
|
396
|
-
i0.ɵɵelementStart(21, "div",
|
|
397
|
-
i0.ɵɵelement(24, "i",
|
|
392
|
+
i0.ɵɵelementStart(21, "div", 34)(22, "div", 35)(23, "label", 36);
|
|
393
|
+
i0.ɵɵelement(24, "i", 37);
|
|
398
394
|
i0.ɵɵtext(25, " Template Content ");
|
|
399
|
-
i0.ɵɵelementStart(26, "span",
|
|
395
|
+
i0.ɵɵelementStart(26, "span", 38);
|
|
400
396
|
i0.ɵɵconditionalCreate(27, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_27_Template, 1, 0)(28, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_28_Template, 1, 1);
|
|
401
397
|
i0.ɵɵelementEnd()();
|
|
402
|
-
i0.ɵɵelementStart(29, "div",
|
|
403
|
-
i0.ɵɵconditionalCreate(30, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_30_Template, 3, 0, "span",
|
|
404
|
-
i0.ɵɵconditionalCreate(31, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_31_Template, 3, 2, "button",
|
|
398
|
+
i0.ɵɵelementStart(29, "div", 39);
|
|
399
|
+
i0.ɵɵconditionalCreate(30, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_30_Template, 3, 0, "span", 40);
|
|
400
|
+
i0.ɵɵconditionalCreate(31, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_31_Template, 3, 2, "button", 41);
|
|
405
401
|
i0.ɵɵelementEnd()();
|
|
406
|
-
i0.ɵɵelementStart(32, "mj-code-editor",
|
|
402
|
+
i0.ɵɵelementStart(32, "mj-code-editor", 42, 0);
|
|
407
403
|
i0.ɵɵlistener("change", function TemplateEditorComponent_Conditional_0_Conditional_2_Template_mj_code_editor_change_32_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onTemplateTextChange($event)); });
|
|
408
404
|
i0.ɵɵelementEnd();
|
|
409
|
-
i0.ɵɵconditionalCreate(34, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Template, 11,
|
|
405
|
+
i0.ɵɵconditionalCreate(34, TemplateEditorComponent_Conditional_0_Conditional_2_Conditional_34_Template, 11, 6, "div", 43);
|
|
410
406
|
i0.ɵɵelementEnd()();
|
|
411
407
|
} if (rf & 2) {
|
|
412
408
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -417,7 +413,7 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Template(rf, ctx) {
|
|
|
417
413
|
i0.ɵɵadvance(6);
|
|
418
414
|
i0.ɵɵconditional(ctx_r2.config.allowEdit ? 19 : 20);
|
|
419
415
|
i0.ɵɵadvance(7);
|
|
420
|
-
i0.ɵɵ
|
|
416
|
+
i0.ɵɵclassProp("new", !ctx_r2.currentTemplateContent.ID)("existing", !!ctx_r2.currentTemplateContent.ID);
|
|
421
417
|
i0.ɵɵadvance();
|
|
422
418
|
i0.ɵɵconditional(!ctx_r2.currentTemplateContent.ID ? 27 : 28);
|
|
423
419
|
i0.ɵɵadvance(3);
|
|
@@ -431,22 +427,22 @@ function TemplateEditorComponent_Conditional_0_Conditional_2_Template(rf, ctx) {
|
|
|
431
427
|
} }
|
|
432
428
|
function TemplateEditorComponent_Conditional_0_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
433
429
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
434
|
-
i0.ɵɵelementStart(0, "button",
|
|
430
|
+
i0.ɵɵelementStart(0, "button", 88);
|
|
435
431
|
i0.ɵɵlistener("click", function TemplateEditorComponent_Conditional_0_Conditional_3_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.addNewTemplateContent()); });
|
|
436
|
-
i0.ɵɵelement(1, "i",
|
|
432
|
+
i0.ɵɵelement(1, "i", 20);
|
|
437
433
|
i0.ɵɵtext(2, " Create First Content Version ");
|
|
438
434
|
i0.ɵɵelementEnd();
|
|
439
435
|
} }
|
|
440
436
|
function TemplateEditorComponent_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
441
437
|
i0.ɵɵelementStart(0, "div", 4);
|
|
442
|
-
i0.ɵɵelement(1, "i",
|
|
443
|
-
i0.ɵɵelementStart(2, "h5"
|
|
438
|
+
i0.ɵɵelement(1, "i", 86);
|
|
439
|
+
i0.ɵɵelementStart(2, "h5");
|
|
444
440
|
i0.ɵɵtext(3, "No Template Content");
|
|
445
441
|
i0.ɵɵelementEnd();
|
|
446
|
-
i0.ɵɵelementStart(4, "p"
|
|
442
|
+
i0.ɵɵelementStart(4, "p");
|
|
447
443
|
i0.ɵɵtext(5, "Create your first template content version to get started.");
|
|
448
444
|
i0.ɵɵelementEnd();
|
|
449
|
-
i0.ɵɵconditionalCreate(6, TemplateEditorComponent_Conditional_0_Conditional_3_Conditional_6_Template, 3, 0, "button",
|
|
445
|
+
i0.ɵɵconditionalCreate(6, TemplateEditorComponent_Conditional_0_Conditional_3_Conditional_6_Template, 3, 0, "button", 87);
|
|
450
446
|
i0.ɵɵelementEnd();
|
|
451
447
|
} if (rf & 2) {
|
|
452
448
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -534,7 +530,7 @@ export class TemplateEditorComponent {
|
|
|
534
530
|
category: {
|
|
535
531
|
name: 'Other',
|
|
536
532
|
icon: 'fa-ellipsis-h',
|
|
537
|
-
color: '
|
|
533
|
+
color: 'var(--mj-text-muted)'
|
|
538
534
|
},
|
|
539
535
|
placeholders: uncategorized
|
|
540
536
|
});
|
|
@@ -888,15 +884,15 @@ export class TemplateEditorComponent {
|
|
|
888
884
|
} if (rf & 2) {
|
|
889
885
|
let _t;
|
|
890
886
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.codeEditor = _t.first);
|
|
891
|
-
} }, inputs: { template: "template", config: "config" }, outputs: { contentChange: "contentChange", runTemplate: "runTemplate" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["codeEditor", ""], [1, "template-editor", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "content-versions-tabs", 2, "margin-bottom", "16px", "border-bottom", "2px solid #e0e0e0", "padding-bottom", "8px"], [1, "content-editor-container", 2, "flex", "1", "display", "flex", "flex-direction", "column", "background", "#fff", "border", "1px solid #dee2e6", "border-radius", "8px", "overflow", "hidden"], [1, "no-content-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "background", "#f8f9fa", "border", "2px dashed #dee2e6", "border-radius", "8px", "padding", "40px", "text-align", "center"], [1, "content-tabs", 2, "display", "flex", "gap", "6px", "flex-wrap", "wrap"], [1, "content-version-tab", 2, "padding", "8px 12px", "border", "1px solid #ccc", "border-radius", "6px", "cursor", "pointer", "background", "#fff", "display", "flex", "align-items", "center", "gap", "6px", "transition", "all 0.2s", "position", "relative", 3, "active", "border-color", "background"], [1, "content-version-tab", "active", 2, "padding", "8px 12px", "border", "1px solid #28a745", "border-radius", "6px", "background", "#d4edda", "display", "flex", "align-items", "center", "gap", "6px"], ["onmouseover", "this.style.backgroundColor='#e8f5e9'; this.style.borderStyle='solid';", "onmouseout", "this.style.backgroundColor='#f8f9fa'; this.style.borderStyle='dashed';", "title", "Add new template content", 1, "content-version-tab", "add-new", 2, "padding", "8px 12px", "border", "1px dashed #28a745", "border-radius", "6px", "background", "#f8f9fa", "display", "flex", "align-items", "center", "gap", "6px", "cursor", "pointer", "transition", "all 0.2s"], [1, "content-version-tab", 2, "padding", "8px 12px", "border", "1px solid #ccc", "border-radius", "6px", "cursor", "pointer", "background", "#fff", "display", "flex", "align-items", "center", "gap", "6px", "transition", "all 0.2s", "position", "relative", 3, "click"], [2, "flex", "1"], [2, "font-weight", "600", "font-size", "0.85em", "color", "#495057"], [2, "font-size", "0.7em", "color", "#6c757d"], ["type", "button", "onmouseover", "this.style.backgroundColor='#dc3545'; this.style.color='white';", "onmouseout", "this.style.backgroundColor='transparent'; this.style.color='#dc3545';", "title", "Delete this content version", 1, "btn-sm", "delete-btn", 2, "background", "none", "border", "none", "color", "#dc3545", "padding", "4px", "border-radius", "3px", "transition", "all 0.2s", "cursor", "pointer"], [2, "color", "#dc3545"], ["type", "button", "onmouseover", "this.style.backgroundColor='#dc3545'; this.style.color='white';", "onmouseout", "this.style.backgroundColor='transparent'; this.style.color='#dc3545';", "title", "Delete this content version", 1, "btn-sm", "delete-btn", 2, "background", "none", "border", "none", "color", "#dc3545", "padding", "4px", "border-radius", "3px", "transition", "all 0.2s", "cursor", "pointer", 3, "click"], [1, "fa-solid", "fa-trash", "fa-xs"], [1, "fa-solid", "fa-plus", "text-success"], [2, "font-weight", "600", "color", "#155724", "font-size", "0.85em"], ["onmouseover", "this.style.backgroundColor='#e8f5e9'; this.style.borderStyle='solid';", "onmouseout", "this.style.backgroundColor='#f8f9fa'; this.style.borderStyle='dashed';", "title", "Add new template content", 1, "content-version-tab", "add-new", 2, "padding", "8px 12px", "border", "1px dashed #28a745", "border-radius", "6px", "background", "#f8f9fa", "display", "flex", "align-items", "center", "gap", "6px", "cursor", "pointer", "transition", "all 0.2s", 3, "click"], [1, "fa-solid", "fa-plus", 2, "color", "#28a745", "font-size", "0.75em"], [2, "font-weight", "500", "color", "#28a745", "font-size", "0.85em"], [1, "content-metadata-bar", 2, "background", "#f8f9fa", "border-bottom", "1px solid #dee2e6", "padding", "16px 20px"], [2, "display", "grid", "grid-template-columns", "2fr 1fr 1fr auto", "gap", "20px", "align-items", "end"], [1, "form-group", 2, "margin", "0"], ["for", "contentType", 1, "form-label", 2, "margin-bottom", "4px", "font-size", "0.9em", "font-weight", "600"], [1, "fa-solid", "fa-tag"], ["name", "contentType", "textField", "text", "valueField", "value", 3, "ngModel", "data", "valuePrimitive"], [1, "form-control-plaintext", 2, "font-size", "0.9em", "padding", "4px 0"], ["for", "priority", 1, "form-label", 2, "margin-bottom", "4px", "font-size", "0.9em", "font-weight", "600"], [1, "fa-solid", "fa-sort-numeric-up"], ["name", "priority", 3, "ngModel", "min", "step", "format"], [1, "form-label", 2, "margin-bottom", "4px", "font-size", "0.9em", "font-weight", "600"], [1, "fa-solid", "fa-toggle-on"], [1, "form-check", 2, "margin-top", "8px"], [1, "content-text-editor", 2, "flex", "1", "padding", "20px", "display", "flex", "flex-direction", "column"], [2, "display", "flex", "justify-content", "space-between", "align-items", "center", "margin-bottom", "12px"], ["for", "templateContent", 1, "form-label", 2, "margin", "0", "font-weight", "600", "display", "flex", "align-items", "center", "gap", "8px"], [1, "fa-solid", "fa-code"], [1, "badge", 2, "padding", "4px 8px", "border-radius", "4px", "font-size", "0.75em"], [2, "display", "flex", "align-items", "center", "gap", "12px"], [1, "unsaved-indicator", 2, "color", "#fd7e14", "font-size", "0.85em", "display", "flex", "align-items", "center", "gap", "4px"], ["type", "button", "onmouseover", "this.style.background='#138496'", "onmouseout", "this.style.background='#17a2b8'", "title", "Test run this template", 1, "btn", "btn-sm", 2, "background", "#17a2b8", "color", "white", "border", "none", "padding", "6px 12px", "border-radius", "4px", "font-size", "0.85em", "display", "flex", "align-items", "center", "gap", "6px", "transition", "all 0.2s", 3, "disabled"], [2, "flex", "1", "height", "350px", "border", "1px solid #ced4da", "border-radius", "4px", 3, "change", "readonly", "language", "languages"], [1, "template-help-section", 2, "margin-top", "16px"], ["name", "contentType", "textField", "text", "valueField", "value", 3, "ngModelChange", "valueChange", "ngModel", "data", "valuePrimitive"], ["name", "priority", 3, "ngModelChange", "ngModel", "min", "step", "format"], ["type", "checkbox", "id", "isActive", "name", "isActive", 1, "form-check-input", 3, "ngModelChange", "ngModel"], ["for", "isActive", 1, "form-check-label", 2, "font-size", "0.9em"], [1, "badge", "badge-success", 2, "background", "#28a745", "color", "white", "padding", "3px 8px", "border-radius", "3px", "font-size", "0.75em"], [1, "badge", "badge-secondary", 2, "background", "#6c757d", "color", "white", "padding", "3px 8px", "border-radius", "3px", "font-size", "0.75em"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-pause-circle"], [1, "fa-solid", "fa-circle", 2, "font-size", "0.5em"], ["type", "button", "onmouseover", "this.style.background='#138496'", "onmouseout", "this.style.background='#17a2b8'", "title", "Test run this template", 1, "btn", "btn-sm", 2, "background", "#17a2b8", "color", "white", "border", "none", "padding", "6px 12px", "border-radius", "4px", "font-size", "0.85em", "display", "flex", "align-items", "center", "gap", "6px", "transition", "all 0.2s", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"], [1, "help-tabs", 2, "display", "flex", "border-bottom", "2px solid #dee2e6", "margin-bottom", "0"], ["type", "button", 1, "help-tab", 2, "padding", "8px 16px", "border", "none", "background", "none", "cursor", "pointer", "font-size", "0.9em", "font-weight", "600", "color", "#6c757d", "border-bottom", "3px solid transparent", "transition", "all 0.2s", 3, "click"], [1, "fa-solid", "fa-at"], [1, "help-content", 2, "padding", "16px", "background", "#f8f9fa", "border", "1px solid #dee2e6", "border-top", "none", "border-radius", "0 0 4px 4px"], [1, "syntax-help", 2, "font-size", "0.85em"], [1, "placeholders-help", 2, "font-size", "0.85em"], [2, "font-weight", "600", "margin-bottom", "12px", "color", "#155724"], [1, "fa-solid", "fa-lightbulb"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "16px"], [2, "margin-bottom", "8px"], [2, "background", "#fff", "padding", "4px 6px", "border-radius", "3px", "display", "inline-block", "margin-top", "4px"], [2, "margin-bottom", "16px", "color", "#495057", "line-height", "1.5"], [1, "category-tabs", 2, "display", "flex", "gap", "8px", "margin-bottom", "16px", "flex-wrap", "wrap"], ["type", "button", 1, "category-tab", 2, "padding", "6px 14px", "border", "1px solid #dee2e6", "background", "white", "border-radius", "20px", "cursor", "pointer", "font-size", "0.85em", "font-weight", "500", "display", "flex", "align-items", "center", "gap", "6px", "transition", "all 0.2s", "position", "relative", 3, "active", "border-color", "background", "color"], [1, "placeholder-content", 2, "background", "white", "border", "1px solid #dee2e6", "border-radius", "8px", "padding", "16px"], [2, "margin-top", "20px", "padding", "12px", "background", "#e3f2fd", "border-radius", "6px", "border", "1px solid #bbdefb"], [2, "display", "flex", "align-items", "flex-start", "gap", "8px"], [1, "fa-solid", "fa-info-circle", 2, "color", "#1976d2", "margin-top", "2px"], [2, "flex", "1", "font-size", "0.85em", "color", "#1565c0", "line-height", "1.5"], [2, "background", "white", "padding", "2px 4px", "border-radius", "3px"], ["type", "button", 1, "category-tab", 2, "padding", "6px 14px", "border", "1px solid #dee2e6", "background", "white", "border-radius", "20px", "cursor", "pointer", "font-size", "0.85em", "font-weight", "500", "display", "flex", "align-items", "center", "gap", "6px", "transition", "all 0.2s", "position", "relative", 3, "click"], [2, "font-size", "0.9em"], [1, "badge", 2, "background", "rgba(0,0,0,0.1)", "color", "inherit", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.75em", "margin-left", "4px"], [1, "category-header", 2, "display", "flex", "align-items", "center", "gap", "8px", "margin-bottom", "16px"], [2, "font-size", "1.2em"], [2, "margin", "0", "color", "#343a40", "font-weight", "600"], [2, "display", "grid", "gap", "10px"], ["onmouseover", "this.style.borderColor='#007bff'; this.style.background='#f0f8ff'; this.querySelector('.copy-btn').style.opacity='1';", "onmouseout", "this.style.borderColor='#e9ecef'; this.style.background='#f8f9fa'; this.querySelector('.copy-btn').style.opacity='0';", 1, "placeholder-item", 2, "padding", "12px 16px", "background", "#f8f9fa", "border", "1px solid #e9ecef", "border-radius", "6px", "position", "relative", "transition", "all 0.2s", "max-width", "800px"], [2, "display", "inline-flex", "align-items", "center", "gap", "8px"], [2, "color", "#e83e8c", "font-weight", "600", "font-size", "0.95em"], ["type", "button", "onmouseover", "this.style.background='#e7f3ff';", "onmouseout", "this.style.background='none';", "title", "Copy placeholder to clipboard", 1, "copy-btn", 2, "opacity", "0", "transition", "opacity 0.2s", "background", "none", "border", "none", "padding", "4px 8px", "cursor", "pointer", "color", "#007bff", "border-radius", "4px", "display", "inline-flex", "align-items", "center", 3, "click"], [1, "fa-solid", "fa-copy", 2, "font-size", "0.85em"], [2, "color", "#6c757d", "margin-top", "4px", "line-height", "1.4"], [1, "fa-solid", "fa-file-plus", 2, "font-size", "48px", "margin-bottom", "16px", "color", "#6c757d", "opacity", "0.6"], [2, "color", "#495057", "margin-bottom", "8px"], [2, "color", "#6c757d", "margin-bottom", "20px"], ["type", "button", 1, "btn", "btn-primary"], ["type", "button", 1, "btn", "btn-primary", 3, "click"], [1, "fa-solid", "fa-plus"]], template: function TemplateEditorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
887
|
+
} }, inputs: { template: "template", config: "config" }, outputs: { contentChange: "contentChange", runTemplate: "runTemplate" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["codeEditor", ""], [1, "template-editor", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "content-versions-tabs"], [1, "content-editor-container"], [1, "no-content-state"], [1, "content-tabs"], [1, "content-version-tab", 3, "active"], [1, "content-version-tab", "adding-new"], ["title", "Add new template content", 1, "content-version-tab", "add-new"], [1, "content-version-tab", 3, "click"], [2, "flex", "1"], [1, "tab-label"], [1, "tab-meta"], ["type", "button", "title", "Delete this content version", 1, "delete-btn"], [1, "inactive-label"], ["type", "button", "title", "Delete this content version", 1, "delete-btn", 3, "click"], [1, "fa-solid", "fa-trash", "fa-xs"], [1, "fa-solid", "fa-plus", "text-success"], [1, "new-label"], ["title", "Add new template content", 1, "content-version-tab", "add-new", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "content-metadata-bar"], [1, "metadata-grid"], [1, "form-group"], ["for", "contentType", 1, "form-label"], [1, "fa-solid", "fa-tag"], ["name", "contentType", "textField", "text", "valueField", "value", 3, "ngModel", "data", "valuePrimitive"], [1, "form-control-plaintext"], ["for", "priority", 1, "form-label"], [1, "fa-solid", "fa-sort-numeric-up"], ["name", "priority", 3, "ngModel", "min", "step", "format"], [1, "form-label"], [1, "fa-solid", "fa-toggle-on"], [1, "form-check"], [1, "content-text-editor"], [1, "editor-header"], ["for", "templateContent", 1, "editor-label"], [1, "fa-solid", "fa-code"], [1, "content-type-badge"], [1, "editor-actions"], [1, "unsaved-indicator"], ["type", "button", "title", "Test run this template", 1, "run-btn", 3, "disabled"], [1, "code-editor-wrapper", 3, "change", "readonly", "language", "languages"], [1, "template-help-section"], ["name", "contentType", "textField", "text", "valueField", "value", 3, "ngModelChange", "valueChange", "ngModel", "data", "valuePrimitive"], ["name", "priority", 3, "ngModelChange", "ngModel", "min", "step", "format"], ["type", "checkbox", "id", "isActive", "name", "isActive", 1, "form-check-input", 3, "ngModelChange", "ngModel"], ["for", "isActive", 1, "form-check-label"], [1, "badge-success"], [1, "badge-secondary"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-pause-circle"], [1, "fa-solid", "fa-circle"], ["type", "button", "title", "Test run this template", 1, "run-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"], [1, "help-tabs"], ["type", "button", 1, "help-tab", 3, "click"], [1, "fa-solid", "fa-at"], [1, "help-content"], [1, "syntax-help"], [1, "placeholders-help"], [1, "section-title"], [1, "fa-solid", "fa-lightbulb"], [1, "syntax-grid"], [1, "syntax-item"], [1, "placeholders-description"], [1, "category-tabs"], ["type", "button", 1, "category-tab", 3, "active"], [1, "placeholder-content"], [1, "usage-example"], [1, "usage-example-inner"], [1, "fa-solid", "fa-info-circle"], [1, "usage-example-text"], ["type", "button", 1, "category-tab", 3, "click"], [2, "font-size", "0.9em"], [1, "tab-badge"], [1, "category-header"], [1, "placeholder-grid"], [1, "placeholder-item"], [1, "placeholder-item-inner"], [1, "placeholder-name-row"], [1, "placeholder-code"], ["type", "button", "title", "Copy placeholder to clipboard", 1, "copy-btn", 3, "click"], [1, "fa-solid", "fa-copy"], [1, "placeholder-description"], [1, "fa-solid", "fa-file-plus"], ["type", "button", 1, "btn", "btn-primary"], ["type", "button", 1, "btn", "btn-primary", 3, "click"]], template: function TemplateEditorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
892
888
|
i0.ɵɵconditionalCreate(0, TemplateEditorComponent_Conditional_0_Template, 4, 2, "div", 1);
|
|
893
889
|
} if (rf & 2) {
|
|
894
890
|
i0.ɵɵconditional(ctx.template ? 0 : -1);
|
|
895
|
-
} }, dependencies: [i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.NumericTextBoxComponent, i4.DropDownListComponent, i5.CodeEditorComponent], styles: [".template-editor[_ngcontent-%COMP%] {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n.section-header[_ngcontent-%COMP%] h6[_ngcontent-%COMP%] {\n font-size: 0.9em;\n}\n\n.param-row[_ngcontent-%COMP%]:hover {\n background-color: #f8f9fa !important;\n}\n\n.content-item[_ngcontent-%COMP%] {\n transition: box-shadow 0.2s ease;\n}\n\n.content-item[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 0.7em;\n line-height: 1;\n}\n\n\n\n.template-editor[_ngcontent-%COMP%] kendo-textbox[_ngcontent-%COMP%], \n.template-editor[_ngcontent-%COMP%] kendo-textarea[_ngcontent-%COMP%], \n.template-editor[_ngcontent-%COMP%] kendo-dropdownlist[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.template-editor[_ngcontent-%COMP%] kendo-button[_ngcontent-%COMP%] {\n min-width: auto;\n}"] }); }
|
|
891
|
+
} }, dependencies: [i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.NumericTextBoxComponent, i4.DropDownListComponent, i5.CodeEditorComponent], styles: [".template-editor[_ngcontent-%COMP%] {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n.section-header[_ngcontent-%COMP%] h6[_ngcontent-%COMP%] {\n font-size: 0.9em;\n}\n\n.param-row[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card) !important;\n}\n\n.content-item[_ngcontent-%COMP%] {\n transition: box-shadow 0.2s ease;\n}\n\n.content-item[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n}\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 0.7em;\n line-height: 1;\n}\n\n\n\n.template-editor[_ngcontent-%COMP%] kendo-textbox[_ngcontent-%COMP%], \n.template-editor[_ngcontent-%COMP%] kendo-textarea[_ngcontent-%COMP%], \n.template-editor[_ngcontent-%COMP%] kendo-dropdownlist[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.template-editor[_ngcontent-%COMP%] kendo-button[_ngcontent-%COMP%] {\n min-width: auto;\n}\n\n\n\n.content-versions-tabs[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n border-bottom: 2px solid var(--mj-border-default);\n padding-bottom: 8px;\n}\n\n.content-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.content-version-tab[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n cursor: pointer;\n background: var(--mj-bg-surface);\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n position: relative;\n}\n\n.content-version-tab.active[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.content-version-tab[_ngcontent-%COMP%] .tab-label[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.85em;\n color: var(--mj-text-secondary);\n}\n\n.content-version-tab[_ngcontent-%COMP%] .tab-meta[_ngcontent-%COMP%] {\n font-size: 0.7em;\n color: var(--mj-text-muted);\n}\n\n.content-version-tab[_ngcontent-%COMP%] .tab-meta[_ngcontent-%COMP%] .inactive-label[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.content-version-tab[_ngcontent-%COMP%] .delete-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-status-error);\n padding: 4px;\n border-radius: 3px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.content-version-tab[_ngcontent-%COMP%] .delete-btn[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n\n\n.content-version-tab.adding-new[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.content-version-tab.adding-new[_ngcontent-%COMP%] .new-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-status-success);\n font-size: 0.85em;\n}\n\n\n\n.content-version-tab.add-new[_ngcontent-%COMP%] {\n border: 1px dashed var(--mj-status-success);\n background: var(--mj-bg-surface-card);\n}\n\n.content-version-tab.add-new[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-success) 8%, var(--mj-bg-surface));\n border-style: solid;\n}\n\n.content-version-tab.add-new[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 0.75em;\n}\n\n.content-version-tab.add-new[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-status-success);\n font-size: 0.85em;\n}\n\n\n\n.content-editor-container[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n\n\n.content-metadata-bar[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 16px 20px;\n}\n\n.metadata-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 1fr 1fr auto;\n gap: 20px;\n align-items: end;\n}\n\n.form-group[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n.form-label[_ngcontent-%COMP%] {\n margin-bottom: 4px;\n font-size: 0.9em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-control-plaintext[_ngcontent-%COMP%] {\n font-size: 0.9em;\n padding: 4px 0;\n}\n\n.form-check[_ngcontent-%COMP%] {\n margin-top: 8px;\n}\n\n.form-check-label[_ngcontent-%COMP%] {\n font-size: 0.9em;\n}\n\n.badge-success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 3px 8px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.badge-secondary[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n border: 1px solid color-mix(in srgb, var(--mj-text-muted) 30%, transparent);\n padding: 3px 8px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n\n\n.content-text-editor[_ngcontent-%COMP%] {\n flex: 1;\n padding: 20px;\n display: flex;\n flex-direction: column;\n}\n\n.editor-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.editor-label[_ngcontent-%COMP%] {\n margin: 0;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.content-type-badge[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 0.75em;\n color: var(--mj-text-inverse);\n}\n\n.content-type-badge.new[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.content-type-badge.existing[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}\n\n.editor-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.unsaved-indicator[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n font-size: 0.85em;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.unsaved-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.5em;\n}\n\n.run-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 6px 12px;\n border-radius: 4px;\n font-size: 0.85em;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.run-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n\n\n.code-editor-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n height: 350px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 4px;\n}\n\n\n\n.template-help-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.help-tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 2px solid var(--mj-border-default);\n margin-bottom: 0;\n}\n\n.help-tab[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 0.9em;\n font-weight: 600;\n color: var(--mj-text-muted);\n border-bottom: 3px solid transparent;\n transition: all 0.2s;\n}\n\n.help-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n border-bottom-color: var(--mj-status-success);\n}\n\n\n\n.help-content[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-top: none;\n border-radius: 0 0 4px 4px;\n}\n\n\n\n.syntax-help[_ngcontent-%COMP%] {\n font-size: 0.85em;\n}\n\n.syntax-help[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] {\n font-weight: 600;\n margin-bottom: 12px;\n color: var(--mj-status-success);\n}\n\n.syntax-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n\n.syntax-item[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.syntax-help[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 4px 6px;\n border-radius: 3px;\n display: inline-block;\n margin-top: 4px;\n color: var(--mj-text-primary);\n}\n\n\n\n.placeholders-help[_ngcontent-%COMP%] {\n font-size: 0.85em;\n}\n\n.placeholders-help[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] {\n font-weight: 600;\n margin-bottom: 12px;\n color: var(--mj-status-success);\n}\n\n.placeholders-description[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n\n\n.category-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.category-tab[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 20px;\n cursor: pointer;\n font-size: 0.85em;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n color: var(--mj-text-muted);\n}\n\n.category-tab.active[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.category-tab[_ngcontent-%COMP%] .tab-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n color: inherit;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n margin-left: 4px;\n}\n\n\n\n.placeholder-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n}\n\n.category-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.category-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n}\n\n.category-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.placeholder-grid[_ngcontent-%COMP%] {\n display: grid;\n gap: 10px;\n}\n\n\n\n.placeholder-item[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n position: relative;\n transition: all 0.2s;\n max-width: 800px;\n}\n\n.placeholder-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.placeholder-item[_ngcontent-%COMP%]:hover .copy-btn[_ngcontent-%COMP%] {\n opacity: 1 !important;\n}\n\n.placeholder-item-inner[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.placeholder-name-row[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.placeholder-code[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: 600;\n font-size: 0.95em;\n}\n\n.copy-btn[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.2s;\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-brand-primary);\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n}\n\n.copy-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.copy-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.85em;\n}\n\n.placeholder-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n margin-top: 4px;\n line-height: 1.4;\n}\n\n\n\n.usage-example[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 6px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.usage-example-inner[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.usage-example[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.usage-example-text[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 0.85em;\n color: var(--mj-brand-primary);\n line-height: 1.5;\n}\n\n.usage-example[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 2px 4px;\n border-radius: 3px;\n}\n\n\n\n.no-content-state[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n border-radius: 8px;\n padding: 40px;\n text-align: center;\n}\n\n.no-content-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-text-muted);\n opacity: 0.6;\n}\n\n.no-content-state[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.no-content-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n margin-bottom: 20px;\n}"] }); }
|
|
896
892
|
}
|
|
897
893
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TemplateEditorComponent, [{
|
|
898
894
|
type: Component,
|
|
899
|
-
args: [{ standalone: false, selector: 'mj-template-editor', template: "@if (template) {\n <div class=\"template-editor\" style=\"height: 100%; display: flex; flex-direction: column;\">\n <!-- Content Versions List/Tabs -->\n @if (templateContents.length > 0) {\n <div class=\"content-versions-tabs\" style=\"margin-bottom: 16px; border-bottom: 2px solid #e0e0e0; padding-bottom: 8px;\">\n <div class=\"content-tabs\" style=\"display: flex; gap: 6px; flex-wrap: wrap;\">\n @for (content of templateContents; track content.ID || $index; let i = $index) {\n <div class=\"content-version-tab\"\n [class.active]=\"selectedContentIndex === i && !isAddingNewContent\"\n (click)=\"selectTemplateContent(i, false)\"\n style=\"padding: 8px 12px; border: 1px solid #ccc; border-radius: 6px; cursor: pointer; background: #fff; display: flex; align-items: center; gap: 6px; transition: all 0.2s; position: relative;\"\n [style.border-color]=\"selectedContentIndex === i && !isAddingNewContent ? '#007bff' : '#ccc'\"\n [style.background]=\"selectedContentIndex === i && !isAddingNewContent ? '#e3f2fd' : '#fff'\">\n <div style=\"flex: 1;\">\n <div style=\"font-weight: 600; font-size: 0.85em; color: #495057;\">\n {{ content.Type || 'Version ' + (i + 1) }}\n </div>\n <div style=\"font-size: 0.7em; color: #6c757d;\">\n P:{{ content.Priority }}\n @if (!content.IsActive) {\n \u2022 <span style=\"color: #dc3545;\">Inactive</span>\n }\n </div>\n </div>\n @if (templateContents.length > 1 && config.allowEdit) {\n <button type=\"button\"\n (click)=\"deleteTemplateContent(i); $event.stopPropagation()\"\n class=\"btn-sm delete-btn\"\n style=\"background: none; border: none; color: #dc3545; padding: 4px; border-radius: 3px; transition: all 0.2s; cursor: pointer;\"\n onmouseover=\"this.style.backgroundColor='#dc3545'; this.style.color='white';\"\n onmouseout=\"this.style.backgroundColor='transparent'; this.style.color='#dc3545';\"\n title=\"Delete this content version\">\n <i class=\"fa-solid fa-trash fa-xs\"></i>\n </button>\n }\n </div>\n }\n @if (isAddingNewContent) {\n <div class=\"content-version-tab active\"\n style=\"padding: 8px 12px; border: 1px solid #28a745; border-radius: 6px; background: #d4edda; display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-plus text-success\"></i>\n <span style=\"font-weight: 600; color: #155724; font-size: 0.85em;\">New</span>\n </div>\n }\n <!-- Add New Content (Edit Mode Only) -->\n @if (config.allowEdit && !isAddingNewContent) {\n <div class=\"content-version-tab add-new\"\n (click)=\"addNewTemplateContent()\"\n style=\"padding: 8px 12px; border: 1px dashed #28a745; border-radius: 6px; background: #f8f9fa; display: flex; align-items: center; gap: 6px; cursor: pointer; transition: all 0.2s;\"\n onmouseover=\"this.style.backgroundColor='#e8f5e9'; this.style.borderStyle='solid';\"\n onmouseout=\"this.style.backgroundColor='#f8f9fa'; this.style.borderStyle='dashed';\"\n title=\"Add new template content\">\n <i class=\"fa-solid fa-plus\" style=\"color: #28a745; font-size: 0.75em;\"></i>\n <span style=\"font-weight: 500; color: #28a745; font-size: 0.85em;\">New</span>\n </div>\n }\n </div>\n </div>\n }\n <!-- Content Editor -->\n @if (currentTemplateContent) {\n <div class=\"content-editor-container\" style=\"flex: 1; display: flex; flex-direction: column; background: #fff; border: 1px solid #dee2e6; border-radius: 8px; overflow: hidden;\">\n <!-- Content Metadata Bar -->\n <div class=\"content-metadata-bar\" style=\"background: #f8f9fa; border-bottom: 1px solid #dee2e6; padding: 16px 20px;\">\n <div style=\"display: grid; grid-template-columns: 2fr 1fr 1fr auto; gap: 20px; align-items: end;\">\n <div class=\"form-group\" style=\"margin: 0;\">\n <label for=\"contentType\" class=\"form-label\" style=\"margin-bottom: 4px; font-size: 0.9em; font-weight: 600;\">\n <i class=\"fa-solid fa-tag\"></i> Content Type\n </label>\n @if (config.allowEdit) {\n <kendo-dropdownlist [(ngModel)]=\"currentTemplateContent.TypeID\"\n name=\"contentType\"\n [data]=\"getContentTypeOptionsForContent()\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"onContentTypeChange()\">\n </kendo-dropdownlist>\n } @else {\n <div class=\"form-control-plaintext\" style=\"font-size: 0.9em; padding: 4px 0;\">\n {{ getContentTypeDisplayText(currentTemplateContent.TypeID) }}\n </div>\n }\n </div>\n <div class=\"form-group\" style=\"margin: 0;\">\n <label for=\"priority\" class=\"form-label\" style=\"margin-bottom: 4px; font-size: 0.9em; font-weight: 600;\">\n <i class=\"fa-solid fa-sort-numeric-up\"></i> Priority\n </label>\n @if (config.allowEdit) {\n <kendo-numerictextbox [(ngModel)]=\"currentTemplateContent.Priority\"\n name=\"priority\"\n [min]=\"1\"\n [step]=\"1\"\n [format]=\"'n0'\">\n </kendo-numerictextbox>\n } @else {\n <div class=\"form-control-plaintext\" style=\"font-size: 0.9em; padding: 4px 0;\">\n {{ currentTemplateContent.Priority || '-' }}\n </div>\n }\n </div>\n <div class=\"form-group\" style=\"margin: 0;\">\n <label class=\"form-label\" style=\"margin-bottom: 4px; font-size: 0.9em; font-weight: 600;\">\n <i class=\"fa-solid fa-toggle-on\"></i> Status\n </label>\n @if (config.allowEdit) {\n <div class=\"form-check\" style=\"margin-top: 8px;\">\n <input type=\"checkbox\"\n id=\"isActive\"\n class=\"form-check-input\"\n [(ngModel)]=\"currentTemplateContent.IsActive\"\n name=\"isActive\">\n <label class=\"form-check-label\" for=\"isActive\" style=\"font-size: 0.9em;\">\n Active\n </label>\n </div>\n } @else {\n <div class=\"form-control-plaintext\" style=\"font-size: 0.9em; padding: 4px 0;\">\n @if (currentTemplateContent.IsActive) {\n <span class=\"badge badge-success\" style=\"background: #28a745; color: white; padding: 3px 8px; border-radius: 3px; font-size: 0.75em;\">\n <i class=\"fa-solid fa-check-circle\"></i> Active\n </span>\n } @else {\n <span class=\"badge badge-secondary\" style=\"background: #6c757d; color: white; padding: 3px 8px; border-radius: 3px; font-size: 0.75em;\">\n <i class=\"fa-solid fa-pause-circle\"></i> Inactive\n </span>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Content Text Editor -->\n <div class=\"content-text-editor\" style=\"flex: 1; padding: 20px; display: flex; flex-direction: column;\">\n <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;\">\n <label for=\"templateContent\" class=\"form-label\" style=\"margin: 0; font-weight: 600; display: flex; align-items: center; gap: 8px;\">\n <i class=\"fa-solid fa-code\"></i> Template Content\n <span class=\"badge\" style=\"padding: 4px 8px; border-radius: 4px; font-size: 0.75em;\"\n [style.background]=\"!currentTemplateContent.ID ? '#28a745' : '#6c757d'\"\n [style.color]=\"'white'\">\n @if (!currentTemplateContent.ID) {\n New\n } @else {\n {{ getContentTypeDisplayText(currentTemplateContent.TypeID) }}\n }\n </span>\n </label>\n <div style=\"display: flex; align-items: center; gap: 12px;\">\n @if (!isAddingNewContent && hasUnsavedChanges) {\n <span class=\"unsaved-indicator\" style=\"color: #fd7e14; font-size: 0.85em; display: flex; align-items: center; gap: 4px;\">\n <i class=\"fa-solid fa-circle\" style=\"font-size: 0.5em;\"></i>\n Unsaved changes\n </span>\n }\n @if (template.IsSaved && currentTemplateContent && config.showRunButton) {\n <button type=\"button\"\n class=\"btn btn-sm\"\n [disabled]=\"isRunningTemplate\"\n (click)=\"onRunTemplate()\"\n style=\"background: #17a2b8; color: white; border: none; padding: 6px 12px; border-radius: 4px; font-size: 0.85em; display: flex; align-items: center; gap: 6px; transition: all 0.2s;\"\n onmouseover=\"this.style.background='#138496'\"\n onmouseout=\"this.style.background='#17a2b8'\"\n title=\"Test run this template\">\n @if (isRunningTemplate) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i>\n Run\n }\n </button>\n }\n </div>\n </div>\n <mj-code-editor\n #codeEditor\n (change)=\"onTemplateTextChange($event)\"\n [readonly]=\"!config.allowEdit\"\n [language]=\"getEditorLanguage()\"\n [languages]=\"supportedLanguages\"\n style=\"flex: 1; height: 350px; border: 1px solid #ced4da; border-radius: 4px;\">\n </mj-code-editor>\n <!-- Template Help Section with Tabs -->\n @if (!config.compactMode) {\n <div class=\"template-help-section\" style=\"margin-top: 16px;\">\n <!-- Tab Navigation -->\n <div class=\"help-tabs\" style=\"display: flex; border-bottom: 2px solid #dee2e6; margin-bottom: 0;\">\n <button type=\"button\"\n class=\"help-tab\"\n [class.active]=\"activeHelpTab === 'syntax'\"\n (click)=\"activeHelpTab = 'syntax'\"\n style=\"padding: 8px 16px; border: none; background: none; cursor: pointer; font-size: 0.9em; font-weight: 600; color: #6c757d; border-bottom: 3px solid transparent; transition: all 0.2s;\"\n [style.color]=\"activeHelpTab === 'syntax' ? '#28a745' : '#6c757d'\"\n [style.border-bottom-color]=\"activeHelpTab === 'syntax' ? '#28a745' : 'transparent'\">\n <i class=\"fa-solid fa-code\"></i> Template Syntax\n </button>\n <button type=\"button\"\n class=\"help-tab\"\n [class.active]=\"activeHelpTab === 'placeholders'\"\n (click)=\"activeHelpTab = 'placeholders'\"\n style=\"padding: 8px 16px; border: none; background: none; cursor: pointer; font-size: 0.9em; font-weight: 600; color: #6c757d; border-bottom: 3px solid transparent; transition: all 0.2s;\"\n [style.color]=\"activeHelpTab === 'placeholders' ? '#28a745' : '#6c757d'\"\n [style.border-bottom-color]=\"activeHelpTab === 'placeholders' ? '#28a745' : 'transparent'\">\n <i class=\"fa-solid fa-at\"></i> System Placeholders\n </button>\n </div>\n <!-- Tab Content -->\n <div class=\"help-content\" style=\"padding: 16px; background: #f8f9fa; border: 1px solid #dee2e6; border-top: none; border-radius: 0 0 4px 4px;\">\n <!-- Template Syntax Tab -->\n @if (activeHelpTab === 'syntax') {\n <div class=\"syntax-help\" style=\"font-size: 0.85em;\">\n <div style=\"font-weight: 600; margin-bottom: 12px; color: #155724;\">\n <i class=\"fa-solid fa-lightbulb\"></i> Template Syntax Quick Reference\n </div>\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 16px;\">\n <div>\n <div style=\"margin-bottom: 8px;\">\n <strong>Parameters:</strong><br>\n <code style=\"background: #fff; padding: 4px 6px; border-radius: 3px; display: inline-block; margin-top: 4px;\">{{'{{'}} paramName {{'}}'}}</code>\n </div>\n <div>\n <strong>Template Includes:</strong><br>\n <code style=\"background: #fff; padding: 4px 6px; border-radius: 3px; display: inline-block; margin-top: 4px;\">{{'{% template \"TemplateName\" %}'}}</code>\n </div>\n </div>\n <div>\n <div style=\"margin-bottom: 8px;\">\n <strong>Conditionals:</strong><br>\n <code style=\"background: #fff; padding: 4px 6px; border-radius: 3px; display: inline-block; margin-top: 4px;\">{{'{% if condition %}'}} ... {{'{% endif %}'}}</code>\n </div>\n <div>\n <strong>Loops:</strong><br>\n <code style=\"background: #fff; padding: 4px 6px; border-radius: 3px; display: inline-block; margin-top: 4px;\">{{'{% for item in items %}'}} ... {{'{% endfor %}'}}</code>\n </div>\n </div>\n </div>\n </div>\n }\n <!-- System Placeholders Tab -->\n @if (activeHelpTab === 'placeholders') {\n <div class=\"placeholders-help\" style=\"font-size: 0.85em;\">\n <div style=\"font-weight: 600; margin-bottom: 12px; color: #155724;\">\n <i class=\"fa-solid fa-at\"></i> System Placeholders Reference\n </div>\n <p style=\"margin-bottom: 16px; color: #495057; line-height: 1.5;\">\n System placeholders are automatically available in all AI prompt templates. Simply use them in your template text and they will be replaced with their current values at execution time.\n </p>\n <!-- Category Sub-tabs -->\n <div class=\"category-tabs\" style=\"display: flex; gap: 8px; margin-bottom: 16px; flex-wrap: wrap;\">\n @for (categoryGroup of placeholderCategories; track categoryGroup.category.name) {\n <button type=\"button\"\n class=\"category-tab\"\n [class.active]=\"activePlaceholderCategory === categoryGroup.category.name\"\n (click)=\"activePlaceholderCategory = categoryGroup.category.name\"\n style=\"padding: 6px 14px; border: 1px solid #dee2e6; background: white; border-radius: 20px; cursor: pointer; font-size: 0.85em; font-weight: 500; display: flex; align-items: center; gap: 6px; transition: all 0.2s; position: relative;\"\n [style.border-color]=\"activePlaceholderCategory === categoryGroup.category.name ? categoryGroup.category.color : '#dee2e6'\"\n [style.background]=\"activePlaceholderCategory === categoryGroup.category.name ? categoryGroup.category.color + '10' : 'white'\"\n [style.color]=\"activePlaceholderCategory === categoryGroup.category.name ? categoryGroup.category.color : '#6c757d'\">\n <i [class]=\"'fa-solid ' + categoryGroup.category.icon\" style=\"font-size: 0.9em;\"></i>\n {{ categoryGroup.category.name }}\n <span class=\"badge\"\n style=\"background: rgba(0,0,0,0.1); color: inherit; padding: 2px 6px; border-radius: 10px; font-size: 0.75em; margin-left: 4px;\">\n {{ categoryGroup.placeholders.length }}\n </span>\n </button>\n }\n </div>\n <!-- Active Category Content -->\n <div class=\"placeholder-content\" style=\"background: white; border: 1px solid #dee2e6; border-radius: 8px; padding: 16px;\">\n @for (categoryGroup of placeholderCategories; track categoryGroup.category.name) {\n @if (activePlaceholderCategory === categoryGroup.category.name) {\n <div class=\"category-header\" style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 16px;\">\n <i [class]=\"'fa-solid ' + categoryGroup.category.icon\"\n [style.color]=\"categoryGroup.category.color\"\n style=\"font-size: 1.2em;\"></i>\n <h5 style=\"margin: 0; color: #343a40; font-weight: 600;\">{{ categoryGroup.category.name }}</h5>\n </div>\n <div style=\"display: grid; gap: 10px;\">\n @for (placeholder of categoryGroup.placeholders; track placeholder.name) {\n <div class=\"placeholder-item\"\n style=\"padding: 12px 16px; background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 6px; position: relative; transition: all 0.2s; max-width: 800px;\"\n onmouseover=\"this.style.borderColor='#007bff'; this.style.background='#f0f8ff'; this.querySelector('.copy-btn').style.opacity='1';\"\n onmouseout=\"this.style.borderColor='#e9ecef'; this.style.background='#f8f9fa'; this.querySelector('.copy-btn').style.opacity='0';\">\n <div style=\"display: flex; align-items: flex-start; gap: 8px;\">\n <div>\n <div style=\"display: inline-flex; align-items: center; gap: 8px;\">\n <code style=\"color: #e83e8c; font-weight: 600; font-size: 0.95em;\">{{'{{'}} {{ placeholder.name }} {{'}}'}}</code>\n <button type=\"button\"\n class=\"copy-btn\"\n (click)=\"copyPlaceholder(placeholder.name)\"\n style=\"opacity: 0; transition: opacity 0.2s; background: none; border: none; padding: 4px 8px; cursor: pointer; color: #007bff; border-radius: 4px; display: inline-flex; align-items: center;\"\n onmouseover=\"this.style.background='#e7f3ff';\"\n onmouseout=\"this.style.background='none';\"\n title=\"Copy placeholder to clipboard\">\n <i class=\"fa-solid fa-copy\" style=\"font-size: 0.85em;\"></i>\n </button>\n </div>\n @if (placeholder.description) {\n <div style=\"color: #6c757d; margin-top: 4px; line-height: 1.4;\">{{ placeholder.description }}</div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n <!-- Usage Example -->\n <div style=\"margin-top: 20px; padding: 12px; background: #e3f2fd; border-radius: 6px; border: 1px solid #bbdefb;\">\n <div style=\"display: flex; align-items: flex-start; gap: 8px;\">\n <i class=\"fa-solid fa-info-circle\" style=\"color: #1976d2; margin-top: 2px;\"></i>\n <div style=\"flex: 1; font-size: 0.85em; color: #1565c0; line-height: 1.5;\">\n <strong>Usage Example:</strong> To use a system placeholder in your template, simply include it in double curly braces.\n For example: <code style=\"background: white; padding: 2px 4px; border-radius: 3px;\">\"Today is {{'{{'}} _CURRENT_DATE {{'}}'}} and the current user is {{'{{'}} _USER_NAME {{'}}'}}\"</code>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- No Content State -->\n <div class=\"no-content-state\" style=\"flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; background: #f8f9fa; border: 2px dashed #dee2e6; border-radius: 8px; padding: 40px; text-align: center;\">\n <i class=\"fa-solid fa-file-plus\" style=\"font-size: 48px; margin-bottom: 16px; color: #6c757d; opacity: 0.6;\"></i>\n <h5 style=\"color: #495057; margin-bottom: 8px;\">No Template Content</h5>\n <p style=\"color: #6c757d; margin-bottom: 20px;\">Create your first template content version to get started.</p>\n @if (config.allowEdit) {\n <button type=\"button\"\n (click)=\"addNewTemplateContent()\"\n class=\"btn btn-primary\">\n <i class=\"fa-solid fa-plus\"></i> Create First Content Version\n </button>\n }\n </div>\n }\n </div>\n}", styles: [".template-editor {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n.section-header h6 {\n font-size: 0.9em;\n}\n\n.param-row:hover {\n background-color: #f8f9fa !important;\n}\n\n.content-item {\n transition: box-shadow 0.2s ease;\n}\n\n.content-item:hover {\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.badge {\n display: inline-block;\n font-size: 0.7em;\n line-height: 1;\n}\n\n/* Kendo UI overrides for better integration */\n.template-editor kendo-textbox,\n.template-editor kendo-textarea,\n.template-editor kendo-dropdownlist {\n width: 100%;\n}\n\n.template-editor kendo-button {\n min-width: auto;\n}"] }]
|
|
895
|
+
args: [{ standalone: false, selector: 'mj-template-editor', template: "@if (template) {\n <div class=\"template-editor\" style=\"height: 100%; display: flex; flex-direction: column;\">\n <!-- Content Versions List/Tabs -->\n @if (templateContents.length > 0) {\n <div class=\"content-versions-tabs\">\n <div class=\"content-tabs\">\n @for (content of templateContents; track content.ID || $index; let i = $index) {\n <div class=\"content-version-tab\"\n [class.active]=\"selectedContentIndex === i && !isAddingNewContent\"\n (click)=\"selectTemplateContent(i, false)\">\n <div style=\"flex: 1;\">\n <div class=\"tab-label\">\n {{ content.Type || 'Version ' + (i + 1) }}\n </div>\n <div class=\"tab-meta\">\n P:{{ content.Priority }}\n @if (!content.IsActive) {\n \u2022 <span class=\"inactive-label\">Inactive</span>\n }\n </div>\n </div>\n @if (templateContents.length > 1 && config.allowEdit) {\n <button type=\"button\"\n (click)=\"deleteTemplateContent(i); $event.stopPropagation()\"\n class=\"delete-btn\"\n title=\"Delete this content version\">\n <i class=\"fa-solid fa-trash fa-xs\"></i>\n </button>\n }\n </div>\n }\n @if (isAddingNewContent) {\n <div class=\"content-version-tab adding-new\">\n <i class=\"fa-solid fa-plus text-success\"></i>\n <span class=\"new-label\">New</span>\n </div>\n }\n <!-- Add New Content (Edit Mode Only) -->\n @if (config.allowEdit && !isAddingNewContent) {\n <div class=\"content-version-tab add-new\"\n (click)=\"addNewTemplateContent()\"\n title=\"Add new template content\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>New</span>\n </div>\n }\n </div>\n </div>\n }\n <!-- Content Editor -->\n @if (currentTemplateContent) {\n <div class=\"content-editor-container\">\n <!-- Content Metadata Bar -->\n <div class=\"content-metadata-bar\">\n <div class=\"metadata-grid\">\n <div class=\"form-group\">\n <label for=\"contentType\" class=\"form-label\">\n <i class=\"fa-solid fa-tag\"></i> Content Type\n </label>\n @if (config.allowEdit) {\n <kendo-dropdownlist [(ngModel)]=\"currentTemplateContent.TypeID\"\n name=\"contentType\"\n [data]=\"getContentTypeOptionsForContent()\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"onContentTypeChange()\">\n </kendo-dropdownlist>\n } @else {\n <div class=\"form-control-plaintext\">\n {{ getContentTypeDisplayText(currentTemplateContent.TypeID) }}\n </div>\n }\n </div>\n <div class=\"form-group\">\n <label for=\"priority\" class=\"form-label\">\n <i class=\"fa-solid fa-sort-numeric-up\"></i> Priority\n </label>\n @if (config.allowEdit) {\n <kendo-numerictextbox [(ngModel)]=\"currentTemplateContent.Priority\"\n name=\"priority\"\n [min]=\"1\"\n [step]=\"1\"\n [format]=\"'n0'\">\n </kendo-numerictextbox>\n } @else {\n <div class=\"form-control-plaintext\">\n {{ currentTemplateContent.Priority || '-' }}\n </div>\n }\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-toggle-on\"></i> Status\n </label>\n @if (config.allowEdit) {\n <div class=\"form-check\">\n <input type=\"checkbox\"\n id=\"isActive\"\n class=\"form-check-input\"\n [(ngModel)]=\"currentTemplateContent.IsActive\"\n name=\"isActive\">\n <label class=\"form-check-label\" for=\"isActive\">\n Active\n </label>\n </div>\n } @else {\n <div class=\"form-control-plaintext\">\n @if (currentTemplateContent.IsActive) {\n <span class=\"badge-success\">\n <i class=\"fa-solid fa-check-circle\"></i> Active\n </span>\n } @else {\n <span class=\"badge-secondary\">\n <i class=\"fa-solid fa-pause-circle\"></i> Inactive\n </span>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Content Text Editor -->\n <div class=\"content-text-editor\">\n <div class=\"editor-header\">\n <label for=\"templateContent\" class=\"editor-label\">\n <i class=\"fa-solid fa-code\"></i> Template Content\n <span class=\"content-type-badge\"\n [class.new]=\"!currentTemplateContent.ID\"\n [class.existing]=\"!!currentTemplateContent.ID\">\n @if (!currentTemplateContent.ID) {\n New\n } @else {\n {{ getContentTypeDisplayText(currentTemplateContent.TypeID) }}\n }\n </span>\n </label>\n <div class=\"editor-actions\">\n @if (!isAddingNewContent && hasUnsavedChanges) {\n <span class=\"unsaved-indicator\">\n <i class=\"fa-solid fa-circle\"></i>\n Unsaved changes\n </span>\n }\n @if (template.IsSaved && currentTemplateContent && config.showRunButton) {\n <button type=\"button\"\n class=\"run-btn\"\n [disabled]=\"isRunningTemplate\"\n (click)=\"onRunTemplate()\"\n title=\"Test run this template\">\n @if (isRunningTemplate) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i>\n Run\n }\n </button>\n }\n </div>\n </div>\n <mj-code-editor\n #codeEditor\n (change)=\"onTemplateTextChange($event)\"\n [readonly]=\"!config.allowEdit\"\n [language]=\"getEditorLanguage()\"\n [languages]=\"supportedLanguages\"\n class=\"code-editor-wrapper\">\n </mj-code-editor>\n <!-- Template Help Section with Tabs -->\n @if (!config.compactMode) {\n <div class=\"template-help-section\">\n <!-- Tab Navigation -->\n <div class=\"help-tabs\">\n <button type=\"button\"\n class=\"help-tab\"\n [class.active]=\"activeHelpTab === 'syntax'\"\n (click)=\"activeHelpTab = 'syntax'\">\n <i class=\"fa-solid fa-code\"></i> Template Syntax\n </button>\n <button type=\"button\"\n class=\"help-tab\"\n [class.active]=\"activeHelpTab === 'placeholders'\"\n (click)=\"activeHelpTab = 'placeholders'\">\n <i class=\"fa-solid fa-at\"></i> System Placeholders\n </button>\n </div>\n <!-- Tab Content -->\n <div class=\"help-content\">\n <!-- Template Syntax Tab -->\n @if (activeHelpTab === 'syntax') {\n <div class=\"syntax-help\">\n <div class=\"section-title\">\n <i class=\"fa-solid fa-lightbulb\"></i> Template Syntax Quick Reference\n </div>\n <div class=\"syntax-grid\">\n <div>\n <div class=\"syntax-item\">\n <strong>Parameters:</strong><br>\n <code>{{'{{'}} paramName {{'}}'}}</code>\n </div>\n <div>\n <strong>Template Includes:</strong><br>\n <code>{{'{% template \"TemplateName\" %}'}}</code>\n </div>\n </div>\n <div>\n <div class=\"syntax-item\">\n <strong>Conditionals:</strong><br>\n <code>{{'{% if condition %}'}} ... {{'{% endif %}'}}</code>\n </div>\n <div>\n <strong>Loops:</strong><br>\n <code>{{'{% for item in items %}'}} ... {{'{% endfor %}'}}</code>\n </div>\n </div>\n </div>\n </div>\n }\n <!-- System Placeholders Tab -->\n @if (activeHelpTab === 'placeholders') {\n <div class=\"placeholders-help\">\n <div class=\"section-title\">\n <i class=\"fa-solid fa-at\"></i> System Placeholders Reference\n </div>\n <p class=\"placeholders-description\">\n System placeholders are automatically available in all AI prompt templates. Simply use them in your template text and they will be replaced with their current values at execution time.\n </p>\n <!-- Category Sub-tabs -->\n <div class=\"category-tabs\">\n @for (categoryGroup of placeholderCategories; track categoryGroup.category.name) {\n <button type=\"button\"\n class=\"category-tab\"\n [class.active]=\"activePlaceholderCategory === categoryGroup.category.name\"\n (click)=\"activePlaceholderCategory = categoryGroup.category.name\">\n <i [class]=\"'fa-solid ' + categoryGroup.category.icon\" style=\"font-size: 0.9em;\"></i>\n {{ categoryGroup.category.name }}\n <span class=\"tab-badge\">\n {{ categoryGroup.placeholders.length }}\n </span>\n </button>\n }\n </div>\n <!-- Active Category Content -->\n <div class=\"placeholder-content\">\n @for (categoryGroup of placeholderCategories; track categoryGroup.category.name) {\n @if (activePlaceholderCategory === categoryGroup.category.name) {\n <div class=\"category-header\">\n <i [class]=\"'fa-solid ' + categoryGroup.category.icon\"\n [style.color]=\"categoryGroup.category.color\"></i>\n <h5>{{ categoryGroup.category.name }}</h5>\n </div>\n <div class=\"placeholder-grid\">\n @for (placeholder of categoryGroup.placeholders; track placeholder.name) {\n <div class=\"placeholder-item\">\n <div class=\"placeholder-item-inner\">\n <div>\n <div class=\"placeholder-name-row\">\n <code class=\"placeholder-code\">{{'{{'}} {{ placeholder.name }} {{'}}'}}</code>\n <button type=\"button\"\n class=\"copy-btn\"\n (click)=\"copyPlaceholder(placeholder.name)\"\n title=\"Copy placeholder to clipboard\">\n <i class=\"fa-solid fa-copy\"></i>\n </button>\n </div>\n @if (placeholder.description) {\n <div class=\"placeholder-description\">{{ placeholder.description }}</div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n <!-- Usage Example -->\n <div class=\"usage-example\">\n <div class=\"usage-example-inner\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <div class=\"usage-example-text\">\n <strong>Usage Example:</strong> To use a system placeholder in your template, simply include it in double curly braces.\n For example: <code>\"Today is {{'{{'}} _CURRENT_DATE {{'}}'}} and the current user is {{'{{'}} _USER_NAME {{'}}'}}\"</code>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- No Content State -->\n <div class=\"no-content-state\">\n <i class=\"fa-solid fa-file-plus\"></i>\n <h5>No Template Content</h5>\n <p>Create your first template content version to get started.</p>\n @if (config.allowEdit) {\n <button type=\"button\"\n (click)=\"addNewTemplateContent()\"\n class=\"btn btn-primary\">\n <i class=\"fa-solid fa-plus\"></i> Create First Content Version\n </button>\n }\n </div>\n }\n </div>\n}\n", styles: [".template-editor {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n.section-header h6 {\n font-size: 0.9em;\n}\n\n.param-row:hover {\n background-color: var(--mj-bg-surface-card) !important;\n}\n\n.content-item {\n transition: box-shadow 0.2s ease;\n}\n\n.content-item:hover {\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n}\n\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.badge {\n display: inline-block;\n font-size: 0.7em;\n line-height: 1;\n}\n\n/* Kendo UI overrides for better integration */\n.template-editor kendo-textbox,\n.template-editor kendo-textarea,\n.template-editor kendo-dropdownlist {\n width: 100%;\n}\n\n.template-editor kendo-button {\n min-width: auto;\n}\n\n/* Content version tabs */\n.content-versions-tabs {\n margin-bottom: 16px;\n border-bottom: 2px solid var(--mj-border-default);\n padding-bottom: 8px;\n}\n\n.content-tabs {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.content-version-tab {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n cursor: pointer;\n background: var(--mj-bg-surface);\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n position: relative;\n}\n\n.content-version-tab.active {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.content-version-tab .tab-label {\n font-weight: 600;\n font-size: 0.85em;\n color: var(--mj-text-secondary);\n}\n\n.content-version-tab .tab-meta {\n font-size: 0.7em;\n color: var(--mj-text-muted);\n}\n\n.content-version-tab .tab-meta .inactive-label {\n color: var(--mj-status-error);\n}\n\n.content-version-tab .delete-btn {\n background: none;\n border: none;\n color: var(--mj-status-error);\n padding: 4px;\n border-radius: 3px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.content-version-tab .delete-btn:hover {\n background-color: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n/* New content tab (adding state) */\n.content-version-tab.adding-new {\n border-color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.content-version-tab.adding-new .new-label {\n font-weight: 600;\n color: var(--mj-status-success);\n font-size: 0.85em;\n}\n\n/* Add new content button */\n.content-version-tab.add-new {\n border: 1px dashed var(--mj-status-success);\n background: var(--mj-bg-surface-card);\n}\n\n.content-version-tab.add-new:hover {\n background: color-mix(in srgb, var(--mj-status-success) 8%, var(--mj-bg-surface));\n border-style: solid;\n}\n\n.content-version-tab.add-new i {\n color: var(--mj-status-success);\n font-size: 0.75em;\n}\n\n.content-version-tab.add-new span {\n font-weight: 500;\n color: var(--mj-status-success);\n font-size: 0.85em;\n}\n\n/* Content editor container */\n.content-editor-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n/* Content metadata bar */\n.content-metadata-bar {\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 16px 20px;\n}\n\n.metadata-grid {\n display: grid;\n grid-template-columns: 2fr 1fr 1fr auto;\n gap: 20px;\n align-items: end;\n}\n\n.form-group {\n margin: 0;\n}\n\n.form-label {\n margin-bottom: 4px;\n font-size: 0.9em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-control-plaintext {\n font-size: 0.9em;\n padding: 4px 0;\n}\n\n.form-check {\n margin-top: 8px;\n}\n\n.form-check-label {\n font-size: 0.9em;\n}\n\n.badge-success {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 3px 8px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.badge-secondary {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n border: 1px solid color-mix(in srgb, var(--mj-text-muted) 30%, transparent);\n padding: 3px 8px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n/* Content text editor area */\n.content-text-editor {\n flex: 1;\n padding: 20px;\n display: flex;\n flex-direction: column;\n}\n\n.editor-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.editor-label {\n margin: 0;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.content-type-badge {\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 0.75em;\n color: var(--mj-text-inverse);\n}\n\n.content-type-badge.new {\n background: var(--mj-status-success);\n}\n\n.content-type-badge.existing {\n background: var(--mj-text-muted);\n}\n\n.editor-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.unsaved-indicator {\n color: var(--mj-status-warning);\n font-size: 0.85em;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.unsaved-indicator i {\n font-size: 0.5em;\n}\n\n.run-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 6px 12px;\n border-radius: 4px;\n font-size: 0.85em;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.run-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n/* Code editor border */\n.code-editor-wrapper {\n flex: 1;\n height: 350px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 4px;\n}\n\n/* Help section tabs */\n.template-help-section {\n margin-top: 16px;\n}\n\n.help-tabs {\n display: flex;\n border-bottom: 2px solid var(--mj-border-default);\n margin-bottom: 0;\n}\n\n.help-tab {\n padding: 8px 16px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 0.9em;\n font-weight: 600;\n color: var(--mj-text-muted);\n border-bottom: 3px solid transparent;\n transition: all 0.2s;\n}\n\n.help-tab.active {\n color: var(--mj-status-success);\n border-bottom-color: var(--mj-status-success);\n}\n\n/* Help content area */\n.help-content {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-top: none;\n border-radius: 0 0 4px 4px;\n}\n\n/* Syntax help */\n.syntax-help {\n font-size: 0.85em;\n}\n\n.syntax-help .section-title {\n font-weight: 600;\n margin-bottom: 12px;\n color: var(--mj-status-success);\n}\n\n.syntax-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n\n.syntax-item {\n margin-bottom: 8px;\n}\n\n.syntax-help code {\n background: var(--mj-bg-surface);\n padding: 4px 6px;\n border-radius: 3px;\n display: inline-block;\n margin-top: 4px;\n color: var(--mj-text-primary);\n}\n\n/* Placeholders help */\n.placeholders-help {\n font-size: 0.85em;\n}\n\n.placeholders-help .section-title {\n font-weight: 600;\n margin-bottom: 12px;\n color: var(--mj-status-success);\n}\n\n.placeholders-description {\n margin-bottom: 16px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n/* Category tabs */\n.category-tabs {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.category-tab {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 20px;\n cursor: pointer;\n font-size: 0.85em;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n color: var(--mj-text-muted);\n}\n\n.category-tab.active {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.category-tab .tab-badge {\n background: color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n color: inherit;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n margin-left: 4px;\n}\n\n/* Placeholder content area */\n.placeholder-content {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n}\n\n.category-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.category-header i {\n font-size: 1.2em;\n}\n\n.category-header h5 {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.placeholder-grid {\n display: grid;\n gap: 10px;\n}\n\n/* Placeholder item */\n.placeholder-item {\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n position: relative;\n transition: all 0.2s;\n max-width: 800px;\n}\n\n.placeholder-item:hover {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.placeholder-item:hover .copy-btn {\n opacity: 1 !important;\n}\n\n.placeholder-item-inner {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.placeholder-name-row {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.placeholder-code {\n color: var(--mj-status-error);\n font-weight: 600;\n font-size: 0.95em;\n}\n\n.copy-btn {\n opacity: 0;\n transition: opacity 0.2s;\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-brand-primary);\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n}\n\n.copy-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.copy-btn i {\n font-size: 0.85em;\n}\n\n.placeholder-description {\n color: var(--mj-text-muted);\n margin-top: 4px;\n line-height: 1.4;\n}\n\n/* Usage example box */\n.usage-example {\n margin-top: 20px;\n padding: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 6px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.usage-example-inner {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.usage-example i {\n color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.usage-example-text {\n flex: 1;\n font-size: 0.85em;\n color: var(--mj-brand-primary);\n line-height: 1.5;\n}\n\n.usage-example code {\n background: var(--mj-bg-surface);\n padding: 2px 4px;\n border-radius: 3px;\n}\n\n/* No content state */\n.no-content-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n border-radius: 8px;\n padding: 40px;\n text-align: center;\n}\n\n.no-content-state i {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-text-muted);\n opacity: 0.6;\n}\n\n.no-content-state h5 {\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.no-content-state p {\n color: var(--mj-text-muted);\n margin-bottom: 20px;\n}\n"] }]
|
|
900
896
|
}], () => [{ type: i1.MJNotificationService }], { template: [{
|
|
901
897
|
type: Input
|
|
902
898
|
}], config: [{
|