@servicetitan/titan-chatbot-ui 3.0.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/CHANGELOG.md +142 -0
- package/README.md +15 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-help-center.test.d.ts +2 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-help-center.test.d.ts.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-help-center.test.js +160 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-help-center.test.js.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-live.test.d.ts +2 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-live.test.d.ts.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-live.test.js +90 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-live.test.js.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.d.ts +2 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.d.ts.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.js +155 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.js.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot.test.d.ts +2 -0
- package/dist/components/chatbot/__tests-cy__/chatbot.test.d.ts.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot.test.js +139 -0
- package/dist/components/chatbot/__tests-cy__/chatbot.test.js.map +1 -0
- package/dist/components/chatbot/chatbot-to-chat-provider-adapter.d.ts +6 -0
- package/dist/components/chatbot/chatbot-to-chat-provider-adapter.d.ts.map +1 -0
- package/dist/components/chatbot/chatbot-to-chat-provider-adapter.js +21 -0
- package/dist/components/chatbot/chatbot-to-chat-provider-adapter.js.map +1 -0
- package/dist/components/chatbot/chatbot.d.ts +9 -0
- package/dist/components/chatbot/chatbot.d.ts.map +1 -0
- package/dist/components/chatbot/chatbot.js +68 -0
- package/dist/components/chatbot/chatbot.js.map +1 -0
- package/dist/components/chatbot/dialog/chatbot-restart-dialog.d.ts +6 -0
- package/dist/components/chatbot/dialog/chatbot-restart-dialog.d.ts.map +1 -0
- package/dist/components/chatbot/dialog/chatbot-restart-dialog.js +20 -0
- package/dist/components/chatbot/dialog/chatbot-restart-dialog.js.map +1 -0
- package/dist/components/chatbot/dialog/chatbot-restart-link.d.ts +4 -0
- package/dist/components/chatbot/dialog/chatbot-restart-link.d.ts.map +1 -0
- package/dist/components/chatbot/dialog/chatbot-restart-link.js +13 -0
- package/dist/components/chatbot/dialog/chatbot-restart-link.js.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.d.ts +2 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.js +65 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.js.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.d.ts +2 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.js +100 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.d.ts +3 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.js +13 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.d.ts +3 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.js +12 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.module.less +15 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-popover.d.ts +9 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-popover.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-popover.js +60 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-popover.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-popover.module.less +10 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback.d.ts +9 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback.js +17 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-link.d.ts +4 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-link.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-link.js +16 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-link.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.d.ts +5 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.js +24 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.js.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter.d.ts +8 -0
- package/dist/components/chatbot/filters/chatbot-filter.d.ts.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter.js +61 -0
- package/dist/components/chatbot/filters/chatbot-filter.js.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter.module.css +19 -0
- package/dist/components/chatbot/filters/chatbot-filters.d.ts +5 -0
- package/dist/components/chatbot/filters/chatbot-filters.d.ts.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filters.js +11 -0
- package/dist/components/chatbot/filters/chatbot-filters.js.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.d.ts +2 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.d.ts.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.js +85 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.js.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.d.ts +2 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.d.ts.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.js +57 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-links.d.ts +15 -0
- package/dist/components/chatbot/messages/chatbot-links.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-links.js +21 -0
- package/dist/components/chatbot/messages/chatbot-links.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-links.module.less +22 -0
- package/dist/components/chatbot/messages/chatbot-message-agent-footer.d.ts +8 -0
- package/dist/components/chatbot/messages/chatbot-message-agent-footer.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-agent-footer.js +13 -0
- package/dist/components/chatbot/messages/chatbot-message-agent-footer.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-answer-readonly.d.ts +6 -0
- package/dist/components/chatbot/messages/chatbot-message-answer-readonly.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-answer-readonly.js +17 -0
- package/dist/components/chatbot/messages/chatbot-message-answer-readonly.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-answer.d.ts +6 -0
- package/dist/components/chatbot/messages/chatbot-message-answer.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-answer.js +29 -0
- package/dist/components/chatbot/messages/chatbot-message-answer.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-answer.module.less +3 -0
- package/dist/components/chatbot/messages/chatbot-message-timeout.d.ts +6 -0
- package/dist/components/chatbot/messages/chatbot-message-timeout.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-timeout.js +17 -0
- package/dist/components/chatbot/messages/chatbot-message-timeout.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-typing.d.ts +8 -0
- package/dist/components/chatbot/messages/chatbot-message-typing.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-typing.js +27 -0
- package/dist/components/chatbot/messages/chatbot-message-typing.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-welcome.d.ts +3 -0
- package/dist/components/chatbot/messages/chatbot-message-welcome.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-welcome.js +4 -0
- package/dist/components/chatbot/messages/chatbot-message-welcome.js.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent-readonly.d.ts +6 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent-readonly.d.ts.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent-readonly.js +12 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent-readonly.js.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent.d.ts +6 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent.d.ts.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent.js +10 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent.js.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-user-readonly.d.ts +6 -0
- package/dist/components/chatbot/templates/chatbot-message-template-user-readonly.d.ts.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-user-readonly.js +7 -0
- package/dist/components/chatbot/templates/chatbot-message-template-user-readonly.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/stores/__tests__/message-feedback-guardrail.store.test.d.ts +2 -0
- package/dist/stores/__tests__/message-feedback-guardrail.store.test.d.ts.map +1 -0
- package/dist/stores/__tests__/message-feedback-guardrail.store.test.js +49 -0
- package/dist/stores/__tests__/message-feedback-guardrail.store.test.js.map +1 -0
- package/dist/stores/__tests__/message-feedback.store.test.d.ts +2 -0
- package/dist/stores/__tests__/message-feedback.store.test.d.ts.map +1 -0
- package/dist/stores/__tests__/message-feedback.store.test.js +114 -0
- package/dist/stores/__tests__/message-feedback.store.test.js.map +1 -0
- package/dist/stores/__tests__/session-feedback.store.test.d.ts +2 -0
- package/dist/stores/__tests__/session-feedback.store.test.d.ts.map +1 -0
- package/dist/stores/__tests__/session-feedback.store.test.js +39 -0
- package/dist/stores/__tests__/session-feedback.store.test.js.map +1 -0
- package/dist/stores/message-feedback-base.store.d.ts +8 -0
- package/dist/stores/message-feedback-base.store.d.ts.map +1 -0
- package/dist/stores/message-feedback-base.store.js +2 -0
- package/dist/stores/message-feedback-base.store.js.map +1 -0
- package/dist/stores/message-feedback-guardrail.store.d.ts +16 -0
- package/dist/stores/message-feedback-guardrail.store.d.ts.map +1 -0
- package/dist/stores/message-feedback-guardrail.store.js +85 -0
- package/dist/stores/message-feedback-guardrail.store.js.map +1 -0
- package/dist/stores/message-feedback.store.d.ts +23 -0
- package/dist/stores/message-feedback.store.d.ts.map +1 -0
- package/dist/stores/message-feedback.store.js +145 -0
- package/dist/stores/message-feedback.store.js.map +1 -0
- package/dist/stores/session-feedback.store.d.ts +15 -0
- package/dist/stores/session-feedback.store.d.ts.map +1 -0
- package/dist/stores/session-feedback.store.js +75 -0
- package/dist/stores/session-feedback.store.js.map +1 -0
- package/dist/utils/__tests__/axios-utils.test.d.ts +2 -0
- package/dist/utils/__tests__/axios-utils.test.d.ts.map +1 -0
- package/dist/utils/__tests__/axios-utils.test.js +33 -0
- package/dist/utils/__tests__/axios-utils.test.js.map +1 -0
- package/dist/utils/axios-utils.d.ts +5 -0
- package/dist/utils/axios-utils.d.ts.map +1 -0
- package/dist/utils/axios-utils.js +23 -0
- package/dist/utils/axios-utils.js.map +1 -0
- package/dist/utils/test-utils.d.ts +5 -0
- package/dist/utils/test-utils.d.ts.map +1 -0
- package/dist/utils/test-utils.js +17 -0
- package/dist/utils/test-utils.js.map +1 -0
- package/package.json +59 -0
- package/src/components/chatbot/__tests-cy__/chatbot-help-center.test.tsx +210 -0
- package/src/components/chatbot/__tests-cy__/chatbot-live.test.tsx +120 -0
- package/src/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.tsx +206 -0
- package/src/components/chatbot/__tests-cy__/chatbot.test.tsx +181 -0
- package/src/components/chatbot/chatbot-to-chat-provider-adapter.tsx +36 -0
- package/src/components/chatbot/chatbot.tsx +95 -0
- package/src/components/chatbot/dialog/chatbot-restart-dialog.tsx +36 -0
- package/src/components/chatbot/dialog/chatbot-restart-link.tsx +26 -0
- package/src/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.tsx +89 -0
- package/src/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.tsx +131 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.tsx +35 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-form.module.less +15 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-form.module.less.d.ts +4 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-form.tsx +65 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-popover.module.less +10 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-popover.module.less.d.ts +4 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-popover.tsx +200 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback.tsx +27 -0
- package/src/components/chatbot/feedback/chatbot-session-feedback-link.tsx +29 -0
- package/src/components/chatbot/feedback/chatbot-session-feedback-modal.tsx +96 -0
- package/src/components/chatbot/filters/chatbot-filter.module.css +19 -0
- package/src/components/chatbot/filters/chatbot-filter.module.css.d.ts +5 -0
- package/src/components/chatbot/filters/chatbot-filter.tsx +160 -0
- package/src/components/chatbot/filters/chatbot-filters.tsx +17 -0
- package/src/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.tsx +110 -0
- package/src/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.tsx +71 -0
- package/src/components/chatbot/messages/chatbot-links.module.less +22 -0
- package/src/components/chatbot/messages/chatbot-links.module.less.d.ts +4 -0
- package/src/components/chatbot/messages/chatbot-links.tsx +76 -0
- package/src/components/chatbot/messages/chatbot-message-agent-footer.tsx +35 -0
- package/src/components/chatbot/messages/chatbot-message-answer-readonly.tsx +39 -0
- package/src/components/chatbot/messages/chatbot-message-answer.module.less +3 -0
- package/src/components/chatbot/messages/chatbot-message-answer.module.less.d.ts +3 -0
- package/src/components/chatbot/messages/chatbot-message-answer.tsx +55 -0
- package/src/components/chatbot/messages/chatbot-message-timeout.tsx +20 -0
- package/src/components/chatbot/messages/chatbot-message-typing.tsx +39 -0
- package/src/components/chatbot/messages/chatbot-message-welcome.tsx +16 -0
- package/src/components/chatbot/templates/chatbot-message-template-agent-readonly.tsx +25 -0
- package/src/components/chatbot/templates/chatbot-message-template-agent.tsx +25 -0
- package/src/components/chatbot/templates/chatbot-message-template-user-readonly.tsx +16 -0
- package/src/cypress.d.ts +10 -0
- package/src/index.ts +5 -0
- package/src/stores/__tests__/message-feedback-guardrail.store.test.ts +61 -0
- package/src/stores/__tests__/message-feedback.store.test.ts +121 -0
- package/src/stores/__tests__/session-feedback.store.test.ts +47 -0
- package/src/stores/message-feedback-base.store.ts +8 -0
- package/src/stores/message-feedback-guardrail.store.ts +60 -0
- package/src/stores/message-feedback.store.ts +113 -0
- package/src/stores/session-feedback.store.ts +44 -0
- package/src/utils/__tests__/axios-utils.test.ts +40 -0
- package/src/utils/axios-utils.ts +25 -0
- package/src/utils/test-utils.ts +22 -0
- package/tsconfig.json +25 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
@import '@servicetitan/tokens/dist/tokens.less';
|
|
2
|
+
|
|
3
|
+
.formItem {
|
|
4
|
+
margin-bottom: @spacing-2;
|
|
5
|
+
white-space: nowrap;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.formItem.textArea {
|
|
9
|
+
margin-bottom: @spacing-1;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.formItem.textArea textarea {
|
|
13
|
+
resize: none;
|
|
14
|
+
height: 4lh;
|
|
15
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Models } from '@servicetitan/titan-chatbot-api';
|
|
2
|
+
import { FC } from 'react';
|
|
3
|
+
interface IChatbotMessageFeedbackProps {
|
|
4
|
+
botMessage: Models.IBotMessage;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const ChatbotMessageFeedbackPopover: FC<IChatbotMessageFeedbackProps>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=chatbot-message-feedback-popover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-feedback-popover.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback-popover.tsx"],"names":[],"mappings":"AAaA,OAAO,EAA0B,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAGjF,OAAO,EAAE,EAAE,EAAyB,MAAM,OAAO,CAAC;AAQlD,UAAU,4BAA4B;IAClC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,6BAA6B,EAAE,EAAE,CAAC,4BAA4B,CA0K1E,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { BodyText, Button, ButtonGroup, Eyebrow, Headline, Icon, Link, Popover, Spinner, Stack, } from '@servicetitan/design-system';
|
|
3
|
+
import { provide, useDependencies } from '@servicetitan/react-ioc';
|
|
4
|
+
import { CHATBOT_UI_STORE_TOKEN, Models } from '@servicetitan/titan-chatbot-api';
|
|
5
|
+
import classNames from 'classnames';
|
|
6
|
+
import { observer } from 'mobx-react';
|
|
7
|
+
import { useCallback, useState } from 'react';
|
|
8
|
+
import { MessageFeedbackGuardrailStore } from '../../../stores/message-feedback-guardrail.store';
|
|
9
|
+
import { MessageFeedbackStore } from '../../../stores/message-feedback.store';
|
|
10
|
+
import { ChatbotMessageFeedbackForm } from './chatbot-message-feedback-form';
|
|
11
|
+
import { ChatbotMessageFeedbackFormGuardrail } from './chatbot-message-feedback-form-guardrail';
|
|
12
|
+
import * as Styles from './chatbot-message-feedback-popover.module.less';
|
|
13
|
+
export const ChatbotMessageFeedbackPopover = provide({
|
|
14
|
+
singletons: [MessageFeedbackStore, MessageFeedbackGuardrailStore],
|
|
15
|
+
})(observer(({ botMessage, className }) => {
|
|
16
|
+
var _a;
|
|
17
|
+
const [chatbotUiStore, messageFeedbackStore, messageFeedbackGuardrailStore] = useDependencies(CHATBOT_UI_STORE_TOKEN, MessageFeedbackStore, MessageFeedbackGuardrailStore);
|
|
18
|
+
const [feedbackState, setFeedbackState] = useState(Models.ChatbotFeedbackState.None);
|
|
19
|
+
const [isPopoverOpen, setIsPopoverOpen] = useState(false);
|
|
20
|
+
const title = (_a = chatbotUiStore.customizations.feedback) === null || _a === void 0 ? void 0 : _a.title;
|
|
21
|
+
const isGuardrail = botMessage.isGuardrailed;
|
|
22
|
+
const feedbackStore = isGuardrail
|
|
23
|
+
? messageFeedbackGuardrailStore
|
|
24
|
+
: messageFeedbackStore;
|
|
25
|
+
const sendFeedback = useCallback(async (feedback) => {
|
|
26
|
+
setFeedbackState(Models.ChatbotFeedbackState.Sent);
|
|
27
|
+
try {
|
|
28
|
+
const result = await chatbotUiStore.sendMessageFeedback(botMessage, feedback);
|
|
29
|
+
setFeedbackState(result !== null && result !== void 0 ? result : Models.ChatbotFeedbackState.Success);
|
|
30
|
+
}
|
|
31
|
+
catch (_a) {
|
|
32
|
+
setFeedbackState(Models.ChatbotFeedbackState.Failure);
|
|
33
|
+
}
|
|
34
|
+
}, [chatbotUiStore, botMessage]);
|
|
35
|
+
const handleFeedbackThumbsUp = useCallback(async () => {
|
|
36
|
+
await sendFeedback(new Models.Feedback({ rating: Models.FeedbackRatings.ThumbsUp }));
|
|
37
|
+
}, [sendFeedback]);
|
|
38
|
+
const handleFeedbackSubmit = useCallback(async () => {
|
|
39
|
+
const validateResult = await feedbackStore.formState.validate();
|
|
40
|
+
if (validateResult.hasError) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const feedback = feedbackStore.export();
|
|
44
|
+
await sendFeedback(feedback);
|
|
45
|
+
}, [feedbackStore, sendFeedback]);
|
|
46
|
+
if (feedbackState === Models.ChatbotFeedbackState.Sent) {
|
|
47
|
+
return (_jsx(Stack, { direction: "row", spacing: "1", alignItems: "center", className: classNames(className, Styles.feedback), "data-cy": "titan-chatbot-message-feedback-loading", children: _jsx(Spinner, { size: "tiny" }) }));
|
|
48
|
+
}
|
|
49
|
+
if (feedbackState === Models.ChatbotFeedbackState.Success) {
|
|
50
|
+
return (_jsxs(Stack, { direction: "row", spacing: "1", alignItems: "center", className: classNames(className, Styles.feedback), children: [_jsx(Icon, { name: "check", className: "c-green-500" }), _jsx(BodyText, { className: classNames('c-neutral-100', Styles.feedbackResultText), "data-cy": "titan-chatbot-message-feedback-success", children: "Thanks for your feedback." })] }));
|
|
51
|
+
}
|
|
52
|
+
if (feedbackState === Models.ChatbotFeedbackState.Failure) {
|
|
53
|
+
// Feedback is done: either user clicked thumbs up or submitted feedback
|
|
54
|
+
return (_jsxs(Stack, { direction: "row", spacing: "1", alignItems: "center", className: classNames(className, Styles.feedback), "data-cy": "titan-chatbot-message-feedback-failed", children: [_jsx(Icon, { name: "error", className: "c-red-500" }), _jsx(BodyText, { className: classNames('c-red-100', Styles.feedbackResultText), children: "Failed to send feedback." })] }));
|
|
55
|
+
}
|
|
56
|
+
return (_jsxs(Stack, { direction: "row", spacing: "1", alignItems: "center", className: className, children: [!isGuardrail && title && _jsx(Eyebrow, { children: title }), !isGuardrail && (_jsx(Button, { iconName: "thumb_up", xsmall: true, fill: "subtle", "aria-label": "thumb up", onClick: handleFeedbackThumbsUp, "data-cy": "titan-chatbot-message-feedback-thumbs-up" })), _jsx(Popover, { trigger: isGuardrail ? (_jsx(Link, { onClick: () => setIsPopoverOpen(true), className: "fs-1 tt-uppercase", color: "blue", "data-cy": "titan-chatbot-message-feedback-provide-answer", children: "Provide correct answer" })) : (_jsx(Button, { iconName: "thumb_down", xsmall: true, fill: "subtle", onClick: () => setIsPopoverOpen(true), "aria-label": "thumb down", "data-cy": "titan-chatbot-message-feedback-thumbs-down" })), header: _jsx(Stack, { justifyContent: "space-between", alignItems: "center", className: "w-100", children: _jsx(Headline, { size: "small", children: isGuardrail
|
|
57
|
+
? 'Provide correct answer'
|
|
58
|
+
: 'Why didn’t this answer solve your problem?' }) }), onClickOutside: () => setIsPopoverOpen(false), headerAlign: "space-between", footer: _jsx(ButtonGroup, { children: _jsx(Button, { primary: true, disabled: !feedbackStore.isValid, onClick: handleFeedbackSubmit, "data-cy": "titan-chatbot-message-feedback-submit", children: "Submit" }) }), className: "feedback-form-popover-body", footerAlign: "right", direction: "tr", width: "m", padding: "m", autoFlipVertically: true, autoFlipHorizontally: true, open: isPopoverOpen, children: isGuardrail ? (_jsx(ChatbotMessageFeedbackFormGuardrail, {})) : (_jsx(ChatbotMessageFeedbackForm, {})) })] }));
|
|
59
|
+
}));
|
|
60
|
+
//# sourceMappingURL=chatbot-message-feedback-popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-feedback-popover.js","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback-popover.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Models } from '@servicetitan/titan-chatbot-api';
|
|
2
|
+
import { FC } from 'react';
|
|
3
|
+
interface IChatbotFeedbackProps {
|
|
4
|
+
botMessage: Models.IBotMessage;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const ChatbotMessageFeedback: FC<IChatbotFeedbackProps>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=chatbot-message-feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-feedback.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback.tsx"],"names":[],"mappings":"AACA,OAAO,EAA0B,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAG3B,UAAU,qBAAqB;IAC3B,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,qBAAqB,CAe5D,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useDependencies } from '@servicetitan/react-ioc';
|
|
3
|
+
import { CHATBOT_UI_STORE_TOKEN } from '@servicetitan/titan-chatbot-api';
|
|
4
|
+
import { observer } from 'mobx-react';
|
|
5
|
+
import { ChatbotMessageFeedbackPopover } from './chatbot-message-feedback-popover';
|
|
6
|
+
export const ChatbotMessageFeedback = observer(({ botMessage, className }) => {
|
|
7
|
+
var _a, _b;
|
|
8
|
+
const [chatbotUiStore] = useDependencies(CHATBOT_UI_STORE_TOKEN);
|
|
9
|
+
// We show feedback for all messages with normal answer and for guardrailed messages if internal chatbot setting is enabled
|
|
10
|
+
const showGuardrailFeedback = Boolean((_b = (_a = chatbotUiStore.customizations) === null || _a === void 0 ? void 0 : _a.feedback) === null || _b === void 0 ? void 0 : _b.showGuardrailFeedback);
|
|
11
|
+
const isFeedbackVisible = showGuardrailFeedback || !botMessage.isGuardrailed;
|
|
12
|
+
if (!isFeedbackVisible) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
return _jsx(ChatbotMessageFeedbackPopover, { className: className, botMessage: botMessage });
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=chatbot-message-feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-feedback.js","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAU,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAOnF,MAAM,CAAC,MAAM,sBAAsB,GAA8B,QAAQ,CACrE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE;;IAC1B,MAAM,CAAC,cAAc,CAAC,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAEjE,2HAA2H;IAC3H,MAAM,qBAAqB,GAAG,OAAO,CACjC,MAAA,MAAA,cAAc,CAAC,cAAc,0CAAE,QAAQ,0CAAE,qBAAqB,CACjE,CAAC;IACF,MAAM,iBAAiB,GAAG,qBAAqB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IAE7E,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAC,6BAA6B,IAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAI,CAAC;AAC3F,CAAC,CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-session-feedback-link.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-session-feedback-link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAC;AAG5D,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,SAAS,CAwBpD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Link } from '@servicetitan/design-system';
|
|
3
|
+
import { Fragment, useCallback, useState } from 'react';
|
|
4
|
+
import { ChatbotSessionFeedbackModal } from './chatbot-session-feedback-modal';
|
|
5
|
+
export const ChatbotSessionFeedbackLink = ({ children, onClick, ...rest }) => {
|
|
6
|
+
const [isFeedbackOpen, setIsFeedbackOpen] = useState(false);
|
|
7
|
+
const handleFeedbackOpen = useCallback(() => {
|
|
8
|
+
setIsFeedbackOpen(true);
|
|
9
|
+
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
10
|
+
}, [onClick]);
|
|
11
|
+
const handleFeedback = useCallback(() => {
|
|
12
|
+
setIsFeedbackOpen(false);
|
|
13
|
+
}, []);
|
|
14
|
+
return (_jsxs(Fragment, { children: [_jsx(Link, { ...rest, onClick: handleFeedbackOpen, "data-cy": "titan-chatbot-session-feedback-link", children: children }), isFeedbackOpen && _jsx(ChatbotSessionFeedbackModal, { onClose: handleFeedback })] }));
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=chatbot-session-feedback-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-session-feedback-link.js","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-session-feedback-link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAa,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAM,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,MAAM,CAAC,MAAM,0BAA0B,GAAkB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;IACxF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,aAAP,OAAO,uBAAP,OAAO,EAAI,CAAC;IAChB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACH,MAAC,QAAQ,eACL,KAAC,IAAI,OACG,IAAI,EACR,OAAO,EAAE,kBAAkB,aACnB,qCAAqC,YAE5C,QAAQ,GACN,EACN,cAAc,IAAI,KAAC,2BAA2B,IAAC,OAAO,EAAE,cAAc,GAAI,IACpE,CACd,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-session-feedback-modal.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-session-feedback-modal.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAe,MAAM,OAAO,CAAC;AAGxC,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAwFnE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { BodyText, Button, ButtonGroup, Form, Modal, Stack } from '@servicetitan/design-system';
|
|
3
|
+
import { provide, useDependencies } from '@servicetitan/react-ioc';
|
|
4
|
+
import { CHATBOT_UI_STORE_TOKEN } from '@servicetitan/titan-chatbot-api';
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
6
|
+
import { useCallback } from 'react';
|
|
7
|
+
import { SessionFeedbackStore } from '../../../stores/session-feedback.store';
|
|
8
|
+
export const ChatbotSessionFeedbackModal = provide({
|
|
9
|
+
singletons: [SessionFeedbackStore],
|
|
10
|
+
})(observer(({ onClose }) => {
|
|
11
|
+
const [chatbotFeedbackStore, chatbotUiStore] = useDependencies(SessionFeedbackStore, CHATBOT_UI_STORE_TOKEN);
|
|
12
|
+
const handleClose = useCallback(() => {
|
|
13
|
+
onClose();
|
|
14
|
+
}, [onClose]);
|
|
15
|
+
const handleSubmit = useCallback(() => {
|
|
16
|
+
chatbotUiStore.sendSessionFeedback(chatbotFeedbackStore.feedback);
|
|
17
|
+
onClose();
|
|
18
|
+
}, [chatbotUiStore, chatbotFeedbackStore, onClose]);
|
|
19
|
+
const handleThumbs = useCallback((isThumbsUp) => {
|
|
20
|
+
chatbotFeedbackStore.formState.$.thumbs.onChange(isThumbsUp ? 1 : -1);
|
|
21
|
+
}, [chatbotFeedbackStore]);
|
|
22
|
+
return (_jsx(Modal, { onClose: handleClose, open: true, title: "Give Feedback on Titan", size: Modal.Sizes.S, footer: _jsxs(ButtonGroup, { children: [_jsx(Button, { onClick: handleClose, "data-cy": "titan-chatbot-session-feedback-cancel", children: "Cancel" }), _jsx(Button, { onClick: handleSubmit, primary: true, disabled: !chatbotFeedbackStore.isValid, "data-cy": "titan-chatbot-session-feedback-submit", children: "Submit Feedback" })] }), "data-cy": "titan-chatbot-session-feedback-modal", children: _jsxs(Stack, { direction: "column", spacing: "3", children: [_jsxs(Stack, { direction: "column", spacing: "2", children: [_jsx(BodyText, { children: "Was Titan able to help solve your problem?" }), _jsxs(ButtonGroup, { children: [_jsx(Button, { small: true, "aria-label": "Thumbs Up", title: "Thumbs Up", iconName: "thumb_up", fill: "outline", selected: chatbotFeedbackStore.isThumbsUp, onClick: () => handleThumbs(true), "data-cy": "titan-chatbot-session-feedback-thumbs-up" }), _jsx(Button, { small: true, fill: "outline", "aria-label": "Thumbs Down", title: "Thumbs Down", selected: chatbotFeedbackStore.isThumbsDown, iconName: "thumb_down", onClick: () => handleThumbs(false), "data-cy": "titan-chatbot-session-feedback-thumbs-down" })] })] }), _jsx(Form.TextArea, { label: "Tell us more", maxRows: 3, value: chatbotFeedbackStore.formState.$.comment.value, onChange: chatbotFeedbackStore.formState.$.comment.onChangeHandler, "data-cy": "titan-chatbot-session-feedback-comment" })] }) }));
|
|
23
|
+
}));
|
|
24
|
+
//# sourceMappingURL=chatbot-session-feedback-modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-session-feedback-modal.js","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-session-feedback-modal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-filter.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/filters/chatbot-filter.tsx"],"names":[],"mappings":"AAUA,OAAO,EAA0B,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAGjF,OAAO,EAAe,EAAE,EAAqD,MAAM,OAAO,CAAC;AAG3F,UAAU,gBAAgB;IACtB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,gBAAgB,CA2I1C,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { BodyText, Button, FilterButton, Input, OptionList, Popover, Stack, } from '@servicetitan/design-system';
|
|
3
|
+
import { useDependencies } from '@servicetitan/react-ioc';
|
|
4
|
+
import { CHATBOT_UI_STORE_TOKEN } from '@servicetitan/titan-chatbot-api';
|
|
5
|
+
import classNames from 'classnames';
|
|
6
|
+
import { observer } from 'mobx-react';
|
|
7
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
8
|
+
import * as Style from './chatbot-filter.module.css';
|
|
9
|
+
export const ChatFilter = observer(({ filter }) => {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
const [filterText, setFilterText] = useState('');
|
|
12
|
+
const [open, setOpen] = useState(false);
|
|
13
|
+
const [listMaxHeight, setListMaxHeight] = useState(400);
|
|
14
|
+
const [{ filterStore }] = useDependencies(CHATBOT_UI_STORE_TOKEN);
|
|
15
|
+
const filterLabel = filterStore.getFilterLabel((_a = filter.displayName) !== null && _a !== void 0 ? _a : filter.key);
|
|
16
|
+
const triggerRef = useRef(null);
|
|
17
|
+
const allOptions = useMemo(() => {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
return ((_b = (_a = filter.subOptions) === null || _a === void 0 ? void 0 : _a.map(filterSelectable => {
|
|
20
|
+
var _a;
|
|
21
|
+
return ({
|
|
22
|
+
text: filterStore.getFilterLabel((_a = filterSelectable.displayName) !== null && _a !== void 0 ? _a : filterSelectable.key),
|
|
23
|
+
value: filterSelectable.key,
|
|
24
|
+
});
|
|
25
|
+
})) !== null && _b !== void 0 ? _b : []);
|
|
26
|
+
}, [filterStore, filter.subOptions]);
|
|
27
|
+
const filteredOptions = useMemo(() => {
|
|
28
|
+
return allOptions.filter(opt => opt.text && opt.text.toLowerCase().indexOf(filterText.toLowerCase()) > -1);
|
|
29
|
+
}, [filterText, allOptions]);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (triggerRef.current) {
|
|
32
|
+
const triggerElement = triggerRef.current;
|
|
33
|
+
const boundingRect = triggerElement.getBoundingClientRect();
|
|
34
|
+
const headerFooterSize = 160;
|
|
35
|
+
setListMaxHeight(boundingRect.top - headerFooterSize);
|
|
36
|
+
}
|
|
37
|
+
}, []);
|
|
38
|
+
const handleToggle = () => {
|
|
39
|
+
setOpen(prev => !prev);
|
|
40
|
+
};
|
|
41
|
+
const handleCancel = () => {
|
|
42
|
+
setOpen(false);
|
|
43
|
+
};
|
|
44
|
+
const handleFilterChange = useCallback((event) => {
|
|
45
|
+
setFilterText(event.target.value);
|
|
46
|
+
}, []);
|
|
47
|
+
const handleItemChecked = useCallback((value, checked) => {
|
|
48
|
+
if (checked) {
|
|
49
|
+
filterStore.selectOption(filter.key, value);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
filterStore.deselectOption(filter.key, value);
|
|
53
|
+
}
|
|
54
|
+
}, [filterStore, filter]);
|
|
55
|
+
return (_jsx(Popover, { el: "span", direction: "t", padding: "s", onClickOutside: handleCancel, open: open, portal: true, className: classNames(Style.filterPopover), scrollHeight: `${listMaxHeight}px`, header: _jsx(Stack, { className: classNames('w-100 p-x-2 p-y-half'), children: _jsx(Input, { onChange: handleFilterChange, value: filterText, size: "small", icon: "search", iconPosition: "left", placeholder: "Search", className: "w-100", "data-cy": "titan-chatbot-filter-search" }) }), footer: _jsxs(Stack, { direction: "row", className: "w-100 p-l-2", alignItems: "baseline", children: [_jsx(BodyText, { size: "small", className: Style.filterBottomText, children: "Select" }), _jsx(Button, { fill: "subtle", primary: true, xsmall: true, onClick: () => {
|
|
56
|
+
filterStore.selectAll(filter.key);
|
|
57
|
+
}, className: Style.filterBottomButton, "data-cy": "titan-chatbot-filter-all", children: "All" }), _jsx(Button, { fill: "subtle", primary: true, xsmall: true, onClick: () => {
|
|
58
|
+
filterStore.deselectAll(filter.key);
|
|
59
|
+
}, className: Style.filterBottomButton, "data-cy": "titan-chatbot-filter-none", children: "None" })] }), trigger: _jsx(FilterButton, { ref: triggerRef, onClick: handleToggle, value: ((_b = filterStore.selectedOptions[filter.key]) === null || _b === void 0 ? void 0 : _b.length) || undefined, label: filterLabel, expandIcon: open, disabled: false, "data-cy": "titan-chatbot-filter-button" }), children: allOptions.length > 0 ? (_jsx(OptionList, { multiple: true, options: filteredOptions, onChange: handleItemChecked, value: filterStore.selectedOptions[filter.key] || [], "data-cy": "titan-chatbot-filter-options" })) : (_jsx(BodyText, { className: "ta-center", size: "small", subdued: true, children: "No items available" })) }));
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=chatbot-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-filter.js","sourceRoot":"","sources":["../../../../src/components/chatbot/filters/chatbot-filter.tsx"],"names":[],"mappings":";AAAA,OAAO,EACH,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,KAAK,EACL,UAAU,EACV,OAAO,EACP,KAAK,GACR,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAU,MAAM,iCAAiC,CAAC;AACjF,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAmB,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3F,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAC;AAMrD,MAAM,CAAC,MAAM,UAAU,GAAyB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAoB,EAAE,EAAE;;IACtF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc,CAAC,MAAA,MAAM,CAAC,WAAW,mCAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;;QAC5B,OAAO,CACH,MAAA,MAAA,MAAM,CAAC,UAAU,0CAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE;;YAAC,OAAA,CAAC;gBACxC,IAAI,EAAE,WAAW,CAAC,cAAc,CAC5B,MAAA,gBAAgB,CAAC,WAAW,mCAAI,gBAAgB,CAAC,GAAG,CACvD;gBACD,KAAK,EAAE,gBAAgB,CAAC,GAAG;aAC9B,CAAC,CAAA;SAAA,CAAC,mCAAI,EAAE,CACZ,CAAC;IACN,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAErC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,OAAO,UAAU,CAAC,MAAM,CACpB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CACnF,CAAC;IACN,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC;YAC1C,MAAM,YAAY,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;YAC5D,MAAM,gBAAgB,GAAG,GAAG,CAAC;YAC7B,gBAAgB,CAAC,YAAY,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,OAAO,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,KAAoC,EAAE,EAAE;QAC5E,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,iBAAiB,GAAG,WAAW,CACjC,CAAC,KAAa,EAAE,OAAgB,EAAE,EAAE;QAChC,IAAI,OAAO,EAAE,CAAC;YACV,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACJ,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;IACL,CAAC,EACD,CAAC,WAAW,EAAE,MAAM,CAAC,CACxB,CAAC;IAEF,OAAO,CACH,KAAC,OAAO,IACJ,EAAE,EAAC,MAAM,EACT,SAAS,EAAC,GAAG,EACb,OAAO,EAAC,GAAG,EACX,cAAc,EAAE,YAAY,EAC5B,IAAI,EAAE,IAAI,EACV,MAAM,QACN,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,EAC1C,YAAY,EAAE,GAAG,aAAa,IAAI,EAClC,MAAM,EACF,KAAC,KAAK,IAAC,SAAS,EAAE,UAAU,CAAC,sBAAsB,CAAC,YAChD,KAAC,KAAK,IACF,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,QAAQ,EACb,YAAY,EAAC,MAAM,EACnB,WAAW,EAAC,QAAQ,EACpB,SAAS,EAAC,OAAO,aACT,6BAA6B,GACvC,GACE,EAEZ,MAAM,EACF,MAAC,KAAK,IAAC,SAAS,EAAC,KAAK,EAAC,SAAS,EAAC,aAAa,EAAC,UAAU,EAAC,UAAU,aAChE,KAAC,QAAQ,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,uBAE7C,EACX,KAAC,MAAM,IACH,IAAI,EAAC,QAAQ,EACb,OAAO,QACP,MAAM,QACN,OAAO,EAAE,GAAG,EAAE;wBACV,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtC,CAAC,EACD,SAAS,EAAE,KAAK,CAAC,kBAAkB,aAC3B,0BAA0B,oBAG7B,EACT,KAAC,MAAM,IACH,IAAI,EAAC,QAAQ,EACb,OAAO,QACP,MAAM,QACN,OAAO,EAAE,GAAG,EAAE;wBACV,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACxC,CAAC,EACD,SAAS,EAAE,KAAK,CAAC,kBAAkB,aAC3B,2BAA2B,qBAG9B,IACL,EAEZ,OAAO,EACH,KAAC,YAAY,IACT,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,CAAA,MAAA,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAE,MAAM,KAAI,SAAS,EACnE,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,KAAK,aACP,6BAA6B,GACvC,YAGL,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACrB,KAAC,UAAU,IACP,QAAQ,QACR,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,aAC5C,8BAA8B,GACxC,CACL,CAAC,CAAC,CAAC,CACA,KAAC,QAAQ,IAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,yCAEzC,CACd,GACK,CACb,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
@import '@servicetitan/tokens/dist/tokens.css';
|
|
2
|
+
|
|
3
|
+
.filterBottomButton {
|
|
4
|
+
padding-left: var(--spacing-half);
|
|
5
|
+
padding-right: var(--spacing-half);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.filterBottomText {
|
|
9
|
+
padding-right: var(--spacing-half);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.filterPopover {
|
|
13
|
+
:global(.Popover__header),
|
|
14
|
+
:global(.Popover__content),
|
|
15
|
+
:global(.Popover__footer) {
|
|
16
|
+
padding-left: var(--spacing-1);
|
|
17
|
+
padding-right: var(--spacing-1);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-filters.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/filters/chatbot-filters.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAG3B,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CASjD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Stack } from '@servicetitan/design-system';
|
|
3
|
+
import { useDependencies } from '@servicetitan/react-ioc';
|
|
4
|
+
import { CHATBOT_UI_STORE_TOKEN } from '@servicetitan/titan-chatbot-api';
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
6
|
+
import { ChatFilter } from './chatbot-filter';
|
|
7
|
+
export const ChatFilters = observer(({ className }) => {
|
|
8
|
+
const [{ filterStore }] = useDependencies(CHATBOT_UI_STORE_TOKEN);
|
|
9
|
+
return filterStore.filters.length > 0 ? (_jsx(Stack, { className: className, spacing: "1", "data-cy": "titan-chatbot-filters", children: filterStore.filters.map(filter => (_jsx(ChatFilter, { filter: filter }, filter.key))) })) : null;
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=chatbot-filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-filters.js","sourceRoot":"","sources":["../../../../src/components/chatbot/filters/chatbot-filters.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAA+B,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;IAC9E,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAClE,OAAO,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACpC,KAAC,KAAK,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,GAAG,aAAS,uBAAuB,YACnE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAC/B,KAAC,UAAU,IAAkB,MAAM,EAAE,MAAM,IAA1B,MAAM,CAAC,GAAG,CAAoB,CAClD,CAAC,GACE,CACX,CAAC,CAAC,CAAC,IAAI,CAAC;AACb,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-answer.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Container, Provider } from '@servicetitan/react-ioc';
|
|
3
|
+
import { mockChatMessageModelText } from '@servicetitan/titan-chat-ui-common';
|
|
4
|
+
import { CHATBOT_UI_STORE_TOKEN, ChatbotUiStore, ModelsMocks, } from '@servicetitan/titan-chatbot-api';
|
|
5
|
+
import { ChatUiSelectors } from '@servicetitan/titan-chatbot-ui-cypress';
|
|
6
|
+
import { mount } from 'cypress/react';
|
|
7
|
+
import { ChatbotMessageAnswer } from '../chatbot-message-answer';
|
|
8
|
+
const initContainer = () => {
|
|
9
|
+
const container = new Container();
|
|
10
|
+
container.bind(CHATBOT_UI_STORE_TOKEN).to(ChatbotUiStore).inSingletonScope();
|
|
11
|
+
return container;
|
|
12
|
+
};
|
|
13
|
+
describe('<ChatbotMessageAnswer />', () => {
|
|
14
|
+
let container;
|
|
15
|
+
let uiStore;
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
container = initContainer();
|
|
18
|
+
uiStore = container.get(CHATBOT_UI_STORE_TOKEN);
|
|
19
|
+
cy.viewport(780, 800);
|
|
20
|
+
});
|
|
21
|
+
const renderComponent = (message) => {
|
|
22
|
+
const Wrapper = () => (_jsx(Provider, { singletons: [
|
|
23
|
+
{
|
|
24
|
+
provide: CHATBOT_UI_STORE_TOKEN,
|
|
25
|
+
useValue: uiStore,
|
|
26
|
+
},
|
|
27
|
+
], children: _jsx(ChatbotMessageAnswer, { message: message }) }));
|
|
28
|
+
mount(_jsx(Wrapper, {}));
|
|
29
|
+
};
|
|
30
|
+
it('should render MultilineText and ChatbotLinks when chatbotMessageData exists', () => {
|
|
31
|
+
cy.clock();
|
|
32
|
+
cy.spy(uiStore, 'triggerScroll').as('triggerScroll');
|
|
33
|
+
const botMessage = ModelsMocks.mockBotMessage({
|
|
34
|
+
scoredUrls: ModelsMocks.mockScoredUrls(),
|
|
35
|
+
});
|
|
36
|
+
const message = mockChatMessageModelText(true, {
|
|
37
|
+
message: 'Test message',
|
|
38
|
+
data: botMessage,
|
|
39
|
+
});
|
|
40
|
+
uiStore.setMessages([message]);
|
|
41
|
+
renderComponent(message);
|
|
42
|
+
ChatUiSelectors.chatbotMessageAnswer.should('contain.text', 'Test message');
|
|
43
|
+
ChatUiSelectors.chatbotLinksLink.should('not.be.visible');
|
|
44
|
+
// Expand links
|
|
45
|
+
ChatUiSelectors.chatbotLinksMore
|
|
46
|
+
.should('be.visible')
|
|
47
|
+
.should('have.text', 'Learn more')
|
|
48
|
+
.click();
|
|
49
|
+
cy.tick(100);
|
|
50
|
+
cy.get('@triggerScroll').should('be.called');
|
|
51
|
+
ChatUiSelectors.chatbotLinksLink.should('be.visible').should('have.length', 2);
|
|
52
|
+
// Collapse links
|
|
53
|
+
ChatUiSelectors.chatbotLinksMore
|
|
54
|
+
.should('be.visible')
|
|
55
|
+
.should('have.text', 'Learn less')
|
|
56
|
+
.click();
|
|
57
|
+
cy.tick(100);
|
|
58
|
+
cy.get('@triggerScroll').should('be.called');
|
|
59
|
+
ChatUiSelectors.chatbotLinksLink.should('not.be.visible');
|
|
60
|
+
});
|
|
61
|
+
it('should not render ChatbotLinks when no links exist', () => {
|
|
62
|
+
const botMessage = ModelsMocks.mockBotMessage({
|
|
63
|
+
scoredUrls: [],
|
|
64
|
+
});
|
|
65
|
+
const message = mockChatMessageModelText(true, {
|
|
66
|
+
message: 'Test message',
|
|
67
|
+
data: botMessage,
|
|
68
|
+
});
|
|
69
|
+
renderComponent(message);
|
|
70
|
+
ChatUiSelectors.chatbotMessageAnswer.should('contain.text', 'Test message');
|
|
71
|
+
ChatUiSelectors.chatbotLinksMore.should('not.exist');
|
|
72
|
+
ChatUiSelectors.chatbotLinksLink.should('not.exist');
|
|
73
|
+
});
|
|
74
|
+
it('should not render ChatbotLinks when chatbotMessageData is undefined', () => {
|
|
75
|
+
const message = mockChatMessageModelText(true, {
|
|
76
|
+
message: 'Test message',
|
|
77
|
+
data: undefined,
|
|
78
|
+
});
|
|
79
|
+
renderComponent(message);
|
|
80
|
+
ChatUiSelectors.chatbotMessageAnswer.should('contain.text', 'Test message');
|
|
81
|
+
ChatUiSelectors.chatbotLinksMore.should('not.exist');
|
|
82
|
+
ChatUiSelectors.chatbotLinksLink.should('not.exist');
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=chatbot-message-answer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-answer.test.js","sourceRoot":"","sources":["../../../../../src/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-typing.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ChatParticipantIcon } from '@servicetitan/titan-chat-ui-common';
|
|
3
|
+
import { ChatUiSelectors } from '@servicetitan/titan-chatbot-ui-cypress';
|
|
4
|
+
import { mount } from 'cypress/react';
|
|
5
|
+
import { ChatbotMessageTyping } from '../chatbot-message-typing';
|
|
6
|
+
describe('ChatbotMessageTyping', () => {
|
|
7
|
+
function render(icon) {
|
|
8
|
+
const avatar = {
|
|
9
|
+
name: 'Test User Name',
|
|
10
|
+
icon,
|
|
11
|
+
};
|
|
12
|
+
mount(_jsx(ChatbotMessageTyping, { avatar: avatar }));
|
|
13
|
+
ChatUiSelectors.chatMessageTyping.should('be.visible');
|
|
14
|
+
ChatUiSelectors.chatMessageTypingDots.should('be.visible');
|
|
15
|
+
}
|
|
16
|
+
it('should render message with bot icon', () => {
|
|
17
|
+
render(ChatParticipantIcon.Bot);
|
|
18
|
+
ChatUiSelectors.chatAvatarBot
|
|
19
|
+
.should('be.visible')
|
|
20
|
+
.invoke('css', 'background-image')
|
|
21
|
+
.then(bgColor => {
|
|
22
|
+
const isSvg = Boolean(bgColor.indexOf('data:image/svg+xml;base64') >= 0);
|
|
23
|
+
expect(isSvg).to.eq(true);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
it('should render message with empty icon', () => {
|
|
27
|
+
render(ChatParticipantIcon.Empty);
|
|
28
|
+
ChatUiSelectors.chatAvatarBot.should('not.exist');
|
|
29
|
+
ChatUiSelectors.chatAvatarInitials.should('not.exist');
|
|
30
|
+
});
|
|
31
|
+
it('should render message with initials', () => {
|
|
32
|
+
render(ChatParticipantIcon.Initials);
|
|
33
|
+
ChatUiSelectors.chatAvatarInitials.should('be.visible').should('contain.text', 'TU');
|
|
34
|
+
});
|
|
35
|
+
it('should show different messages during the time', () => {
|
|
36
|
+
cy.clock();
|
|
37
|
+
render(ChatParticipantIcon.Bot);
|
|
38
|
+
// Verify the rendered component + check the dots animation doesn't change over the time
|
|
39
|
+
ChatUiSelectors.chatMessageTypingDots.should('be.visible');
|
|
40
|
+
cy.tick(11000);
|
|
41
|
+
ChatUiSelectors.chatMessageContentAgent
|
|
42
|
+
.should('be.visible')
|
|
43
|
+
.should('contain.text', 'Looking for the final details');
|
|
44
|
+
ChatUiSelectors.chatMessageTypingDots.should('not.exist');
|
|
45
|
+
cy.tick(10000);
|
|
46
|
+
ChatUiSelectors.chatMessageContentAgent
|
|
47
|
+
.should('be.visible')
|
|
48
|
+
.should('contain.text', 'This is taking longer than usual, please give me a little bit more time');
|
|
49
|
+
ChatUiSelectors.chatMessageTypingDots.should('not.exist');
|
|
50
|
+
cy.tick(60000);
|
|
51
|
+
ChatUiSelectors.chatMessageContentAgent
|
|
52
|
+
.should('be.visible')
|
|
53
|
+
.should('contain.text', 'This is taking longer than usual, please give me a little bit more time');
|
|
54
|
+
ChatUiSelectors.chatMessageTypingDots.should('not.exist');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=chatbot-message-typing.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-typing.test.js","sourceRoot":"","sources":["../../../../../src/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,SAAS,MAAM,CAAC,IAAyB;QACrC,MAAM,MAAM,GAAwB;YAChC,IAAI,EAAE,gBAAgB;YACtB,IAAI;SACP,CAAC;QACF,KAAK,CAAC,KAAC,oBAAoB,IAAC,MAAM,EAAE,MAAM,GAAI,CAAC,CAAC;QAChD,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACvD,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC;IAED,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,eAAe,CAAC,aAAa;aACxB,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC;aACjC,IAAI,CAAC,OAAO,CAAC,EAAE;YACZ,MAAM,KAAK,GAAG,OAAO,CAChB,OAAyB,CAAC,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,CACvE,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAClC,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACrC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,wFAAwF;QACxF,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3D,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,eAAe,CAAC,uBAAuB;aAClC,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QAE7D,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1D,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,eAAe,CAAC,uBAAuB;aAClC,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CACH,cAAc,EACd,yEAAyE,CAC5E,CAAC;QAEN,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1D,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,eAAe,CAAC,uBAAuB;aAClC,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CACH,cAAc,EACd,yEAAyE,CAC5E,CAAC;QACN,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Models } from '@servicetitan/titan-chatbot-api';
|
|
2
|
+
import { FC } from 'react';
|
|
3
|
+
interface ChatLinksProps {
|
|
4
|
+
seeMoreLabel: string;
|
|
5
|
+
seeLessLabel: string;
|
|
6
|
+
links: Models.ScoredUrl[];
|
|
7
|
+
onToggle?: () => void;
|
|
8
|
+
linkProps?: {
|
|
9
|
+
primary?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare const ChatbotLinks: FC<ChatLinksProps>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=chatbot-links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-links.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/messages/chatbot-links.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAC;AAG5D,UAAU,cAAc;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACL;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,cAAc,CA2D3C,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { BodyText, Collapsible, Icon, Link, Stack } from '@servicetitan/design-system';
|
|
3
|
+
import { Fragment, useCallback, useState } from 'react';
|
|
4
|
+
import * as Styles from './chatbot-links.module.less';
|
|
5
|
+
export const ChatbotLinks = ({ linkProps, links, onToggle, seeLessLabel, seeMoreLabel, }) => {
|
|
6
|
+
const [linksCollapsed, setLinksCollapsed] = useState(true);
|
|
7
|
+
const handleToggleCollapsible = useCallback(() => {
|
|
8
|
+
setLinksCollapsed(!linksCollapsed);
|
|
9
|
+
setTimeout(() => {
|
|
10
|
+
onToggle === null || onToggle === void 0 ? void 0 : onToggle();
|
|
11
|
+
}, 200);
|
|
12
|
+
}, [onToggle, linksCollapsed]);
|
|
13
|
+
if (!links.length) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return (_jsxs(Fragment, { children: [_jsx(Link, { className: "m-t-2", onClick: handleToggleCollapsible, "data-cy": "titan-chatbot-links-more", "data-pendo": "titan-chatbot-links-more", children: _jsxs(Stack, { direction: "row", alignItems: "center", children: [_jsx(BodyText, { el: "div", children: linksCollapsed ? seeMoreLabel : seeLessLabel }), _jsx(Icon, { className: "m-l-half", name: linksCollapsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up' })] }) }), _jsx(Collapsible, { animate: true, open: !linksCollapsed, "data-cy": "titan-chatbot-links-collapsible", children: _jsx("ul", { className: Styles.messageLinkList, children: links.map(u => {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
return (_jsx("li", { children: _jsx(BodyText, { el: "span", children: _jsx(Link, { href: u.url, target: "_blank", className: Styles.messageLink, primary: true, "data-cy": "titan-chatbot-links-link", "data-pendo": "titan-chatbot-links-link-secondary", title: (_a = u.title) !== null && _a !== void 0 ? _a : u.url, ...linkProps, children: (_b = u.title) !== null && _b !== void 0 ? _b : u.url }) }) }, u.url));
|
|
19
|
+
}) }) })] }));
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=chatbot-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-links.js","sourceRoot":"","sources":["../../../../src/components/chatbot/messages/chatbot-links.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEvF,OAAO,EAAM,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AAatD,MAAM,CAAC,MAAM,YAAY,GAAuB,CAAC,EAC7C,SAAS,EACT,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,GACf,EAAE,EAAE;IACD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE3D,MAAM,uBAAuB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7C,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAC;QACnC,UAAU,CAAC,GAAG,EAAE;YACZ,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;QACjB,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CACH,MAAC,QAAQ,eACL,KAAC,IAAI,IACD,SAAS,EAAC,OAAO,EACjB,OAAO,EAAE,uBAAuB,aACxB,0BAA0B,gBACvB,0BAA0B,YAErC,MAAC,KAAK,IAAC,SAAS,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,aACtC,KAAC,QAAQ,IAAC,EAAE,EAAC,KAAK,YAAE,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,GAAY,EAC5E,KAAC,IAAI,IACD,SAAS,EAAC,UAAU,EACpB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,GACpE,IACE,GACL,EACP,KAAC,WAAW,IAAC,OAAO,QAAC,IAAI,EAAE,CAAC,cAAc,aAAU,iCAAiC,YACjF,aAAI,SAAS,EAAE,MAAM,CAAC,eAAe,YAChC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;wBAAC,OAAA,CACZ,uBACI,KAAC,QAAQ,IAAC,EAAE,EAAC,MAAM,YACf,KAAC,IAAI,IACD,IAAI,EAAE,CAAC,CAAC,GAAG,EACX,MAAM,EAAC,QAAQ,EACf,SAAS,EAAE,MAAM,CAAC,WAAW,EAC7B,OAAO,mBACC,0BAA0B,gBACvB,oCAAoC,EAC/C,KAAK,EAAE,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,KACnB,SAAS,YAEZ,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,GACd,GACA,IAdN,CAAC,CAAC,GAAG,CAeT,CACR,CAAA;qBAAA,CAAC,GACD,GACK,IACP,CACd,CAAC;AACN,CAAC,CAAC"}
|