@axos-web-dev/shared-components 1.0.100-dev.73-nav → 1.0.100-dev.73-nav-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.
|
@@ -51,13 +51,19 @@ const ChatWindow = ({
|
|
|
51
51
|
const messagesEndRef = useRef(null);
|
|
52
52
|
const inputRef = useRef(null);
|
|
53
53
|
const isOpen = useOpenChat((state2) => state2.isOpen);
|
|
54
|
+
const isBlockedInput = useOpenChat((state2) => state2.isBlockedInput);
|
|
55
|
+
const blockInput = useOpenChat((state2) => state2.blockInput);
|
|
54
56
|
useEffect(() => {
|
|
55
57
|
messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
56
58
|
}, [messages]);
|
|
57
59
|
const handleSend = (e) => {
|
|
58
60
|
e.preventDefault();
|
|
59
61
|
const cleaned = cleanInput(input);
|
|
62
|
+
if (isBlockedInput) return;
|
|
60
63
|
if (cleaned) {
|
|
64
|
+
if (!hasEscalated) {
|
|
65
|
+
blockInput?.();
|
|
66
|
+
}
|
|
61
67
|
onSend(cleaned);
|
|
62
68
|
setInput("");
|
|
63
69
|
}
|
|
@@ -466,18 +472,13 @@ const ChatWindow = ({
|
|
|
466
472
|
previewTyping(e.target?.value);
|
|
467
473
|
}
|
|
468
474
|
if (e.key === "Enter" && !e.shiftKey) {
|
|
469
|
-
e
|
|
470
|
-
const cleaned = cleanInput(input);
|
|
471
|
-
if (cleaned) {
|
|
472
|
-
onSend(cleaned);
|
|
473
|
-
setInput("");
|
|
474
|
-
}
|
|
475
|
+
handleSend(e);
|
|
475
476
|
}
|
|
476
477
|
},
|
|
477
478
|
placeholder: "Ask anything...",
|
|
478
479
|
className: clsx(inputStyle, autoResize),
|
|
479
480
|
autoFocus: true,
|
|
480
|
-
disabled: inputDisabled || status !== "connected" || messages.length == 0 || escalationDeflected,
|
|
481
|
+
disabled: isBlockedInput || inputDisabled || status !== "connected" || messages.length == 0 || escalationDeflected,
|
|
481
482
|
rows: 1
|
|
482
483
|
}
|
|
483
484
|
),
|
|
@@ -490,7 +491,7 @@ const ChatWindow = ({
|
|
|
490
491
|
),
|
|
491
492
|
type: "submit",
|
|
492
493
|
title: "Send message",
|
|
493
|
-
disabled: inputDisabled || status !== "connected" || !input.trim() || messages.length == 0 || escalationDeflected,
|
|
494
|
+
disabled: isBlockedInput || inputDisabled || status !== "connected" || !input.trim() || messages.length == 0 || escalationDeflected,
|
|
494
495
|
children: /* @__PURE__ */ jsx(
|
|
495
496
|
"svg",
|
|
496
497
|
{
|
|
@@ -7,4 +7,4 @@ export declare const Chatbot: ({ project, projectEnv, menuOption, debug, }: {
|
|
|
7
7
|
projectEnv?: "dev" | "qa" | "uat" | "stg" | "prod";
|
|
8
8
|
menuOption?: "Support Virtual Agent" | string;
|
|
9
9
|
debug?: boolean;
|
|
10
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
}) => false | import("react/jsx-runtime").JSX.Element;
|
package/dist/Chatbot/Chatbot.js
CHANGED
|
@@ -20,7 +20,9 @@ const Chatbot = ({
|
|
|
20
20
|
reset,
|
|
21
21
|
startEscalation,
|
|
22
22
|
hasEscalated,
|
|
23
|
-
endEscalation
|
|
23
|
+
endEscalation,
|
|
24
|
+
unblockInput,
|
|
25
|
+
isBlockedInput
|
|
24
26
|
} = useOpenChat();
|
|
25
27
|
const { addMessage, addMessages, clearMessages, messages } = useMessages();
|
|
26
28
|
const clientRef = useRef(null);
|
|
@@ -98,7 +100,11 @@ const Chatbot = ({
|
|
|
98
100
|
const onChatMessageHandler = async (message) => {
|
|
99
101
|
console.log("Received message:", message);
|
|
100
102
|
if (["system", "virtual_agent", "user"].includes(message.$userType) && message.event === void 0) {
|
|
103
|
+
console.log(message.$userType, "not end user");
|
|
101
104
|
addMessage(message);
|
|
105
|
+
if (!hasEscalated && isBlockedInput) {
|
|
106
|
+
unblockInput?.();
|
|
107
|
+
}
|
|
102
108
|
return;
|
|
103
109
|
}
|
|
104
110
|
const eventName = message?.event;
|
|
@@ -117,6 +123,7 @@ const Chatbot = ({
|
|
|
117
123
|
addMessage(message);
|
|
118
124
|
if (["end_user"].includes(message.$userType)) {
|
|
119
125
|
if (!hasEscalated) {
|
|
126
|
+
console.log(message.$userType, "end user");
|
|
120
127
|
addMessage(typingMessage);
|
|
121
128
|
}
|
|
122
129
|
}
|
|
@@ -157,19 +164,28 @@ const Chatbot = ({
|
|
|
157
164
|
const onChatConnectedHandler = async () => {
|
|
158
165
|
setStatus("connected");
|
|
159
166
|
console.log("connected");
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
)
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
167
|
+
try {
|
|
168
|
+
if (!clientRef.current) {
|
|
169
|
+
console.error("Client not initialized on chat connected");
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const messages2 = await clientRef.current?.fetchMessages();
|
|
173
|
+
console.log("Fetched messages on chat connected:", messages2);
|
|
174
|
+
if (messages2) {
|
|
175
|
+
addMessages(messages2);
|
|
176
|
+
const hasEscalation = messages2.some(
|
|
177
|
+
(msg) => msg.$userType === "user" || ["escalationAccepted", "escalationStarted"].includes(
|
|
178
|
+
msg.event
|
|
179
|
+
)
|
|
180
|
+
);
|
|
181
|
+
console.log(hasEscalation);
|
|
182
|
+
if (hasEscalation) {
|
|
183
|
+
setScalationStarted(true);
|
|
184
|
+
startEscalation?.();
|
|
185
|
+
}
|
|
172
186
|
}
|
|
187
|
+
} catch (error) {
|
|
188
|
+
console.error("Error fetching messages on chat connected:", error);
|
|
173
189
|
}
|
|
174
190
|
};
|
|
175
191
|
const registerEventHandlers = () => {
|
|
@@ -341,7 +357,7 @@ const Chatbot = ({
|
|
|
341
357
|
console.error("Error sending preview message:", error);
|
|
342
358
|
}
|
|
343
359
|
};
|
|
344
|
-
return /* @__PURE__ */ jsxs("div", { className: project === "ufb" ? chatbotUFB : chatbotAXB, children: [
|
|
360
|
+
return menusLoaded && /* @__PURE__ */ jsxs("div", { className: project === "ufb" ? chatbotUFB : chatbotAXB, children: [
|
|
345
361
|
/* @__PURE__ */ jsx(Bubble, { onClick: handleClick }),
|
|
346
362
|
/* @__PURE__ */ jsx(
|
|
347
363
|
ChatWindow,
|
|
@@ -11,6 +11,9 @@ interface OpenChatState {
|
|
|
11
11
|
hasEscalated?: boolean;
|
|
12
12
|
startEscalation?: () => void;
|
|
13
13
|
endEscalation?: () => void;
|
|
14
|
+
isBlockedInput?: boolean;
|
|
15
|
+
blockInput?: () => void;
|
|
16
|
+
unblockInput?: () => void;
|
|
14
17
|
}
|
|
15
18
|
export declare const useOpenChat: import('zustand').UseBoundStore<import('zustand').StoreApi<OpenChatState>>;
|
|
16
19
|
export {};
|
|
@@ -17,12 +17,16 @@ const useOpenChat = create((set, get) => ({
|
|
|
17
17
|
hasOpenedOnce: false,
|
|
18
18
|
isOpen: false,
|
|
19
19
|
showThankyouMessage: false,
|
|
20
|
-
hasEscalated: false
|
|
20
|
+
hasEscalated: false,
|
|
21
|
+
isBlockedInput: false
|
|
21
22
|
}),
|
|
22
23
|
displayThankyouMessage: () => set({ showThankyouMessage: true }),
|
|
23
24
|
toggleThankyouMessage: () => set((state) => ({ showThankyouMessage: !state.showThankyouMessage })),
|
|
24
25
|
startEscalation: () => set({ hasEscalated: true }),
|
|
25
|
-
endEscalation: () => set({ hasEscalated: false })
|
|
26
|
+
endEscalation: () => set({ hasEscalated: false }),
|
|
27
|
+
isBlockedInput: false,
|
|
28
|
+
blockInput: () => set({ isBlockedInput: true }),
|
|
29
|
+
unblockInput: () => set({ isBlockedInput: false })
|
|
26
30
|
}));
|
|
27
31
|
export {
|
|
28
32
|
useOpenChat
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
@keyframes _13n1jqku {
|
|
2
2
|
0% {
|
|
3
|
-
background-position:
|
|
3
|
+
background-position: 200% 0;
|
|
4
4
|
}
|
|
5
5
|
100% {
|
|
6
|
-
background-position: 200% 0;
|
|
6
|
+
background-position: -200% 0;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
._13n1jqk0 {
|
|
@@ -301,8 +301,13 @@ button:has(span:hover) ._13n1jqk6 {
|
|
|
301
301
|
border-bottom-right-radius: 32px;
|
|
302
302
|
}
|
|
303
303
|
._13n1jqkv {
|
|
304
|
-
background: linear-gradient(
|
|
305
|
-
|
|
304
|
+
background: linear-gradient(
|
|
305
|
+
90deg,
|
|
306
|
+
var(--_1073cm819) 0%,
|
|
307
|
+
rgba(255,255,255,0.8) 50%,
|
|
308
|
+
var(--_1073cm819) 100%
|
|
309
|
+
);
|
|
310
|
+
background-size: 200% auto;
|
|
306
311
|
background-clip: text;
|
|
307
312
|
-webkit-background-clip: text;
|
|
308
313
|
color: transparent;
|
package/package.json
CHANGED