@memberjunction/ng-skip-chat 2.14.0 → 2.15.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/dynamic-report/base-report.d.ts +12 -6
- package/dist/lib/dynamic-report/base-report.d.ts.map +1 -1
- package/dist/lib/dynamic-report/base-report.js +18 -7
- package/dist/lib/dynamic-report/base-report.js.map +1 -1
- package/dist/lib/dynamic-report/dynamic-chart.d.ts.map +1 -1
- package/dist/lib/dynamic-report/dynamic-chart.js +1 -1
- package/dist/lib/dynamic-report/dynamic-chart.js.map +1 -1
- package/dist/lib/dynamic-report/linear-report.d.ts +2 -7
- package/dist/lib/dynamic-report/linear-report.d.ts.map +1 -1
- package/dist/lib/dynamic-report/linear-report.js +27 -22
- package/dist/lib/dynamic-report/linear-report.js.map +1 -1
- package/dist/lib/dynamic-report/skip-dynamic-report-wrapper.d.ts +9 -1
- package/dist/lib/dynamic-report/skip-dynamic-report-wrapper.d.ts.map +1 -1
- package/dist/lib/dynamic-report/skip-dynamic-report-wrapper.js +21 -7
- package/dist/lib/dynamic-report/skip-dynamic-report-wrapper.js.map +1 -1
- package/dist/lib/module.d.ts.map +1 -1
- package/dist/lib/module.js +1 -1
- package/dist/lib/module.js.map +1 -1
- package/dist/lib/skip-chat/skip-chat.component.d.ts +29 -5
- package/dist/lib/skip-chat/skip-chat.component.d.ts.map +1 -1
- package/dist/lib/skip-chat/skip-chat.component.js +211 -124
- package/dist/lib/skip-chat/skip-chat.component.js.map +1 -1
- package/dist/lib/skip-single-message/skip-single-message.component.d.ts +21 -6
- package/dist/lib/skip-single-message/skip-single-message.component.d.ts.map +1 -1
- package/dist/lib/skip-single-message/skip-single-message.component.js +96 -40
- package/dist/lib/skip-single-message/skip-single-message.component.js.map +1 -1
- package/package.json +10 -10
|
@@ -14,7 +14,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
14
14
|
});
|
|
15
15
|
};
|
|
16
16
|
var SkipChatComponent_1;
|
|
17
|
-
import { Component, ViewChild, ViewContainerRef, Input, } from '@angular/core';
|
|
17
|
+
import { Component, ViewChild, ViewContainerRef, Input, Output, EventEmitter, } from '@angular/core';
|
|
18
18
|
import { ActivationEnd } from '@angular/router';
|
|
19
19
|
import { LogError, Metadata, CompositeKey } from '@memberjunction/core';
|
|
20
20
|
import { Container } from '@memberjunction/ng-container-directives';
|
|
@@ -30,7 +30,7 @@ import * as i2 from "@angular/router";
|
|
|
30
30
|
import * as i3 from "@angular/common";
|
|
31
31
|
import * as i4 from "@progress/kendo-angular-layout";
|
|
32
32
|
import * as i5 from "@angular/forms";
|
|
33
|
-
import * as i6 from "@progress/kendo-angular-
|
|
33
|
+
import * as i6 from "@progress/kendo-angular-dialog";
|
|
34
34
|
import * as i7 from "@memberjunction/ng-container-directives";
|
|
35
35
|
import * as i8 from "@progress/kendo-angular-listview";
|
|
36
36
|
import * as i9 from "@progress/kendo-angular-buttons";
|
|
@@ -44,13 +44,13 @@ const _c5 = ["topLevelDiv"];
|
|
|
44
44
|
const _c6 = () => ({ "item-border": true });
|
|
45
45
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_button_3_Template(rf, ctx) { if (rf & 1) {
|
|
46
46
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
47
|
-
i0.ɵɵelementStart(0, "button",
|
|
47
|
+
i0.ɵɵelementStart(0, "button", 29);
|
|
48
48
|
i0.ɵɵlistener("click", function SkipChatComponent_kendo_splitter_pane_3_div_1_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CreateNewConversation()); });
|
|
49
49
|
i0.ɵɵtext(1, "+");
|
|
50
50
|
i0.ɵɵelementEnd();
|
|
51
51
|
} }
|
|
52
52
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
-
i0.ɵɵelement(0, "span",
|
|
53
|
+
i0.ɵɵelement(0, "span", 35);
|
|
54
54
|
} }
|
|
55
55
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
56
56
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -63,7 +63,7 @@ function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_span_3_Temp
|
|
|
63
63
|
} }
|
|
64
64
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_textarea_4_Template(rf, ctx) { if (rf & 1) {
|
|
65
65
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
66
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
66
|
+
i0.ɵɵelementStart(0, "textarea", 36);
|
|
67
67
|
i0.ɵɵtwoWayListener("ngModelChange", function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_textarea_4_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const dataItem_r6 = i0.ɵɵnextContext().dataItem; i0.ɵɵtwoWayBindingSet(dataItem_r6.Name, $event) || (dataItem_r6.Name = $event); return i0.ɵɵresetView($event); });
|
|
68
68
|
i0.ɵɵelementEnd();
|
|
69
69
|
} if (rf & 2) {
|
|
@@ -72,31 +72,31 @@ function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_textarea_4_
|
|
|
72
72
|
} }
|
|
73
73
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
74
74
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
75
|
-
i0.ɵɵelementStart(0, "span",
|
|
75
|
+
i0.ɵɵelementStart(0, "span", 42);
|
|
76
76
|
i0.ɵɵlistener("click", function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_1_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r8); const dataItem_r6 = i0.ɵɵnextContext(2).dataItem; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editConvo(dataItem_r6)); });
|
|
77
77
|
i0.ɵɵelementEnd();
|
|
78
78
|
} }
|
|
79
79
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
80
80
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
81
|
-
i0.ɵɵelementStart(0, "span",
|
|
82
|
-
i0.ɵɵlistener("click", function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_2_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r9); const dataItem_r6 = i0.ɵɵnextContext(2).dataItem; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.
|
|
81
|
+
i0.ɵɵelementStart(0, "span", 43);
|
|
82
|
+
i0.ɵɵlistener("click", function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_2_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r9); const dataItem_r6 = i0.ɵɵnextContext(2).dataItem; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.showDeleteConvoDialog(dataItem_r6)); });
|
|
83
83
|
i0.ɵɵelementEnd();
|
|
84
84
|
} }
|
|
85
85
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
86
86
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
87
|
-
i0.ɵɵelementStart(0, "span",
|
|
87
|
+
i0.ɵɵelementStart(0, "span", 44);
|
|
88
88
|
i0.ɵɵlistener("click", function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_3_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r10); const dataItem_r6 = i0.ɵɵnextContext(2).dataItem; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.saveConvoName(dataItem_r6)); });
|
|
89
89
|
i0.ɵɵelementEnd();
|
|
90
90
|
} }
|
|
91
91
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
92
92
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
93
|
-
i0.ɵɵelementStart(0, "span",
|
|
93
|
+
i0.ɵɵelementStart(0, "span", 45);
|
|
94
94
|
i0.ɵɵlistener("click", function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_4_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r11); const dataItem_r6 = i0.ɵɵnextContext(2).dataItem; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.cancelConvoEdit(dataItem_r6)); });
|
|
95
95
|
i0.ɵɵelementEnd();
|
|
96
96
|
} }
|
|
97
97
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
-
i0.ɵɵelementStart(0, "div",
|
|
99
|
-
i0.ɵɵtemplate(1, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_1_Template, 1, 0, "span",
|
|
98
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
99
|
+
i0.ɵɵtemplate(1, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_1_Template, 1, 0, "span", 38)(2, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_2_Template, 1, 0, "span", 39)(3, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_3_Template, 1, 0, "span", 40)(4, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_span_4_Template, 1, 0, "span", 41);
|
|
100
100
|
i0.ɵɵelementEnd();
|
|
101
101
|
} if (rf & 2) {
|
|
102
102
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -111,13 +111,13 @@ function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_Templ
|
|
|
111
111
|
} }
|
|
112
112
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_Template(rf, ctx) { if (rf & 1) {
|
|
113
113
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
114
|
-
i0.ɵɵelementStart(0, "div",
|
|
114
|
+
i0.ɵɵelementStart(0, "div", 30);
|
|
115
115
|
i0.ɵɵlistener("click", function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_Template_div_click_0_listener() { const dataItem_r6 = i0.ɵɵrestoreView(_r5).dataItem; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SelectConversation(dataItem_r6)); });
|
|
116
|
-
i0.ɵɵtemplate(1, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_span_1_Template, 1, 0, "span",
|
|
117
|
-
i0.ɵɵelementStart(2, "div",
|
|
118
|
-
i0.ɵɵtemplate(3, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_span_3_Template, 2, 1, "span", 19)(4, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_textarea_4_Template, 1, 1, "textarea",
|
|
116
|
+
i0.ɵɵtemplate(1, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_span_1_Template, 1, 0, "span", 31);
|
|
117
|
+
i0.ɵɵelementStart(2, "div", 32);
|
|
118
|
+
i0.ɵɵtemplate(3, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_span_3_Template, 2, 1, "span", 19)(4, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_textarea_4_Template, 1, 1, "textarea", 33);
|
|
119
119
|
i0.ɵɵelementEnd();
|
|
120
|
-
i0.ɵɵtemplate(5, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_Template, 5, 4, "div",
|
|
120
|
+
i0.ɵɵtemplate(5, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_div_5_Template, 5, 4, "div", 34);
|
|
121
121
|
i0.ɵɵelementEnd();
|
|
122
122
|
} if (rf & 2) {
|
|
123
123
|
const dataItem_r6 = ctx.dataItem;
|
|
@@ -133,26 +133,28 @@ function SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_Template(rf
|
|
|
133
133
|
i0.ɵɵproperty("ngIf", (ctx_r2.SelectedConversation == null ? null : ctx_r2.SelectedConversation.ID) === dataItem_r6.ID);
|
|
134
134
|
} }
|
|
135
135
|
function SkipChatComponent_kendo_splitter_pane_3_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
-
i0.ɵɵelementStart(0, "div",
|
|
137
|
-
i0.ɵɵelement(2, "img",
|
|
138
|
-
i0.ɵɵtemplate(3, SkipChatComponent_kendo_splitter_pane_3_div_1_button_3_Template, 2, 0, "button",
|
|
136
|
+
i0.ɵɵelementStart(0, "div", 23)(1, "div", 24);
|
|
137
|
+
i0.ɵɵelement(2, "img", 25);
|
|
138
|
+
i0.ɵɵtemplate(3, SkipChatComponent_kendo_splitter_pane_3_div_1_button_3_Template, 2, 0, "button", 26);
|
|
139
139
|
i0.ɵɵelementEnd();
|
|
140
|
-
i0.ɵɵelementStart(4, "kendo-listview",
|
|
141
|
-
i0.ɵɵtemplate(6, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_Template, 6, 6, "ng-template",
|
|
140
|
+
i0.ɵɵelementStart(4, "kendo-listview", 27, 3);
|
|
141
|
+
i0.ɵɵtemplate(6, SkipChatComponent_kendo_splitter_pane_3_div_1_ng_template_6_Template, 6, 6, "ng-template", 28);
|
|
142
142
|
i0.ɵɵelementEnd()();
|
|
143
143
|
} if (rf & 2) {
|
|
144
144
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
145
|
-
i0.ɵɵadvance(
|
|
145
|
+
i0.ɵɵadvance(2);
|
|
146
|
+
i0.ɵɵproperty("src", ctx_r2.SkipLogoURL, i0.ɵɵsanitizeUrl);
|
|
147
|
+
i0.ɵɵadvance();
|
|
146
148
|
i0.ɵɵproperty("ngIf", ctx_r2.AllowNewConversations);
|
|
147
149
|
i0.ɵɵadvance();
|
|
148
150
|
i0.ɵɵstyleProp("height", 280, "px");
|
|
149
|
-
i0.ɵɵproperty("data", ctx_r2.Conversations)("itemClass", i0.ɵɵpureFunction0(
|
|
151
|
+
i0.ɵɵproperty("data", ctx_r2.Conversations)("itemClass", i0.ɵɵpureFunction0(8, _c6))("fillWidth", false)("bottomMargin", 20);
|
|
150
152
|
} }
|
|
151
153
|
function SkipChatComponent_kendo_splitter_pane_3_Template(rf, ctx) { if (rf & 1) {
|
|
152
154
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
153
|
-
i0.ɵɵelementStart(0, "kendo-splitter-pane",
|
|
155
|
+
i0.ɵɵelementStart(0, "kendo-splitter-pane", 21);
|
|
154
156
|
i0.ɵɵlistener("collapsedChange", function SkipChatComponent_kendo_splitter_pane_3_Template_kendo_splitter_pane_collapsedChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.splitterCollapseStateChanged($event)); });
|
|
155
|
-
i0.ɵɵtemplate(1, SkipChatComponent_kendo_splitter_pane_3_div_1_Template, 7,
|
|
157
|
+
i0.ɵɵtemplate(1, SkipChatComponent_kendo_splitter_pane_3_div_1_Template, 7, 9, "div", 22);
|
|
156
158
|
i0.ɵɵelementEnd();
|
|
157
159
|
} if (rf & 2) {
|
|
158
160
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -161,44 +163,42 @@ function SkipChatComponent_kendo_splitter_pane_3_Template(rf, ctx) { if (rf & 1)
|
|
|
161
163
|
i0.ɵɵproperty("ngIf", ctx_r2.ShowConversationList);
|
|
162
164
|
} }
|
|
163
165
|
function SkipChatComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
164
|
-
i0.ɵɵ
|
|
165
|
-
i0.ɵɵelement(1, "kendo-loader");
|
|
166
|
-
i0.ɵɵelementEnd();
|
|
166
|
+
i0.ɵɵelement(0, "div", 46);
|
|
167
167
|
} }
|
|
168
168
|
function SkipChatComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
169
169
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
170
|
-
i0.ɵɵelementStart(0, "div",
|
|
171
|
-
i0.ɵɵelement(2, "img",
|
|
172
|
-
i0.ɵɵelementStart(3, "div",
|
|
170
|
+
i0.ɵɵelementStart(0, "div", 47)(1, "div", 48);
|
|
171
|
+
i0.ɵɵelement(2, "img", 49);
|
|
172
|
+
i0.ɵɵelementStart(3, "div", 50);
|
|
173
173
|
i0.ɵɵtext(4, "What can I help with today?");
|
|
174
174
|
i0.ɵɵelementEnd()();
|
|
175
|
-
i0.ɵɵelementStart(5, "div",
|
|
175
|
+
i0.ɵɵelementStart(5, "div", 51)(6, "div", 52)(7, "div", 53);
|
|
176
176
|
i0.ɵɵlistener("click", function SkipChatComponent_div_10_Template_div_click_7_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.sendPrompt(ctx_r2.WelcomeQuestions[0].prompt)); });
|
|
177
|
-
i0.ɵɵelementStart(8, "span",
|
|
177
|
+
i0.ɵɵelementStart(8, "span", 54);
|
|
178
178
|
i0.ɵɵtext(9);
|
|
179
179
|
i0.ɵɵelementEnd();
|
|
180
180
|
i0.ɵɵelementStart(10, "span");
|
|
181
181
|
i0.ɵɵtext(11);
|
|
182
182
|
i0.ɵɵelementEnd()();
|
|
183
|
-
i0.ɵɵelementStart(12, "div",
|
|
183
|
+
i0.ɵɵelementStart(12, "div", 53);
|
|
184
184
|
i0.ɵɵlistener("click", function SkipChatComponent_div_10_Template_div_click_12_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.sendPrompt(ctx_r2.WelcomeQuestions[1].prompt)); });
|
|
185
|
-
i0.ɵɵelementStart(13, "span",
|
|
185
|
+
i0.ɵɵelementStart(13, "span", 54);
|
|
186
186
|
i0.ɵɵtext(14);
|
|
187
187
|
i0.ɵɵelementEnd();
|
|
188
188
|
i0.ɵɵelementStart(15, "span");
|
|
189
189
|
i0.ɵɵtext(16);
|
|
190
190
|
i0.ɵɵelementEnd()()();
|
|
191
|
-
i0.ɵɵelementStart(17, "div",
|
|
191
|
+
i0.ɵɵelementStart(17, "div", 52)(18, "div", 53);
|
|
192
192
|
i0.ɵɵlistener("click", function SkipChatComponent_div_10_Template_div_click_18_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.sendPrompt(ctx_r2.WelcomeQuestions[2].prompt)); });
|
|
193
|
-
i0.ɵɵelementStart(19, "span",
|
|
193
|
+
i0.ɵɵelementStart(19, "span", 54);
|
|
194
194
|
i0.ɵɵtext(20);
|
|
195
195
|
i0.ɵɵelementEnd();
|
|
196
196
|
i0.ɵɵelementStart(21, "span");
|
|
197
197
|
i0.ɵɵtext(22);
|
|
198
198
|
i0.ɵɵelementEnd()();
|
|
199
|
-
i0.ɵɵelementStart(23, "div",
|
|
199
|
+
i0.ɵɵelementStart(23, "div", 53);
|
|
200
200
|
i0.ɵɵlistener("click", function SkipChatComponent_div_10_Template_div_click_23_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.sendPrompt(ctx_r2.WelcomeQuestions[3].prompt)); });
|
|
201
|
-
i0.ɵɵelementStart(24, "span",
|
|
201
|
+
i0.ɵɵelementStart(24, "span", 54);
|
|
202
202
|
i0.ɵɵtext(25);
|
|
203
203
|
i0.ɵɵelementEnd();
|
|
204
204
|
i0.ɵɵelementStart(26, "span");
|
|
@@ -206,7 +206,9 @@ function SkipChatComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
206
206
|
i0.ɵɵelementEnd()()()()();
|
|
207
207
|
} if (rf & 2) {
|
|
208
208
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
209
|
-
i0.ɵɵadvance(
|
|
209
|
+
i0.ɵɵadvance(2);
|
|
210
|
+
i0.ɵɵproperty("src", ctx_r2.SkipLogoURL, i0.ɵɵsanitizeUrl);
|
|
211
|
+
i0.ɵɵadvance(7);
|
|
210
212
|
i0.ɵɵtextInterpolate(ctx_r2.WelcomeQuestions[0].topLine);
|
|
211
213
|
i0.ɵɵadvance(2);
|
|
212
214
|
i0.ɵɵtextInterpolate(ctx_r2.WelcomeQuestions[0].bottomLine);
|
|
@@ -225,26 +227,47 @@ function SkipChatComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
225
227
|
} }
|
|
226
228
|
function SkipChatComponent_span_12_Template(rf, ctx) { if (rf & 1) {
|
|
227
229
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
228
|
-
i0.ɵɵelementStart(0, "span",
|
|
230
|
+
i0.ɵɵelementStart(0, "span", 55);
|
|
229
231
|
i0.ɵɵlistener("click", function SkipChatComponent_span_12_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToBottomAnimate()); });
|
|
230
|
-
i0.ɵɵelement(1, "i",
|
|
232
|
+
i0.ɵɵelement(1, "i", 56);
|
|
231
233
|
i0.ɵɵelementEnd();
|
|
232
234
|
} }
|
|
233
235
|
function SkipChatComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
234
236
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
235
|
-
i0.ɵɵelementStart(0, "button", 16)(1, "span",
|
|
237
|
+
i0.ɵɵelementStart(0, "button", 16)(1, "span", 57);
|
|
236
238
|
i0.ɵɵlistener("click", function SkipChatComponent_Conditional_17_Template_span_click_1_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showDataContext()); });
|
|
237
239
|
i0.ɵɵelementEnd()();
|
|
238
240
|
} }
|
|
239
241
|
function SkipChatComponent_div_20_Template(rf, ctx) { if (rf & 1) {
|
|
240
242
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
241
|
-
i0.ɵɵelementStart(0, "div")(1, "mj-data-context-dialog",
|
|
243
|
+
i0.ɵɵelementStart(0, "div")(1, "mj-data-context-dialog", 58);
|
|
242
244
|
i0.ɵɵlistener("dialogClosed", function SkipChatComponent_div_20_Template_mj_data_context_dialog_dialogClosed_1_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDataContextDialog()); });
|
|
243
245
|
i0.ɵɵelementEnd()();
|
|
244
246
|
} if (rf & 2) {
|
|
245
247
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
246
248
|
i0.ɵɵadvance();
|
|
247
|
-
i0.ɵɵproperty("dataContextId", ctx_r2.DataContextID);
|
|
249
|
+
i0.ɵɵproperty("dataContextId", ctx_r2.DataContextID)("Provider", ctx_r2.ProviderToUse);
|
|
250
|
+
} }
|
|
251
|
+
function SkipChatComponent_kendo_dialog_21_Template(rf, ctx) { if (rf & 1) {
|
|
252
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
253
|
+
i0.ɵɵelementStart(0, "kendo-dialog", 59);
|
|
254
|
+
i0.ɵɵlistener("close", function SkipChatComponent_kendo_dialog_21_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDeleteConversation("no")); });
|
|
255
|
+
i0.ɵɵelementStart(1, "p", 60);
|
|
256
|
+
i0.ɵɵtext(2);
|
|
257
|
+
i0.ɵɵelementEnd();
|
|
258
|
+
i0.ɵɵelementStart(3, "kendo-dialog-actions")(4, "button", 61);
|
|
259
|
+
i0.ɵɵlistener("click", function SkipChatComponent_kendo_dialog_21_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDeleteConversation("yes")); });
|
|
260
|
+
i0.ɵɵtext(5, " Yes ");
|
|
261
|
+
i0.ɵɵelementEnd();
|
|
262
|
+
i0.ɵɵelementStart(6, "button", 29);
|
|
263
|
+
i0.ɵɵlistener("click", function SkipChatComponent_kendo_dialog_21_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDeleteConversation("no")); });
|
|
264
|
+
i0.ɵɵtext(7, " No ");
|
|
265
|
+
i0.ɵɵelementEnd()()();
|
|
266
|
+
} if (rf & 2) {
|
|
267
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
268
|
+
i0.ɵɵproperty("minWidth", 250)("width", 450);
|
|
269
|
+
i0.ɵɵadvance(2);
|
|
270
|
+
i0.ɵɵtextInterpolate1(" Would you like to delete ", ctx_r2.SelectedConversation == null ? null : ctx_r2.SelectedConversation.Name, "? ");
|
|
248
271
|
} }
|
|
249
272
|
let SkipChatComponent = SkipChatComponent_1 = class SkipChatComponent extends BaseNavigationComponent {
|
|
250
273
|
constructor(el, sharedService, renderer, route, router, location, cdRef) {
|
|
@@ -268,13 +291,26 @@ let SkipChatComponent = SkipChatComponent_1 = class SkipChatComponent extends Ba
|
|
|
268
291
|
this.LinkedEntityCompositeKey = new CompositeKey();
|
|
269
292
|
this.ShowDataContextButton = true;
|
|
270
293
|
this.IncludeLinkedConversationsInList = false;
|
|
294
|
+
this.SkipLogoURL = "assets/Skip Full Logo - Transparent.png";
|
|
295
|
+
this.SkipMarkOnlyLogoURL = "assets/Skip - Mark Only - Small.png";
|
|
296
|
+
/**
|
|
297
|
+
* Set this property in order to set the user image. This can either be a URL or a Blob
|
|
298
|
+
*/
|
|
299
|
+
this.UserImage = undefined;
|
|
271
300
|
/**
|
|
272
301
|
* If true, the component will update the browser URL when the conversation changes. If false, it will not update the URL. Default is true.
|
|
273
302
|
*/
|
|
274
303
|
this.UpdateAppRoute = true;
|
|
304
|
+
/**
|
|
305
|
+
* Event emitted when the user clicks on a matching report and the application needs to handle the navigation
|
|
306
|
+
*/
|
|
307
|
+
this.NavigateToMatchingReport = new EventEmitter();
|
|
308
|
+
/**
|
|
309
|
+
* Event emitted whenever a conversation is selected
|
|
310
|
+
*/
|
|
311
|
+
this.ConversationSelected = new EventEmitter();
|
|
275
312
|
this._showScrollToBottomIcon = false;
|
|
276
313
|
this._messageInProgress = false;
|
|
277
|
-
this.refreshOnAttach = false;
|
|
278
314
|
this._conversationsInProgress = {};
|
|
279
315
|
this._conversationsToReload = {};
|
|
280
316
|
this._conversationLoadComplete = false;
|
|
@@ -303,9 +339,16 @@ let SkipChatComponent = SkipChatComponent_1 = class SkipChatComponent extends Ba
|
|
|
303
339
|
prompt: 'I need help with marketing, can you help me analyze my data and then think about ways to segment my audience and build campaigns to improve revenue and retention?',
|
|
304
340
|
},
|
|
305
341
|
];
|
|
306
|
-
this.
|
|
342
|
+
this._initialLoadComplete = false;
|
|
343
|
+
this._isLoading = false;
|
|
344
|
+
this._numLoads = 0;
|
|
345
|
+
/**
|
|
346
|
+
* This property is used to determine if the component should automatically load the data when it is first shown. Default is true. Turn this off if you want to have more control over the loading sequence and manually call the Load() method when ready.
|
|
347
|
+
*/
|
|
348
|
+
this.AutoLoad = true;
|
|
307
349
|
this._scrollToBottom = false;
|
|
308
350
|
this._oldConvoName = '';
|
|
351
|
+
this.confirmDeleteConversationDialogOpen = false;
|
|
309
352
|
this._usedStartMessages = [];
|
|
310
353
|
this._processingStatus = {};
|
|
311
354
|
this.isDataContextDialogVisible = false;
|
|
@@ -452,54 +495,64 @@ let SkipChatComponent = SkipChatComponent_1 = class SkipChatComponent extends Ba
|
|
|
452
495
|
}
|
|
453
496
|
}
|
|
454
497
|
ngAfterViewInit() {
|
|
455
|
-
this
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
498
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
499
|
+
if (this.AutoLoad)
|
|
500
|
+
yield this.Load();
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
Load() {
|
|
504
|
+
return __awaiter(this, arguments, void 0, function* (forceRefresh = false) {
|
|
505
|
+
if (!this._initialLoadComplete || forceRefresh) {
|
|
506
|
+
this.updateParentTabPanelStyling();
|
|
507
|
+
// create an intersection observer to see if we are visible
|
|
508
|
+
this._intersectionObserver = new IntersectionObserver((entries) => __awaiter(this, void 0, void 0, function* () {
|
|
509
|
+
const [entry] = entries;
|
|
510
|
+
if (!entry.isIntersecting) {
|
|
511
|
+
// we are NOT visible, so decrement the count of visible instances, but only if we were ever visible, meaning sometimes we get this situation before we are ever shown
|
|
512
|
+
if (this._initialLoadComplete) {
|
|
513
|
+
// don't go below 0
|
|
514
|
+
SkipChatComponent_1.__skipChatWindowsCurrentlyVisible = Math.max(0, SkipChatComponent_1.__skipChatWindowsCurrentlyVisible - 1);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
// we are now visible, increment the count of visible instances
|
|
519
|
+
SkipChatComponent_1.__skipChatWindowsCurrentlyVisible++;
|
|
520
|
+
if (!this._initialLoadComplete) {
|
|
521
|
+
// we are now visible, for the first time, first fire off an InvokeManualResize to ensure the parent container is resized properly
|
|
522
|
+
this.sharedService.InvokeManualResize();
|
|
523
|
+
// first do stuff if we're on "global" skip chat mode...
|
|
524
|
+
if (this.ShowConversationList && !this.LinkedEntity && this.LinkedEntity.trim().length === 0 && !this.CompositeKeyIsPopulated()) {
|
|
525
|
+
// only subscribe to the route params if we don't have a linked entity and record id, meaning we're in the context of the top level Skip Chat UI, not embedded somewhere
|
|
526
|
+
this.paramsSubscription = this.route.params.subscribe((params) => __awaiter(this, void 0, void 0, function* () {
|
|
527
|
+
if (!this._initialLoadComplete) {
|
|
528
|
+
this._initialLoadComplete = true; // do this once
|
|
529
|
+
const conversationId = params.conversationId;
|
|
530
|
+
if (conversationId) {
|
|
531
|
+
yield this.loadConversations(conversationId); // Load the conversation based on the conversationId
|
|
532
|
+
}
|
|
533
|
+
else {
|
|
534
|
+
yield this.loadConversations();
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
}));
|
|
538
|
+
}
|
|
539
|
+
else if (this.LinkedEntity && this.CompositeKeyIsPopulated()) {
|
|
540
|
+
// now, do stuff if we are embedded in another component with a LinkedEntity/LinkedEntityRecordID
|
|
541
|
+
if (!this._initialLoadComplete) {
|
|
542
|
+
this._initialLoadComplete = true; // do this once
|
|
543
|
+
yield this.loadConversations(); // Load the conversation which will filter by the linked entity and record id
|
|
484
544
|
}
|
|
485
545
|
}
|
|
486
|
-
|
|
487
|
-
}
|
|
488
|
-
else if (this.LinkedEntity && this.CompositeKeyIsPopulated()) {
|
|
489
|
-
// now, do stuff if we are embedded in another component with a LinkedEntity/LinkedEntityRecordID
|
|
490
|
-
if (!this._loaded) {
|
|
491
|
-
this._loaded = true; // do this once
|
|
492
|
-
this.loadConversations(); // Load the conversation which will filter by the linked entity and record id
|
|
546
|
+
this.checkScroll();
|
|
493
547
|
}
|
|
548
|
+
// Only care about the first time we are visible, so unobserve here to save resources
|
|
549
|
+
//this._intersectionObserver!.unobserve(this.topLevelDiv.nativeElement);
|
|
494
550
|
}
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
//this._intersectionObserver!.unobserve(this.topLevelDiv.nativeElement);
|
|
551
|
+
}));
|
|
552
|
+
// now fire up the observer on the top level div
|
|
553
|
+
this._intersectionObserver.observe(this.topLevelDiv.nativeElement);
|
|
499
554
|
}
|
|
500
555
|
});
|
|
501
|
-
// now fire up the observer on the top level div
|
|
502
|
-
this._intersectionObserver.observe(this.topLevelDiv.nativeElement);
|
|
503
556
|
}
|
|
504
557
|
ngAfterViewChecked() {
|
|
505
558
|
if (this._scrollToBottom) {
|
|
@@ -518,6 +571,7 @@ let SkipChatComponent = SkipChatComponent_1 = class SkipChatComponent extends Ba
|
|
|
518
571
|
}
|
|
519
572
|
loadConversations() {
|
|
520
573
|
return __awaiter(this, arguments, void 0, function* (conversationIdToLoad = undefined) {
|
|
574
|
+
this._isLoading = true;
|
|
521
575
|
let cachedConversations = MJGlobal.Instance.ObjectCache.Find('Conversations');
|
|
522
576
|
if (!cachedConversations) {
|
|
523
577
|
// load up from the database as we don't have any cached conversations
|
|
@@ -549,24 +603,26 @@ let SkipChatComponent = SkipChatComponent_1 = class SkipChatComponent extends Ba
|
|
|
549
603
|
}
|
|
550
604
|
if (this.Conversations.length === 0) {
|
|
551
605
|
// no conversations, so create a new one
|
|
552
|
-
this.CreateNewConversation();
|
|
606
|
+
yield this.CreateNewConversation();
|
|
553
607
|
this.sharedService.InvokeManualResize(1);
|
|
554
608
|
}
|
|
555
609
|
else if (conversationIdToLoad) {
|
|
556
610
|
// we have > 0 convos and we were asked to load a specific one
|
|
557
611
|
const convo = this.Conversations.find((c) => c.ID == conversationIdToLoad);
|
|
558
612
|
if (convo) {
|
|
559
|
-
this.SelectConversation(convo);
|
|
613
|
+
yield this.SelectConversation(convo);
|
|
560
614
|
}
|
|
561
615
|
else {
|
|
562
616
|
// we didn't find the conversation so just select the first one
|
|
563
|
-
this.SelectConversation(this.Conversations[0]);
|
|
617
|
+
yield this.SelectConversation(this.Conversations[0]);
|
|
564
618
|
}
|
|
565
619
|
}
|
|
566
620
|
else {
|
|
567
621
|
// select the first conversation since no param was provided and we have > 0 convos
|
|
568
|
-
this.SelectConversation(this.Conversations[0]);
|
|
622
|
+
yield this.SelectConversation(this.Conversations[0]);
|
|
569
623
|
}
|
|
624
|
+
this._isLoading = false;
|
|
625
|
+
this._numLoads++;
|
|
570
626
|
});
|
|
571
627
|
}
|
|
572
628
|
editConvo(conversation) {
|
|
@@ -609,33 +665,44 @@ let SkipChatComponent = SkipChatComponent_1 = class SkipChatComponent extends Ba
|
|
|
609
665
|
this.sharedService.CreateSimpleNotification('Error saving conversation name', 'error', 5000);
|
|
610
666
|
});
|
|
611
667
|
}
|
|
668
|
+
showDeleteConvoDialog(conversation) {
|
|
669
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
670
|
+
this.confirmDeleteConversationDialogOpen = true;
|
|
671
|
+
this._conversationToDelete = conversation;
|
|
672
|
+
});
|
|
673
|
+
}
|
|
674
|
+
closeDeleteConversation(yesno) {
|
|
675
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
676
|
+
this.confirmDeleteConversationDialogOpen = false;
|
|
677
|
+
if (this._conversationToDelete && yesno === 'yes')
|
|
678
|
+
yield this.deleteConvo(this._conversationToDelete);
|
|
679
|
+
});
|
|
680
|
+
}
|
|
612
681
|
deleteConvo(conversation) {
|
|
613
682
|
return __awaiter(this, void 0, void 0, function* () {
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
MJGlobal.Instance.ObjectCache.Replace('Conversations', cachedConversations.filter((c) => c.ID != conversation.ID));
|
|
625
|
-
}
|
|
626
|
-
else {
|
|
627
|
-
MJGlobal.Instance.ObjectCache.Add('Conversations', this.Conversations);
|
|
628
|
-
}
|
|
629
|
-
if (this.Conversations.length > 0) {
|
|
630
|
-
const newIdx = idx > 0 ? idx - 1 : 0;
|
|
631
|
-
this.SelectConversation(this.Conversations[newIdx]);
|
|
632
|
-
}
|
|
633
|
-
else
|
|
634
|
-
this.Messages = [];
|
|
683
|
+
// delete the conversation - we might need to load the entity if the current object isn't a "real object"
|
|
684
|
+
if (yield this.DeleteConversation(conversation.ID)) {
|
|
685
|
+
// get the index of the conversation
|
|
686
|
+
const idx = this.Conversations.findIndex((c) => c.ID === conversation.ID);
|
|
687
|
+
// remove the conversation from the list that is bound to the UI
|
|
688
|
+
this.Conversations = this.Conversations.filter((c) => c.ID != conversation.ID);
|
|
689
|
+
// also, remove the conversation from the cache
|
|
690
|
+
const cachedConversations = MJGlobal.Instance.ObjectCache.Find('Conversations');
|
|
691
|
+
if (cachedConversations) {
|
|
692
|
+
MJGlobal.Instance.ObjectCache.Replace('Conversations', cachedConversations.filter((c) => c.ID != conversation.ID));
|
|
635
693
|
}
|
|
636
694
|
else {
|
|
637
|
-
|
|
695
|
+
MJGlobal.Instance.ObjectCache.Add('Conversations', this.Conversations);
|
|
696
|
+
}
|
|
697
|
+
if (this.Conversations.length > 0) {
|
|
698
|
+
const newIdx = idx > 0 ? idx - 1 : 0;
|
|
699
|
+
this.SelectConversation(this.Conversations[newIdx]);
|
|
638
700
|
}
|
|
701
|
+
else
|
|
702
|
+
this.Messages = [];
|
|
703
|
+
}
|
|
704
|
+
else {
|
|
705
|
+
this.sharedService.CreateSimpleNotification('Error deleting conversation', 'error', 5000);
|
|
639
706
|
}
|
|
640
707
|
});
|
|
641
708
|
}
|
|
@@ -772,8 +839,8 @@ let SkipChatComponent = SkipChatComponent_1 = class SkipChatComponent extends Ba
|
|
|
772
839
|
if (this.UpdateAppRoute) {
|
|
773
840
|
// finally update the browser URL since we've changed the conversation ID
|
|
774
841
|
this.location.go('/askskip/' + conversation.ID);
|
|
775
|
-
// this.router.navigate(['askskip', conversation.ID]);
|
|
776
842
|
}
|
|
843
|
+
this.ConversationSelected.emit(conversation.ID);
|
|
777
844
|
}
|
|
778
845
|
});
|
|
779
846
|
}
|
|
@@ -899,7 +966,7 @@ let SkipChatComponent = SkipChatComponent_1 = class SkipChatComponent extends Ba
|
|
|
899
966
|
this.cdRef.detectChanges();
|
|
900
967
|
// invoke manual resize with a delay to ensure that the scroll to bottom has taken place
|
|
901
968
|
//this.sharedService.InvokeManualResize();
|
|
902
|
-
this.SetSkipStatusMessage('',
|
|
969
|
+
this.SetSkipStatusMessage('', 500); // slight delay to ensure that the message is removed after the UI has updated with the new response message
|
|
903
970
|
// now set focus on the input box
|
|
904
971
|
this.askSkipInput.nativeElement.focus();
|
|
905
972
|
}
|
|
@@ -974,6 +1041,12 @@ let SkipChatComponent = SkipChatComponent_1 = class SkipChatComponent extends Ba
|
|
|
974
1041
|
const componentRef = this.askSkip.viewContainerRef.createComponent(SkipSingleMessageComponent);
|
|
975
1042
|
// Pass the message details to the component instance
|
|
976
1043
|
const obj = componentRef.instance;
|
|
1044
|
+
obj.NavigateToMatchingReport.subscribe((reportId) => {
|
|
1045
|
+
this.NavigateToMatchingReport.emit(reportId);
|
|
1046
|
+
});
|
|
1047
|
+
obj.Provider = this.ProviderToUse;
|
|
1048
|
+
obj.SkipMarkOnlyLogoURL = this.SkipMarkOnlyLogoURL;
|
|
1049
|
+
obj.UserImage = this.UserImage;
|
|
977
1050
|
obj.ConversationRecord = this.SelectedConversation;
|
|
978
1051
|
obj.ConversationDetailRecord = messageDetail;
|
|
979
1052
|
obj.DataContext = this.DataContext;
|
|
@@ -1214,13 +1287,13 @@ SkipChatComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SkipChatC
|
|
|
1214
1287
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.askSkipInput = _t.first);
|
|
1215
1288
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.scrollContainer = _t.first);
|
|
1216
1289
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.topLevelDiv = _t.first);
|
|
1217
|
-
} }, inputs: { AllowSend: "AllowSend", Messages: "Messages", Conversations: "Conversations", SelectedConversation: "SelectedConversation", ConversationEditMode: "ConversationEditMode", ShowConversationList: "ShowConversationList", AllowNewConversations: "AllowNewConversations", Title: "Title", DataContextID: "DataContextID", LinkedEntity: "LinkedEntity", LinkedEntityCompositeKey: "LinkedEntityCompositeKey", ShowDataContextButton: "ShowDataContextButton", IncludeLinkedConversationsInList: "IncludeLinkedConversationsInList", UpdateAppRoute: "UpdateAppRoute", Provider: "Provider", WelcomeQuestions: "WelcomeQuestions" }, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
1290
|
+
} }, inputs: { AllowSend: "AllowSend", Messages: "Messages", Conversations: "Conversations", SelectedConversation: "SelectedConversation", ConversationEditMode: "ConversationEditMode", ShowConversationList: "ShowConversationList", AllowNewConversations: "AllowNewConversations", Title: "Title", DataContextID: "DataContextID", LinkedEntity: "LinkedEntity", LinkedEntityCompositeKey: "LinkedEntityCompositeKey", ShowDataContextButton: "ShowDataContextButton", IncludeLinkedConversationsInList: "IncludeLinkedConversationsInList", SkipLogoURL: "SkipLogoURL", SkipMarkOnlyLogoURL: "SkipMarkOnlyLogoURL", UserImage: "UserImage", UpdateAppRoute: "UpdateAppRoute", Provider: "Provider", WelcomeQuestions: "WelcomeQuestions", AutoLoad: "AutoLoad" }, outputs: { NavigateToMatchingReport: "NavigateToMatchingReport", ConversationSelected: "ConversationSelected" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 22, vars: 11, consts: [["topLevelDiv", ""], ["AskSkipPanel", "", "scrollContainer", ""], ["AskSkipInput", ""], ["conversationList", ""], ["mjFillContainer", "", 1, "chat-container", 3, "bottomMargin", "rightMargin"], ["orientation", "horizontal"], ["size", "272px", 3, "collapsible", "scrollable", "resizable", "collapsedChange", 4, "ngIf"], ["mjFillContainer", "", 1, "conversation-wrapper"], [1, "messages", 3, "scroll"], ["class", "waiting-for-ai", 4, "ngIf"], ["class", "welcome-wrapper", 4, "ngIf"], ["mjContainer", "", "mjSkipResize", "true"], ["class", "scroll-to-bottom-icon", 3, "click", 4, "ngIf"], [1, "input-area"], [1, "text-area-wrapper"], ["type", "text", "placeholder", "Ask Skip a question", 3, "keyup.enter", "input", "disabled"], ["kendoButton", ""], ["kendoButton", "", 3, "click", "disabled"], [1, "fas", "fa-solid", "fa-arrow-up"], [4, "ngIf"], ["title", "Please confirm", 3, "minWidth", "width", "close", 4, "ngIf"], ["size", "272px", 3, "collapsedChange", "collapsible", "scrollable", "resizable"], ["class", "conversation-history", 4, "ngIf"], [1, "conversation-history"], [1, "new-chat-area"], [1, "avatar", 3, "src"], ["kendoButton", "", 3, "click", 4, "ngIf"], ["mjFillContainer", "", 1, "conversation-list", 3, "data", "itemClass", "fillWidth", "bottomMargin"], ["kendoListViewItemTemplate", ""], ["kendoButton", "", 3, "click"], [1, "conversation-item", 3, "click", "ngClass", "title"], ["class", "fa-regular fa-clock", 4, "ngIf"], [1, "text-container"], ["maxlength", "100", 3, "ngModel", "ngModelChange", 4, "ngIf"], ["class", "edit-conversation-panel", 4, "ngIf"], [1, "fa-regular", "fa-clock"], ["maxlength", "100", 3, "ngModelChange", "ngModel"], [1, "edit-conversation-panel"], ["class", "fa-solid fa-pen-to-square", 3, "click", 4, "ngIf"], ["class", "fa-regular fa-trash-can", 3, "click", 4, "ngIf"], ["class", "fa-solid fa-check", 3, "click", 4, "ngIf"], ["class", "fa-solid fa-xmark", 3, "click", 4, "ngIf"], [1, "fa-solid", "fa-pen-to-square", 3, "click"], [1, "fa-regular", "fa-trash-can", 3, "click"], [1, "fa-solid", "fa-check", 3, "click"], [1, "fa-solid", "fa-xmark", 3, "click"], [1, "waiting-for-ai"], [1, "welcome-wrapper"], [1, "welcome-message"], [3, "src"], [1, "welcome-header-text"], [1, "welcome-suggested-questions"], [1, "welcome-suggested-questions-col"], [1, "welcome-question", 3, "click"], [1, "welcome-question-header"], [1, "scroll-to-bottom-icon", 3, "click"], [1, "fas", "fa-arrow-down"], [1, "fa-solid", "fa-gear", 3, "click"], [3, "dialogClosed", "dataContextId", "Provider"], ["title", "Please confirm", 3, "close", "minWidth", "width"], [2, "margin", "30px", "text-align", "center"], ["kendoButton", "", "themeColor", "primary", 3, "click"]], template: function SkipChatComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1218
1291
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
1219
1292
|
i0.ɵɵelementStart(0, "div", 4, 0)(2, "kendo-splitter", 5);
|
|
1220
1293
|
i0.ɵɵtemplate(3, SkipChatComponent_kendo_splitter_pane_3_Template, 2, 4, "kendo-splitter-pane", 6);
|
|
1221
1294
|
i0.ɵɵelementStart(4, "kendo-splitter-pane")(5, "div", 7)(6, "div", 8, 1);
|
|
1222
1295
|
i0.ɵɵlistener("scroll", function SkipChatComponent_Template_div_scroll_6_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.checkScroll()); });
|
|
1223
|
-
i0.ɵɵtemplate(9, SkipChatComponent_div_9_Template,
|
|
1296
|
+
i0.ɵɵtemplate(9, SkipChatComponent_div_9_Template, 1, 0, "div", 9)(10, SkipChatComponent_div_10_Template, 28, 9, "div", 10);
|
|
1224
1297
|
i0.ɵɵelement(11, "div", 11);
|
|
1225
1298
|
i0.ɵɵtemplate(12, SkipChatComponent_span_12_Template, 2, 0, "span", 12);
|
|
1226
1299
|
i0.ɵɵelementEnd();
|
|
@@ -1232,7 +1305,7 @@ SkipChatComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SkipChatC
|
|
|
1232
1305
|
i0.ɵɵlistener("click", function SkipChatComponent_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.sendSkipMessage()); });
|
|
1233
1306
|
i0.ɵɵelement(19, "span", 18);
|
|
1234
1307
|
i0.ɵɵelementEnd()()()()()();
|
|
1235
|
-
i0.ɵɵtemplate(20, SkipChatComponent_div_20_Template, 2,
|
|
1308
|
+
i0.ɵɵtemplate(20, SkipChatComponent_div_20_Template, 2, 2, "div", 19)(21, SkipChatComponent_kendo_dialog_21_Template, 8, 3, "kendo-dialog", 20);
|
|
1236
1309
|
} if (rf & 2) {
|
|
1237
1310
|
i0.ɵɵproperty("bottomMargin", 10)("rightMargin", 10);
|
|
1238
1311
|
i0.ɵɵadvance(3);
|
|
@@ -1251,14 +1324,16 @@ SkipChatComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SkipChatC
|
|
|
1251
1324
|
i0.ɵɵproperty("disabled", ctx.IsTextAreaEmpty() || ctx.SelectedConversation !== undefined && ctx.IsSkipProcessing(ctx.SelectedConversation));
|
|
1252
1325
|
i0.ɵɵadvance(2);
|
|
1253
1326
|
i0.ɵɵproperty("ngIf", ctx.isDataContextDialogVisible);
|
|
1254
|
-
|
|
1327
|
+
i0.ɵɵadvance();
|
|
1328
|
+
i0.ɵɵproperty("ngIf", ctx.confirmDeleteConversationDialogOpen);
|
|
1329
|
+
} }, dependencies: [i3.NgClass, i3.NgIf, i4.SplitterComponent, i4.SplitterPaneComponent, i5.DefaultValueAccessor, i5.NgControlStatus, i5.MaxLengthValidator, i5.NgModel, i6.DialogComponent, i6.DialogActionsComponent, i7.FillContainer, i7.Container, i8.ItemTemplateDirective, i8.ListViewComponent, i9.ButtonComponent, i10.DataContextDialogComponent], styles: [".chat-container[_ngcontent-%COMP%] {\n padding: 5px;\n display: flex;\n flex-direction: row;\n height: 100%;\n font-family: S\u00F6hne, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, \"Helvetica Neue\", Arial, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n\n \n\n width: 100%;\n height: 100%;\n\n background-color: #f9f9f9;\n}\n\n.conversation-wrapper[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n position: relative; \n\n background-color: #f9f9f9;\n}\n\n.new-conversation[_ngcontent-%COMP%] {\n height: 30px;\n font-size: large;\n}\n\n.conversation-history[_ngcontent-%COMP%] {\n width: 260px;\n min-width: 260px;\n height: 100%;\n overflow-y: auto; \n\n margin-right: 10px;\n padding-top: 5px;\n background-color: #f9f9f9;\n margin-top: 0px; \n padding: 12px; \n}\n\n.k-tabstrip-content-for-skip[_ngcontent-%COMP%] {\n padding: 0;\n padding-block: 0;\n}\n\n\n.conversation-history[_ngcontent-%COMP%] > button[_ngcontent-%COMP%] {\n height: 25px;\n}\n\n.skip-title[_ngcontent-%COMP%] {\n font-size: larger;\n margin-bottom: 5px;\n height: 20px;\n margin-top: 5px;\n}\n\n.conversation-list[_ngcontent-%COMP%] {\n margin-top: 5px;\n padding-top: 5px;\n \n border: 0;\n background-color: #f9f9f9;\n}\n\n\n\n\n\n.welcome-wrapper[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.welcome-message[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n overflow: hidden;\n height: 100%;\n}\n\n.embedded-conversations[_ngcontent-%COMP%] {\n margin-left: 3px;\n margin-top: 5px;\n font-size: 10pt;\n color: rgb(48, 48, 235);\n}\n.embedded-conversations[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n margin-top: 4px;\n margin-left: 5px;\n cursor: pointer;\n}\n.conversation-item-linked[_ngcontent-%COMP%] {\n color: rgb(48, 48, 235);\n}\n\n.welcome-message[_ngcontent-%COMP%] img[_ngcontent-%COMP%] {\n width: 120px;\n height: 50px;\n margin-bottom: 20px; \n\n}\n\n.welcome-header-text[_ngcontent-%COMP%] {\n font-size: larger;\n font-weight: bold;\n}\n\n\n\n.welcome-suggested-questions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-content: center;\n}\n.welcome-suggested-questions-col[_ngcontent-%COMP%] {\n display: flex;\n}\n\n\n\n.welcome-question[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column; \n\n align-items: left;;\n width: 300px; \n justify-content: space-between;\n margin: 5px; \n\n border: solid 1px rgba(41, 28, 28, 0.08);\n border-radius: 15px;\n padding: 10px;\n cursor: pointer;\n}\n\n.welcome-question[_ngcontent-%COMP%]:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n\n.welcome-question-header[_ngcontent-%COMP%] {\n font-size: 12pt;\n font-weight: bold;\n display: block; \n\n}\n\n\n\n.welcome-question[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:not(.welcome-question-header) {\n font-weight: normal;\n font-size: 10pt;\n}\n\n\n.messages[_ngcontent-%COMP%] {\n overflow-y: auto; \n\n overflow-x: hidden; \n\n \n\n margin-bottom: 5px;\n\n margin-top: 2px; \n\n\n background-color: #f9f9f9;\n flex: 1;\n}\n\n\n\n.new-chat-area[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between; \n\n align-items: center; \n\n}\n.avatar[_ngcontent-%COMP%] {\n max-height: 24px;\n margin-right: 10px;\n margin-left: 5px;\n margin-bottom: 3px;\n \n\n margin-right: auto; \n\n}\n\n.conversation-item[_ngcontent-%COMP%] {\n margin-left: 5px;\n margin-right: 5px;\n padding-top: 10px;\n padding-bottom: 10px;\n padding-left: 5px;\n padding-right: 5px;\n border-radius: 5px;\n cursor: pointer;\n overflow: hidden;\n max-height: 150px;\n font-size: 14px;\n\n display: flex;\n align-items: flex-start; \n\n\n flex-wrap: wrap; \n\n}\n\n.text-container[_ngcontent-%COMP%] {\n flex: 1; \n\n display: flex;\n flex-direction: column; \n\n}\n\n.text-container[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%] {\n resize: none; \n\n \n\n}\n\n.conversation-item[_ngcontent-%COMP%] > .conversation-icon[_ngcontent-%COMP%] {\n margin-top: 3px;\n}\n\n.conversation-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: inline-block;\n white-space: pre-wrap; \n\n overflow: auto;\n word-wrap: break-word;\n margin-left: 3px; \n\n}\n\n.conversation-item[_ngcontent-%COMP%]:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.conversation-item-selected[_ngcontent-%COMP%] {\n background-color: rgba(0, 0, 0, 0.15);\n}\n\n\n.conversation-item[_ngcontent-%COMP%] > .conversation-icon[_ngcontent-%COMP%] {\n margin-right: 11px;\n}\n.edit-conversation-panel[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end; \n\n margin-top: 2px; \n\n margin-right: 2px; \n\n}\n.edit-conversation-panel[_ngcontent-%COMP%] > .k-icon[_ngcontent-%COMP%] {\n margin-left: 5px;\n cursor: pointer;\n}\n.edit-conversation-panel[_ngcontent-%COMP%] > .k-icon[_ngcontent-%COMP%]:hover {\n color: #ff0000;\n}\n\n\n\n.input-area[_ngcontent-%COMP%] {\n min-height: 35px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 15px;\n}\n\n.input-area[_ngcontent-%COMP%] > button[_ngcontent-%COMP%] {\n vertical-align: top;\n width: 30px;\n height: 30px;\n margin-top: 3px;\n border-radius: 12px;\n}\n.input-area[_ngcontent-%COMP%] > button[_ngcontent-%COMP%]:first-of-type {\n margin-left: -40px;\n}\n.input-area[_ngcontent-%COMP%] > button[_ngcontent-%COMP%]:last-child {\n margin-left: -65px;\n}\n\n.text-area-wrapper[_ngcontent-%COMP%] {\n padding: 3px;\n border: solid 1px rgba(0, 0, 0, 0.08) ;\n border-radius: 15px;\n\n margin-top: 4px;\n margin-right: -1px;\n min-height: 42px;\n max-height: 100%; \n\n\n overflow: hidden; \n align-items: center;\n\n \n\n width: 710px; \n padding-right: 90px\n} \n.text-area-wrapper[_ngcontent-%COMP%] > textarea[_ngcontent-%COMP%] {\n border: 0;\n outline: 0;\n resize: none;\n\n min-height: 20px; \n\n\n width: 100%;\n overflow-y: hidden; \n\n\n font-family: S\u00F6hne, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, \"Helvetica Neue\", Arial, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n\n margin-left: 7px;\n margin-top: 7px;\n margin-bottom: 5px;\n\n background-color: #f9f9f9;\n}\n\n.text-area-wrapper[_ngcontent-%COMP%] > textarea[_ngcontent-%COMP%]:disabled {\n background-color: white;\n}\n\n.input-wrapper[_ngcontent-%COMP%] {\n flex-grow: 1; \n\n height: 100%;\n}\n\n.waiting-for-ai[_ngcontent-%COMP%] {\n position: absolute;\n display: flex; \n\n bottom: 100px;\n z-index: 999;\n left: 10px; \n}\n \n.scroll-to-bottom-icon[_ngcontent-%COMP%] {\n position: absolute;\n bottom: 100px; \n\n left: 50%; \n\n transform: translateX(-50%); \n\n z-index: 1000; \n\n background-color: white; \n\n color: black; \n\n border-radius: 50%; \n\n width: 40px; \n\n height: 40px; \n\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0px 0px 5px rgba(0,0,0,0.3); \n\n cursor: pointer;\n}\n\n@media (min-width: 600px) {\n .welcome-suggested-questions[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap; \n\n align-content: flex-end; \n\n }\n}"] });
|
|
1255
1330
|
SkipChatComponent = SkipChatComponent_1 = __decorate([
|
|
1256
1331
|
RegisterClass(BaseNavigationComponent, 'Ask Skip')
|
|
1257
1332
|
], SkipChatComponent);
|
|
1258
1333
|
export { SkipChatComponent };
|
|
1259
1334
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SkipChatComponent, [{
|
|
1260
1335
|
type: Component,
|
|
1261
|
-
args: [{ selector: 'skip-chat', template: "<div class = \"chat-container\" mjFillContainer #topLevelDiv [bottomMargin]=\"10\" [rightMargin]=\"10\">\n <kendo-splitter orientation=\"horizontal\">\n <kendo-splitter-pane *ngIf=\"ShowConversationList\" [collapsible]=\"true\" [scrollable]=\"false\" [resizable]=\"false\" size=\"272px\" (collapsedChange)=\"splitterCollapseStateChanged($event)\">\n <div class=\"conversation-history\" *ngIf=\"ShowConversationList\">\n <div class=\"new-chat-area\">\n <img src=\"assets/Skip Full Logo - Transparent.png\" class=\"avatar\" />\n <button kendoButton *ngIf=\"AllowNewConversations\" (click)=\"CreateNewConversation()\">+</button>\n </div>\n <kendo-listview\n class=\"conversation-list\"\n [data]=\"Conversations\"\n [style.height.px]=\"280\"\n [itemClass]=\"{ 'item-border': true }\" \n mjFillContainer \n [fillWidth]=\"false\"\n [bottomMargin]=\"20\"\n #conversationList\n >\n <ng-template kendoListViewItemTemplate let-dataItem=\"dataItem\">\n <div class=\"conversation-item\" \n [ngClass]=\"GetConversationItemClass(dataItem)\"\n [title]=\"dataItem.Name\" \n (click)=\"SelectConversation(dataItem)\"> \n <span *ngIf=\"SelectedConversation && IsSkipProcessing(dataItem)\" class=\"fa-regular fa-clock\"></span>\n <div class=\"text-container\">\n <span *ngIf=\"dataItem.ID !== SelectedConversation?.ID || !ConversationEditMode\">{{ dataItem.Name }}</span>\n <textarea *ngIf=\"dataItem.ID === SelectedConversation?.ID && ConversationEditMode\" [(ngModel)]=\"dataItem.Name\" maxlength=\"100\"></textarea>\n </div>\n <div *ngIf=\"SelectedConversation?.ID === dataItem.ID\" class=\"edit-conversation-panel\">\n <span *ngIf=\"!ConversationEditMode\" class=\"fa-solid fa-pen-to-square\" (click)=\"editConvo(dataItem)\"></span>\n <span *ngIf=\"!ConversationEditMode\" class=\"fa-regular fa-trash-can\" (click)=\"deleteConvo(dataItem)\"></span>\n <span *ngIf=\"ConversationEditMode\" class=\"fa-solid fa-check\" (click)=\"saveConvoName(dataItem)\"></span>\n <span *ngIf=\"ConversationEditMode\" class=\"fa-solid fa-xmark\" (click)=\"cancelConvoEdit(dataItem)\"></span>\n </div>\n </div>\n </ng-template>\n </kendo-listview>\n <!-- COMMENTED OUT as we don't want to support embedded conversations in the UI for now\n <div class=\"embedded-conversations\"><input kendoCheckBox type=\"checkbox\" [(ngModel)]=\"IncludeLinkedConversationsInList\" (ngModelChange)=\"loadConversations()\"/> <span (click)=\"FlipEmbeddedConversationState()\">Show Linked Conversations</span></div> -->\n </div>\n </kendo-splitter-pane>\n <kendo-splitter-pane>\n <div class=\"conversation-wrapper\" mjFillContainer>\n <div #AskSkipPanel class=\"messages\" #scrollContainer (scroll)=\"checkScroll()\">\n <div class=\"waiting-for-ai\" *ngIf=\"Messages && Messages.length > 0 && SelectedConversation && IsSkipProcessing(SelectedConversation)\">\n <kendo-loader></kendo-loader>\n </div>\n <div class=\"welcome-wrapper\" *ngIf=\"(!Messages || Messages.length ===0) && _conversationLoadComplete\">\n <div class='welcome-message'>\n <img src=\"assets/Skip Full Logo - Transparent.png\"/>\n <div class=\"welcome-header-text\">What can I help with today?</div>\n </div>\n <div class='welcome-suggested-questions'>\n <div class=\"welcome-suggested-questions-col\">\n <div class=\"welcome-question\" (click)=\"sendPrompt(WelcomeQuestions[0].prompt)\">\n <span class=\"welcome-question-header\">{{WelcomeQuestions[0].topLine}}</span>\n <span>{{WelcomeQuestions[0].bottomLine}}</span>\n </div>\n <div class=\"welcome-question\" (click)=\"sendPrompt(WelcomeQuestions[1].prompt)\">\n <span class=\"welcome-question-header\">{{WelcomeQuestions[1].topLine}}</span>\n <span>{{WelcomeQuestions[1].bottomLine}}</span>\n </div> \n </div>\n <div class=\"welcome-suggested-questions-col\">\n <div class=\"welcome-question\" (click)=\"sendPrompt(WelcomeQuestions[2].prompt)\">\n <span class=\"welcome-question-header\">{{WelcomeQuestions[2].topLine}}</span>\n <span>{{WelcomeQuestions[2].bottomLine}}</span>\n </div>\n <div class=\"welcome-question\" (click)=\"sendPrompt(WelcomeQuestions[3].prompt)\">\n <span class=\"welcome-question-header\">{{WelcomeQuestions[3].topLine}}</span>\n <span>{{WelcomeQuestions[3].bottomLine}}</span>\n </div> \n </div>\n </div> \n </div>\n <div mjContainer mjSkipResize=\"true\"><!--mjSkipResize results in everything below this level NOT being resized, performance optimization-->\n <!-- Dynamic messages will be injected here -->\n </div>\n <span class=\"scroll-to-bottom-icon\" *ngIf=\"_showScrollToBottomIcon && Messages && Messages.length > 0\" (click)=\"scrollToBottomAnimate()\"><i class=\"fas fa-arrow-down\"></i></span>\n </div>\n <div class=\"input-area\">\n <div class=\"text-area-wrapper\">\n <textarea\n #AskSkipInput \n [disabled]=\"SelectedConversation && IsSkipProcessing(SelectedConversation)\" \n (keyup.enter)=\"onEnter($event)\" \n (input)=\"onInputChange($event)\"\n type=\"text\" \n placeholder=\"Ask Skip a question\"></textarea>\n </div>\n @if (ShowDataContextButton) {\n <button kendoButton >\n <span class=\"fa-solid fa-gear\" \n (click)=\"showDataContext()\"></span>\n </button> \n }\n <button kendoButton \n [disabled]=\"IsTextAreaEmpty() || (SelectedConversation !== undefined && IsSkipProcessing(SelectedConversation))\" \n (click)=\"sendSkipMessage()\">\n <span class=\"fas fa-solid fa-arrow-up\"></span>\n </button>\n </div>\n </div>\n </kendo-splitter-pane>\n </kendo-splitter>\n</div> \n\n<div *ngIf=\"isDataContextDialogVisible\">\n <mj-data-context-dialog [dataContextId]=\"DataContextID\" (dialogClosed)=\"closeDataContextDialog()\"></mj-data-context-dialog>\n</div>", styles: [".chat-container {\n padding: 5px;\n display: flex;\n flex-direction: row;\n height: 100%;\n font-family: S\u00F6hne, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, \"Helvetica Neue\", Arial, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n\n /*initial sizes*/\n width: 100%;\n height: 100%;\n\n background-color: #f9f9f9;\n}\n\n.conversation-wrapper {\n display: flex;\n flex-direction: column;\n position: relative; /* Add this line if the wrapper needs to be a reference point */\n background-color: #f9f9f9;\n}\n\n.new-conversation {\n height: 30px;\n font-size: large;\n}\n\n.conversation-history {\n width: 260px;\n min-width: 260px;\n height: 100%;\n overflow-y: auto; /* Add scroll if the content exceeds the height */\n margin-right: 10px;\n padding-top: 5px;\n background-color: #f9f9f9;\n margin-top: 0px; \n padding: 12px; \n}\n\n.k-tabstrip-content-for-skip {\n padding: 0;\n padding-block: 0;\n}\n\n\n.conversation-history > button {\n height: 25px;\n}\n\n.skip-title {\n font-size: larger;\n margin-bottom: 5px;\n height: 20px;\n margin-top: 5px;\n}\n\n.conversation-list {\n margin-top: 5px;\n padding-top: 5px;\n \n border: 0;\n background-color: #f9f9f9;\n}\n\n\n\n/* Center the welcome message vertically and horizontally */\n.welcome-wrapper {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.welcome-message {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n overflow: hidden;\n height: 100%;\n}\n\n.embedded-conversations {\n margin-left: 3px;\n margin-top: 5px;\n font-size: 10pt;\n color: rgb(48, 48, 235);\n}\n.embedded-conversations > span {\n margin-top: 4px;\n margin-left: 5px;\n cursor: pointer;\n}\n.conversation-item-linked {\n color: rgb(48, 48, 235);\n}\n\n.welcome-message img {\n width: 120px;\n height: 50px;\n margin-bottom: 20px; /* Adds some space between the image and the text below */\n}\n\n.welcome-header-text {\n font-size: larger;\n font-weight: bold;\n}\n\n/* Position the welcome-suggested-questions at the bottom of its container */\n.welcome-suggested-questions {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-content: center;\n}\n.welcome-suggested-questions-col {\n display: flex;\n}\n\n/* Flex layout for questions, two per row */\n.welcome-question {\n display: flex;\n flex-direction: column; /* Stack the header and text vertically */\n align-items: left;;\n width: 300px; \n justify-content: space-between;\n margin: 5px; /* Adds some space around each question */\n border: solid 1px rgba(41, 28, 28, 0.08);\n border-radius: 15px;\n padding: 10px;\n cursor: pointer;\n}\n\n.welcome-question:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n\n.welcome-question-header {\n font-size: 12pt;\n font-weight: bold;\n display: block; /* Ensures the header is on its own line */\n}\n\n/* Non-bold text for the content below the header */\n.welcome-question span:not(.welcome-question-header) {\n font-weight: normal;\n font-size: 10pt;\n}\n\n\n.messages {\n overflow-y: auto; /* enable scrolling if the content overflows */\n overflow-x: hidden; /* hide horizontal scrollbar */\n /* border: solid 1px rgba(0, 0, 0, 0.08); */\n margin-bottom: 5px;\n\n margin-top: 2px; /* align it with the top of converation history exactly*/\n\n background-color: #f9f9f9;\n flex: 1;\n}\n\n\n\n.new-chat-area {\n display: flex;\n justify-content: space-between; /* Aligns children (img and button) to each end */\n align-items: center; /* Centers children vertically */\n}\n.avatar {\n max-height: 24px;\n margin-right: 10px;\n margin-left: 5px;\n margin-bottom: 3px;\n /* Ensure the image aligns to the left */\n margin-right: auto; /* Pushes everything else to the right */\n}\n\n.conversation-item {\n margin-left: 5px;\n margin-right: 5px;\n padding-top: 10px;\n padding-bottom: 10px;\n padding-left: 5px;\n padding-right: 5px;\n border-radius: 5px;\n cursor: pointer;\n overflow: hidden;\n max-height: 150px;\n font-size: 14px;\n\n display: flex;\n align-items: flex-start; /* Align items to the top */\n\n flex-wrap: wrap; /* Allow items to wrap to the next line */\n}\n\n.text-container {\n flex: 1; /* Take up remaining space */\n display: flex;\n flex-direction: column; /* Stack children vertically */\n}\n\n.text-container textarea {\n resize: none; /* Disable resizing */\n /* Add more styles for the textarea if needed */\n}\n\n.conversation-item > .conversation-icon {\n margin-top: 3px;\n}\n\n.conversation-item span {\n display: inline-block;\n white-space: pre-wrap; /* Allow text to wrap */\n overflow: auto;\n word-wrap: break-word;\n margin-left: 3px; /* Move the text to the right */\n}\n\n.conversation-item:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.conversation-item-selected {\n background-color: rgba(0, 0, 0, 0.15);\n}\n\n\n.conversation-item > .conversation-icon {\n margin-right: 11px;\n}\n.edit-conversation-panel {\n width: 100%; /* Take up the full width */\n display: flex;\n justify-content: flex-end; /* Align icons to the right */\n}\n.edit-conversation-panel > .k-icon {\n margin-left: 5px;\n cursor: pointer;\n}\n.edit-conversation-panel > .k-icon:hover {\n color: #ff0000;\n}\n\n\n\n.input-area {\n min-height: 35px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 15px;\n}\n\n.input-area > button {\n vertical-align: top;\n width: 30px;\n height: 30px;\n margin-top: 3px;\n border-radius: 12px;\n}\n.input-area > button:first-of-type {\n margin-left: -40px;\n}\n.input-area > button:last-child {\n margin-left: -65px;\n}\n\n.text-area-wrapper {\n padding: 3px;\n border: solid 1px rgba(0, 0, 0, 0.08) ;\n border-radius: 15px;\n\n margin-top: 4px;\n margin-right: -1px;\n min-height: 42px;\n max-height: 100%; /* Prevent it from growing beyond the container */\n\n overflow: hidden; \n align-items: center;\n\n /*combined width and padding is 800*/\n width: 710px; \n padding-right: 90px\n} \n.text-area-wrapper > textarea {\n border: 0;\n outline: 0;\n resize: none;\n\n min-height: 20px; /* Initial height */\n\n width: 100%;\n overflow-y: hidden; /* Hide scrollbar */\n\n font-family: S\u00F6hne, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, \"Helvetica Neue\", Arial, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n\n margin-left: 7px;\n margin-top: 7px;\n margin-bottom: 5px;\n\n background-color: #f9f9f9;\n}\n\n.text-area-wrapper > textarea:disabled {\n background-color: white;\n}\n\n.input-wrapper {\n flex-grow: 1; /* This will make the input-wrapper take the remaining space */\n height: 100%;\n}\n\n.waiting-for-ai {\n position: absolute;\n display: flex; /* Use flexbox layout */\n bottom: 100px;\n z-index: 999;\n left: 10px; \n}\n \n.scroll-to-bottom-icon {\n position: absolute;\n bottom: 100px; /* Adjust as needed to position away from the bottom edge */\n left: 50%; /* Start at the exact horizontal center */\n transform: translateX(-50%); /* Shift it back by half its width to center it */\n z-index: 1000; /* Ensure it stays on top */\n background-color: white; /* Circle background color - adjust as needed */\n color: black; /* Icon color - adjust as needed */\n border-radius: 50%; /* Makes the background a circle */\n width: 40px; /* Circle size - adjust as needed */\n height: 40px; /* Circle size - adjust as needed */\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0px 0px 5px rgba(0,0,0,0.3); /* Optional: Adds a subtle shadow for better visibility */\n cursor: pointer;\n}\n\n@media (min-width: 600px) {\n .welcome-suggested-questions {\n display: flex;\n flex-wrap: wrap; /* Allows questions to wrap to the next line */\n align-content: flex-end; /* Aligns the content to the bottom */\n }\n}\n "] }]
|
|
1336
|
+
args: [{ selector: 'skip-chat', template: "<div class = \"chat-container\" mjFillContainer #topLevelDiv [bottomMargin]=\"10\" [rightMargin]=\"10\">\n <kendo-splitter orientation=\"horizontal\">\n <kendo-splitter-pane *ngIf=\"ShowConversationList\" [collapsible]=\"true\" [scrollable]=\"false\" [resizable]=\"false\" size=\"272px\" (collapsedChange)=\"splitterCollapseStateChanged($event)\">\n <div class=\"conversation-history\" *ngIf=\"ShowConversationList\">\n <div class=\"new-chat-area\">\n <img [src]=\"SkipLogoURL\" class=\"avatar\" />\n <button kendoButton *ngIf=\"AllowNewConversations\" (click)=\"CreateNewConversation()\">+</button>\n </div>\n <kendo-listview\n class=\"conversation-list\"\n [data]=\"Conversations\"\n [style.height.px]=\"280\"\n [itemClass]=\"{ 'item-border': true }\" \n mjFillContainer \n [fillWidth]=\"false\"\n [bottomMargin]=\"20\"\n #conversationList\n >\n <ng-template kendoListViewItemTemplate let-dataItem=\"dataItem\">\n <div class=\"conversation-item\" \n [ngClass]=\"GetConversationItemClass(dataItem)\"\n [title]=\"dataItem.Name\" \n (click)=\"SelectConversation(dataItem)\"> \n <span *ngIf=\"SelectedConversation && IsSkipProcessing(dataItem)\" class=\"fa-regular fa-clock\"></span>\n <div class=\"text-container\">\n <span *ngIf=\"dataItem.ID !== SelectedConversation?.ID || !ConversationEditMode\">{{ dataItem.Name }}</span>\n <textarea *ngIf=\"dataItem.ID === SelectedConversation?.ID && ConversationEditMode\" [(ngModel)]=\"dataItem.Name\" maxlength=\"100\"></textarea>\n </div>\n <div *ngIf=\"SelectedConversation?.ID === dataItem.ID\" class=\"edit-conversation-panel\">\n <span *ngIf=\"!ConversationEditMode\" class=\"fa-solid fa-pen-to-square\" (click)=\"editConvo(dataItem)\"></span>\n <span *ngIf=\"!ConversationEditMode\" class=\"fa-regular fa-trash-can\" (click)=\"showDeleteConvoDialog(dataItem)\"></span>\n <span *ngIf=\"ConversationEditMode\" class=\"fa-solid fa-check\" (click)=\"saveConvoName(dataItem)\"></span>\n <span *ngIf=\"ConversationEditMode\" class=\"fa-solid fa-xmark\" (click)=\"cancelConvoEdit(dataItem)\"></span>\n </div>\n </div>\n </ng-template>\n </kendo-listview>\n <!-- COMMENTED OUT as we don't want to support embedded conversations in the UI for now\n <div class=\"embedded-conversations\"><input kendoCheckBox type=\"checkbox\" [(ngModel)]=\"IncludeLinkedConversationsInList\" (ngModelChange)=\"loadConversations()\"/> <span (click)=\"FlipEmbeddedConversationState()\">Show Linked Conversations</span></div> -->\n </div>\n </kendo-splitter-pane>\n <kendo-splitter-pane>\n <div class=\"conversation-wrapper\" mjFillContainer>\n <div #AskSkipPanel class=\"messages\" #scrollContainer (scroll)=\"checkScroll()\">\n <div class=\"waiting-for-ai\" *ngIf=\"Messages && Messages.length > 0 && SelectedConversation && IsSkipProcessing(SelectedConversation)\">\n <!-- MOVED THIS TO INSIDE MESSAGE - REMOVE THIS ENTIRE DIV ---- <kendo-loader></kendo-loader> -->\n </div>\n <div class=\"welcome-wrapper\" *ngIf=\"(!Messages || Messages.length ===0) && _conversationLoadComplete\">\n <div class='welcome-message'>\n <img [src]=\"SkipLogoURL\" />\n <div class=\"welcome-header-text\">What can I help with today?</div>\n </div>\n <div class='welcome-suggested-questions'>\n <div class=\"welcome-suggested-questions-col\">\n <div class=\"welcome-question\" (click)=\"sendPrompt(WelcomeQuestions[0].prompt)\">\n <span class=\"welcome-question-header\">{{WelcomeQuestions[0].topLine}}</span>\n <span>{{WelcomeQuestions[0].bottomLine}}</span>\n </div>\n <div class=\"welcome-question\" (click)=\"sendPrompt(WelcomeQuestions[1].prompt)\">\n <span class=\"welcome-question-header\">{{WelcomeQuestions[1].topLine}}</span>\n <span>{{WelcomeQuestions[1].bottomLine}}</span>\n </div> \n </div>\n <div class=\"welcome-suggested-questions-col\">\n <div class=\"welcome-question\" (click)=\"sendPrompt(WelcomeQuestions[2].prompt)\">\n <span class=\"welcome-question-header\">{{WelcomeQuestions[2].topLine}}</span>\n <span>{{WelcomeQuestions[2].bottomLine}}</span>\n </div>\n <div class=\"welcome-question\" (click)=\"sendPrompt(WelcomeQuestions[3].prompt)\">\n <span class=\"welcome-question-header\">{{WelcomeQuestions[3].topLine}}</span>\n <span>{{WelcomeQuestions[3].bottomLine}}</span>\n </div> \n </div>\n </div> \n </div>\n <div mjContainer mjSkipResize=\"true\"><!--mjSkipResize results in everything below this level NOT being resized, performance optimization-->\n <!-- Dynamic messages will be injected here -->\n </div>\n <span class=\"scroll-to-bottom-icon\" *ngIf=\"_showScrollToBottomIcon && Messages && Messages.length > 0\" (click)=\"scrollToBottomAnimate()\"><i class=\"fas fa-arrow-down\"></i></span>\n </div>\n <div class=\"input-area\">\n <div class=\"text-area-wrapper\">\n <textarea\n #AskSkipInput \n [disabled]=\"SelectedConversation && IsSkipProcessing(SelectedConversation)\" \n (keyup.enter)=\"onEnter($event)\" \n (input)=\"onInputChange($event)\"\n type=\"text\" \n placeholder=\"Ask Skip a question\"></textarea>\n </div>\n @if (ShowDataContextButton) {\n <button kendoButton >\n <span class=\"fa-solid fa-gear\" \n (click)=\"showDataContext()\"></span>\n </button> \n }\n <button kendoButton \n [disabled]=\"IsTextAreaEmpty() || (SelectedConversation !== undefined && IsSkipProcessing(SelectedConversation))\" \n (click)=\"sendSkipMessage()\">\n <span class=\"fas fa-solid fa-arrow-up\"></span>\n </button>\n </div>\n </div>\n </kendo-splitter-pane>\n </kendo-splitter>\n</div> \n\n<div *ngIf=\"isDataContextDialogVisible\">\n <mj-data-context-dialog [dataContextId]=\"DataContextID\" (dialogClosed)=\"closeDataContextDialog()\" [Provider]=\"ProviderToUse\"></mj-data-context-dialog>\n</div>\n\n\n<kendo-dialog\n title=\"Please confirm\"\n *ngIf=\"confirmDeleteConversationDialogOpen\"\n (close)=\"closeDeleteConversation('no')\"\n [minWidth]=\"250\"\n [width]=\"450\"\n>\n <p style=\"margin: 30px; text-align: center;\">\n Would you like to delete {{SelectedConversation?.Name}}?\n </p>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeDeleteConversation('yes')\" themeColor=\"primary\">\n Yes\n </button>\n <button kendoButton (click)=\"closeDeleteConversation('no')\">\n No\n </button>\n </kendo-dialog-actions>\n</kendo-dialog> ", styles: [".chat-container {\n padding: 5px;\n display: flex;\n flex-direction: row;\n height: 100%;\n font-family: S\u00F6hne, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, \"Helvetica Neue\", Arial, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n\n /*initial sizes*/\n width: 100%;\n height: 100%;\n\n background-color: #f9f9f9;\n}\n\n.conversation-wrapper {\n display: flex;\n flex-direction: column;\n position: relative; /* Add this line if the wrapper needs to be a reference point */\n background-color: #f9f9f9;\n}\n\n.new-conversation {\n height: 30px;\n font-size: large;\n}\n\n.conversation-history {\n width: 260px;\n min-width: 260px;\n height: 100%;\n overflow-y: auto; /* Add scroll if the content exceeds the height */\n margin-right: 10px;\n padding-top: 5px;\n background-color: #f9f9f9;\n margin-top: 0px; \n padding: 12px; \n}\n\n.k-tabstrip-content-for-skip {\n padding: 0;\n padding-block: 0;\n}\n\n\n.conversation-history > button {\n height: 25px;\n}\n\n.skip-title {\n font-size: larger;\n margin-bottom: 5px;\n height: 20px;\n margin-top: 5px;\n}\n\n.conversation-list {\n margin-top: 5px;\n padding-top: 5px;\n \n border: 0;\n background-color: #f9f9f9;\n}\n\n\n\n/* Center the welcome message vertically and horizontally */\n.welcome-wrapper {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.welcome-message {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n overflow: hidden;\n height: 100%;\n}\n\n.embedded-conversations {\n margin-left: 3px;\n margin-top: 5px;\n font-size: 10pt;\n color: rgb(48, 48, 235);\n}\n.embedded-conversations > span {\n margin-top: 4px;\n margin-left: 5px;\n cursor: pointer;\n}\n.conversation-item-linked {\n color: rgb(48, 48, 235);\n}\n\n.welcome-message img {\n width: 120px;\n height: 50px;\n margin-bottom: 20px; /* Adds some space between the image and the text below */\n}\n\n.welcome-header-text {\n font-size: larger;\n font-weight: bold;\n}\n\n/* Position the welcome-suggested-questions at the bottom of its container */\n.welcome-suggested-questions {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-content: center;\n}\n.welcome-suggested-questions-col {\n display: flex;\n}\n\n/* Flex layout for questions, two per row */\n.welcome-question {\n display: flex;\n flex-direction: column; /* Stack the header and text vertically */\n align-items: left;;\n width: 300px; \n justify-content: space-between;\n margin: 5px; /* Adds some space around each question */\n border: solid 1px rgba(41, 28, 28, 0.08);\n border-radius: 15px;\n padding: 10px;\n cursor: pointer;\n}\n\n.welcome-question:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n\n.welcome-question-header {\n font-size: 12pt;\n font-weight: bold;\n display: block; /* Ensures the header is on its own line */\n}\n\n/* Non-bold text for the content below the header */\n.welcome-question span:not(.welcome-question-header) {\n font-weight: normal;\n font-size: 10pt;\n}\n\n\n.messages {\n overflow-y: auto; /* enable scrolling if the content overflows */\n overflow-x: hidden; /* hide horizontal scrollbar */\n /* border: solid 1px rgba(0, 0, 0, 0.08); */\n margin-bottom: 5px;\n\n margin-top: 2px; /* align it with the top of converation history exactly*/\n\n background-color: #f9f9f9;\n flex: 1;\n}\n\n\n\n.new-chat-area {\n display: flex;\n justify-content: space-between; /* Aligns children (img and button) to each end */\n align-items: center; /* Centers children vertically */\n}\n.avatar {\n max-height: 24px;\n margin-right: 10px;\n margin-left: 5px;\n margin-bottom: 3px;\n /* Ensure the image aligns to the left */\n margin-right: auto; /* Pushes everything else to the right */\n}\n\n.conversation-item {\n margin-left: 5px;\n margin-right: 5px;\n padding-top: 10px;\n padding-bottom: 10px;\n padding-left: 5px;\n padding-right: 5px;\n border-radius: 5px;\n cursor: pointer;\n overflow: hidden;\n max-height: 150px;\n font-size: 14px;\n\n display: flex;\n align-items: flex-start; /* Align items to the top */\n\n flex-wrap: wrap; /* Allow items to wrap to the next line */\n}\n\n.text-container {\n flex: 1; /* Take up remaining space */\n display: flex;\n flex-direction: column; /* Stack children vertically */\n}\n\n.text-container textarea {\n resize: none; /* Disable resizing */\n /* Add more styles for the textarea if needed */\n}\n\n.conversation-item > .conversation-icon {\n margin-top: 3px;\n}\n\n.conversation-item span {\n display: inline-block;\n white-space: pre-wrap; /* Allow text to wrap */\n overflow: auto;\n word-wrap: break-word;\n margin-left: 3px; /* Move the text to the right */\n}\n\n.conversation-item:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.conversation-item-selected {\n background-color: rgba(0, 0, 0, 0.15);\n}\n\n\n.conversation-item > .conversation-icon {\n margin-right: 11px;\n}\n.edit-conversation-panel {\n display: flex;\n justify-content: flex-end; /* Align icons to the right */\n margin-top: 2px; /* litle buffer on top */\n margin-right: 2px; /* litle buffer to the right */\n}\n.edit-conversation-panel > .k-icon {\n margin-left: 5px;\n cursor: pointer;\n}\n.edit-conversation-panel > .k-icon:hover {\n color: #ff0000;\n}\n\n\n\n.input-area {\n min-height: 35px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 15px;\n}\n\n.input-area > button {\n vertical-align: top;\n width: 30px;\n height: 30px;\n margin-top: 3px;\n border-radius: 12px;\n}\n.input-area > button:first-of-type {\n margin-left: -40px;\n}\n.input-area > button:last-child {\n margin-left: -65px;\n}\n\n.text-area-wrapper {\n padding: 3px;\n border: solid 1px rgba(0, 0, 0, 0.08) ;\n border-radius: 15px;\n\n margin-top: 4px;\n margin-right: -1px;\n min-height: 42px;\n max-height: 100%; /* Prevent it from growing beyond the container */\n\n overflow: hidden; \n align-items: center;\n\n /*combined width and padding is 800*/\n width: 710px; \n padding-right: 90px\n} \n.text-area-wrapper > textarea {\n border: 0;\n outline: 0;\n resize: none;\n\n min-height: 20px; /* Initial height */\n\n width: 100%;\n overflow-y: hidden; /* Hide scrollbar */\n\n font-family: S\u00F6hne, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, \"Helvetica Neue\", Arial, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n\n margin-left: 7px;\n margin-top: 7px;\n margin-bottom: 5px;\n\n background-color: #f9f9f9;\n}\n\n.text-area-wrapper > textarea:disabled {\n background-color: white;\n}\n\n.input-wrapper {\n flex-grow: 1; /* This will make the input-wrapper take the remaining space */\n height: 100%;\n}\n\n.waiting-for-ai {\n position: absolute;\n display: flex; /* Use flexbox layout */\n bottom: 100px;\n z-index: 999;\n left: 10px; \n}\n \n.scroll-to-bottom-icon {\n position: absolute;\n bottom: 100px; /* Adjust as needed to position away from the bottom edge */\n left: 50%; /* Start at the exact horizontal center */\n transform: translateX(-50%); /* Shift it back by half its width to center it */\n z-index: 1000; /* Ensure it stays on top */\n background-color: white; /* Circle background color - adjust as needed */\n color: black; /* Icon color - adjust as needed */\n border-radius: 50%; /* Makes the background a circle */\n width: 40px; /* Circle size - adjust as needed */\n height: 40px; /* Circle size - adjust as needed */\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0px 0px 5px rgba(0,0,0,0.3); /* Optional: Adds a subtle shadow for better visibility */\n cursor: pointer;\n}\n\n@media (min-width: 600px) {\n .welcome-suggested-questions {\n display: flex;\n flex-wrap: wrap; /* Allows questions to wrap to the next line */\n align-content: flex-end; /* Aligns the content to the bottom */\n }\n}\n "] }]
|
|
1262
1337
|
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i0.Renderer2 }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.Location }, { type: i0.ChangeDetectorRef }], { AllowSend: [{
|
|
1263
1338
|
type: Input
|
|
1264
1339
|
}], Messages: [{
|
|
@@ -1285,10 +1360,20 @@ export { SkipChatComponent };
|
|
|
1285
1360
|
type: Input
|
|
1286
1361
|
}], IncludeLinkedConversationsInList: [{
|
|
1287
1362
|
type: Input
|
|
1363
|
+
}], SkipLogoURL: [{
|
|
1364
|
+
type: Input
|
|
1365
|
+
}], SkipMarkOnlyLogoURL: [{
|
|
1366
|
+
type: Input
|
|
1367
|
+
}], UserImage: [{
|
|
1368
|
+
type: Input
|
|
1288
1369
|
}], UpdateAppRoute: [{
|
|
1289
1370
|
type: Input
|
|
1290
1371
|
}], Provider: [{
|
|
1291
1372
|
type: Input
|
|
1373
|
+
}], NavigateToMatchingReport: [{
|
|
1374
|
+
type: Output
|
|
1375
|
+
}], ConversationSelected: [{
|
|
1376
|
+
type: Output
|
|
1292
1377
|
}], askSkip: [{
|
|
1293
1378
|
type: ViewChild,
|
|
1294
1379
|
args: [Container, { static: true }]
|
|
@@ -1312,6 +1397,8 @@ export { SkipChatComponent };
|
|
|
1312
1397
|
args: ['topLevelDiv']
|
|
1313
1398
|
}], WelcomeQuestions: [{
|
|
1314
1399
|
type: Input
|
|
1400
|
+
}], AutoLoad: [{
|
|
1401
|
+
type: Input
|
|
1315
1402
|
}] }); })();
|
|
1316
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SkipChatComponent, { className: "SkipChatComponent", filePath: "src/lib/skip-chat/skip-chat.component.ts", lineNumber:
|
|
1403
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SkipChatComponent, { className: "SkipChatComponent", filePath: "src/lib/skip-chat/skip-chat.component.ts", lineNumber: 43 }); })();
|
|
1317
1404
|
//# sourceMappingURL=skip-chat.component.js.map
|