@servicetitan/titan-chatbot-ui-anvil2 3.1.1
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 +166 -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 +8 -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 +8 -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 +8 -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 +8 -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 +10 -0
- package/dist/components/chatbot/chatbot.d.ts.map +1 -0
- package/dist/components/chatbot/chatbot.js +69 -0
- package/dist/components/chatbot/chatbot.js.map +1 -0
- package/dist/components/chatbot/chatbot.module.less +4 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-dialog.test.d.ts +2 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-dialog.test.d.ts.map +1 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-dialog.test.js +8 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-dialog.test.js.map +1 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-link.test.d.ts +2 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-link.test.d.ts.map +1 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-link.test.js +8 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-link.test.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 +8 -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 +8 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.js.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-popover.test.d.ts +2 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-popover.test.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-popover.test.js +8 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-popover.test.js.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-session-feedback-modal.test.d.ts +2 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-session-feedback-modal.test.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-session-feedback-modal.test.js +8 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-session-feedback-modal.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 +16 -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 +18 -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 +61 -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 +14 -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 +15 -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 +25 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.js.map +1 -0
- package/dist/components/chatbot/filters/__tests-cy__/chatbot-filters.test.d.ts +2 -0
- package/dist/components/chatbot/filters/__tests-cy__/chatbot-filters.test.d.ts.map +1 -0
- package/dist/components/chatbot/filters/__tests-cy__/chatbot-filters.test.js +8 -0
- package/dist/components/chatbot/filters/__tests-cy__/chatbot-filters.test.js.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter-button.d.ts +7 -0
- package/dist/components/chatbot/filters/chatbot-filter-button.d.ts.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter-button.js +39 -0
- package/dist/components/chatbot/filters/chatbot-filter-button.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 +71 -0
- package/dist/components/chatbot/filters/chatbot-filter.js.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter.module.css +43 -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-links.test.d.ts +2 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-links.test.d.ts.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-links.test.js +8 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-links.test.js.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer-readonly.test.d.ts +2 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer-readonly.test.d.ts.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer-readonly.test.js +8 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer-readonly.test.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 +8 -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 +8 -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 +24 -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/package.json +59 -0
- package/src/components/chatbot/__tests-cy__/chatbot-help-center.test.tsx +9 -0
- package/src/components/chatbot/__tests-cy__/chatbot-live.test.tsx +7 -0
- package/src/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.tsx +9 -0
- package/src/components/chatbot/__tests-cy__/chatbot.test.tsx +7 -0
- package/src/components/chatbot/chatbot-to-chat-provider-adapter.tsx +36 -0
- package/src/components/chatbot/chatbot.module.less +4 -0
- package/src/components/chatbot/chatbot.module.less.d.ts +3 -0
- package/src/components/chatbot/chatbot.tsx +99 -0
- package/src/components/chatbot/dialog/__tests-cy__/chatbot-restart-dialog.test.tsx +9 -0
- package/src/components/chatbot/dialog/__tests-cy__/chatbot-restart-link.test.tsx +9 -0
- package/src/components/chatbot/dialog/chatbot-restart-dialog.tsx +41 -0
- package/src/components/chatbot/dialog/chatbot-restart-link.tsx +29 -0
- package/src/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.tsx +10 -0
- package/src/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.tsx +9 -0
- package/src/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-popover.test.tsx +9 -0
- package/src/components/chatbot/feedback/__tests-cy__/chatbot-session-feedback-modal.test.tsx +9 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.tsx +40 -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 +76 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-popover.module.less +14 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-popover.module.less.d.ts +5 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-popover.tsx +207 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback.tsx +27 -0
- package/src/components/chatbot/feedback/chatbot-session-feedback-link.tsx +27 -0
- package/src/components/chatbot/feedback/chatbot-session-feedback-modal.tsx +95 -0
- package/src/components/chatbot/filters/__tests-cy__/chatbot-filters.test.tsx +9 -0
- package/src/components/chatbot/filters/chatbot-filter-button.tsx +58 -0
- package/src/components/chatbot/filters/chatbot-filter.module.css +43 -0
- package/src/components/chatbot/filters/chatbot-filter.module.css.d.ts +5 -0
- package/src/components/chatbot/filters/chatbot-filter.tsx +166 -0
- package/src/components/chatbot/filters/chatbot-filters.tsx +17 -0
- package/src/components/chatbot/messages/__tests-cy__/chatbot-links.test.tsx +9 -0
- package/src/components/chatbot/messages/__tests-cy__/chatbot-message-answer-readonly.test.tsx +9 -0
- package/src/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.tsx +9 -0
- package/src/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.tsx +9 -0
- package/src/components/chatbot/messages/chatbot-links.module.less +24 -0
- package/src/components/chatbot/messages/chatbot-links.module.less.d.ts +5 -0
- package/src/components/chatbot/messages/chatbot-links.tsx +73 -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 +43 -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/tsconfig.json +25 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-feedback-form-guardrail.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAe,EAAE,EAAE,MAAM,OAAO,CAAC;AAGxC,eAAO,MAAM,mCAAmC,EAAE,EA8BhD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Flex, TextField, Textarea } from '@servicetitan/anvil2';
|
|
3
|
+
import { FormStateErrorBanner } from '@servicetitan/form';
|
|
4
|
+
import { useDependencies } from '@servicetitan/react-ioc';
|
|
5
|
+
import { MessageFeedbackGuardrailStore } from '@servicetitan/titan-chatbot-api';
|
|
6
|
+
import classNames from 'classnames';
|
|
7
|
+
import { observer } from 'mobx-react';
|
|
8
|
+
import * as Styles from './chatbot-message-feedback-form.module.less';
|
|
9
|
+
export const ChatbotMessageFeedbackFormGuardrail = observer(() => {
|
|
10
|
+
const [store] = useDependencies(MessageFeedbackGuardrailStore);
|
|
11
|
+
const onLinkUrlChange = (event) => {
|
|
12
|
+
store.formState.$.linkUrl.onChange(event.target.value);
|
|
13
|
+
};
|
|
14
|
+
return (_jsxs(Flex, { direction: "column", gap: "4", children: [store.formState.error && _jsx(FormStateErrorBanner, { form: store.formState }), _jsxs("form", { "data-cy": "titan-chatbot-message-feedback-form", children: [_jsx(TextField, { label: "Link to correct article", className: classNames(Styles.formItem), error: store.formState.$.linkUrl.error, value: store.formState.$.linkUrl.value, onChange: onLinkUrlChange, "data-cy": "titan-chatbot-message-feedback-form-link-url" }), _jsx(Textarea, { label: "Notes", className: classNames(Styles.formItem, Styles.textArea), value: store.formState.$.comment.value, onChange: store.formState.$.comment.onChangeHandler, onBlur: store.formState.$.comment.enableAutoValidationAndValidate, "data-cy": "titan-chatbot-message-feedback-form-other-comment" })] })] }));
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=chatbot-message-feedback-form-guardrail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-feedback-form-guardrail.js","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,MAAM,MAAM,6CAA6C,CAAC;AAEtE,MAAM,CAAC,MAAM,mCAAmC,GAAO,QAAQ,CAAC,GAAG,EAAE;IACjE,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,6BAA6B,CAAC,CAAC;IAE/D,MAAM,eAAe,GAAG,CAAC,KAAoC,EAAE,EAAE;QAC7D,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,OAAO,CACH,MAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,GAAG,EAAC,GAAG,aAC3B,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,KAAC,oBAAoB,IAAC,IAAI,EAAE,KAAK,CAAC,SAAS,GAAI,EACzE,2BAAc,qCAAqC,aAC/C,KAAC,SAAS,IACN,KAAK,EAAC,yBAAyB,EAC/B,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EACtC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EACtC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EACtC,QAAQ,EAAE,eAAe,aACjB,8CAA8C,GACxD,EACF,KAAC,QAAQ,IACL,KAAK,EAAC,OAAO,EACb,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EACvD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EACnD,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,+BAA+B,aACzD,mDAAmD,GAC7D,IACC,IACJ,CACV,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-feedback-form.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback-form.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAG3B,eAAO,MAAM,0BAA0B,EAAE,EAkEvC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Checkbox, Flex, Text, Textarea } from '@servicetitan/anvil2';
|
|
3
|
+
import { useDependencies } from '@servicetitan/react-ioc';
|
|
4
|
+
import { MessageFeedbackStore } from '@servicetitan/titan-chatbot-api';
|
|
5
|
+
import classNames from 'classnames';
|
|
6
|
+
import { observer } from 'mobx-react';
|
|
7
|
+
import * as Styles from './chatbot-message-feedback-form.module.less';
|
|
8
|
+
export const ChatbotMessageFeedbackForm = observer(() => {
|
|
9
|
+
const [store] = useDependencies(MessageFeedbackStore);
|
|
10
|
+
const onCheckboxChange = (checkbox) => {
|
|
11
|
+
return (_, state) => {
|
|
12
|
+
const fieldState = store.formState.$[checkbox];
|
|
13
|
+
fieldState.onChange(!state.checked);
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
return (_jsx("form", { "data-cy": "titan-chatbot-message-feedback-form", children: _jsxs(Flex, { direction: "column", children: [_jsx(Checkbox, { label: "Answer is unrelated to my question", className: Styles.formItem, checked: store.formState.$.unrelated.value, onChange: onCheckboxChange('unrelated'), "data-cy": "titan-chatbot-message-feedback-form-unrelated" }), _jsx(Checkbox, { label: "Answer is unclear, not sure what it means", className: Styles.formItem, checked: store.formState.$.unclear.value, onChange: onCheckboxChange('unclear'), "data-cy": "titan-chatbot-message-feedback-form-unclear" }), _jsx(Checkbox, { label: "Answer doesn\u2019t fully address the question", className: Styles.formItem, checked: store.formState.$.notFull.value, onChange: onCheckboxChange('notFull'), "data-cy": "titan-chatbot-message-feedback-form-not-full" }), _jsx(Checkbox, { label: "Answer is incorrect or doesn\u2019t work", className: Styles.formItem, checked: store.formState.$.incorrect.value, onChange: onCheckboxChange('incorrect'), "data-cy": "titan-chatbot-message-feedback-form-incorrect" }), _jsx(Checkbox, { label: "Other", className: Styles.formItem, checked: store.formState.$.other.value, onChange: onCheckboxChange('other'), "data-cy": "titan-chatbot-message-feedback-form-other" }), store.isTextAreaVisible && (_jsxs("div", { className: "m-inline-start-8", children: [_jsx(Textarea, { className: classNames(Styles.formItem, Styles.textArea), error: store.formState.$.otherComment.error, value: store.formState.$.otherComment.value, onChange: store.formState.$.otherComment.onChangeHandler, onBlur: store.formState.$.otherComment.enableAutoValidationAndValidate, "data-cy": "titan-chatbot-message-feedback-form-other-comment" }), _jsx(Text, { size: "small", subdued: true, className: "m-block-end-2", children: "Tell us more about what can be improved." })] }))] }) }));
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=chatbot-message-feedback-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-message-feedback-form.js","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback-form.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAMA,OAAO,EAKH,MAAM,EACT,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,EAAE,EAAmD,MAAM,OAAO,CAAC;AAK5E,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,CAqL1E,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, Flex, Icon, Link, Popover, Spinner, Text } from '@servicetitan/anvil2';
|
|
3
|
+
import IconCheck from '@servicetitan/anvil2/assets/icons/material/round/check.svg';
|
|
4
|
+
import IconError from '@servicetitan/anvil2/assets/icons/material/round/error.svg';
|
|
5
|
+
import IconThumbDown from '@servicetitan/anvil2/assets/icons/material/round/thumb_down.svg';
|
|
6
|
+
import IconThumbUp from '@servicetitan/anvil2/assets/icons/material/round/thumb_up.svg';
|
|
7
|
+
import { provide, useDependencies } from '@servicetitan/react-ioc';
|
|
8
|
+
import { CHATBOT_UI_STORE_TOKEN, MessageFeedbackGuardrailStore, MessageFeedbackStore, Models, } from '@servicetitan/titan-chatbot-api';
|
|
9
|
+
import classNames from 'classnames';
|
|
10
|
+
import { observer } from 'mobx-react';
|
|
11
|
+
import { Fragment, useCallback, useState } from 'react';
|
|
12
|
+
import { ChatbotMessageFeedbackForm } from './chatbot-message-feedback-form';
|
|
13
|
+
import { ChatbotMessageFeedbackFormGuardrail } from './chatbot-message-feedback-form-guardrail';
|
|
14
|
+
import * as Styles from './chatbot-message-feedback-popover.module.less';
|
|
15
|
+
export const ChatbotMessageFeedbackPopover = provide({
|
|
16
|
+
singletons: [MessageFeedbackStore, MessageFeedbackGuardrailStore],
|
|
17
|
+
})(observer(({ botMessage, className }) => {
|
|
18
|
+
var _a;
|
|
19
|
+
const [chatbotUiStore, messageFeedbackStore, messageFeedbackGuardrailStore] = useDependencies(CHATBOT_UI_STORE_TOKEN, MessageFeedbackStore, MessageFeedbackGuardrailStore);
|
|
20
|
+
const [feedbackState, setFeedbackState] = useState(Models.ChatbotFeedbackState.None);
|
|
21
|
+
const [isPopoverOpen, setIsPopoverOpen] = useState(false);
|
|
22
|
+
const title = (_a = chatbotUiStore.customizations.feedback) === null || _a === void 0 ? void 0 : _a.title;
|
|
23
|
+
const isGuardrail = botMessage.isGuardrailed;
|
|
24
|
+
const feedbackStore = isGuardrail
|
|
25
|
+
? messageFeedbackGuardrailStore
|
|
26
|
+
: messageFeedbackStore;
|
|
27
|
+
const sendFeedback = useCallback(async (feedback) => {
|
|
28
|
+
setFeedbackState(Models.ChatbotFeedbackState.Sent);
|
|
29
|
+
try {
|
|
30
|
+
await chatbotUiStore.sendMessageFeedback(botMessage, feedback);
|
|
31
|
+
setFeedbackState(Models.ChatbotFeedbackState.Success);
|
|
32
|
+
}
|
|
33
|
+
catch (_a) {
|
|
34
|
+
setFeedbackState(Models.ChatbotFeedbackState.Failure);
|
|
35
|
+
}
|
|
36
|
+
}, [chatbotUiStore, botMessage]);
|
|
37
|
+
const handleFeedbackThumbsUp = useCallback(async () => {
|
|
38
|
+
await sendFeedback(new Models.Feedback({ rating: Models.FeedbackRatings.ThumbsUp }));
|
|
39
|
+
}, [sendFeedback]);
|
|
40
|
+
const handleFeedbackSubmit = useCallback(async () => {
|
|
41
|
+
const validateResult = await feedbackStore.formState.validate();
|
|
42
|
+
if (validateResult.hasError) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const feedback = feedbackStore.export();
|
|
46
|
+
await sendFeedback(feedback);
|
|
47
|
+
}, [feedbackStore, sendFeedback]);
|
|
48
|
+
if (feedbackState === Models.ChatbotFeedbackState.Sent) {
|
|
49
|
+
return (_jsx(Flex, { direction: "row", gap: "2", alignItems: "center", className: classNames(className, Styles.feedback), "data-cy": "titan-chatbot-message-feedback-loading", children: _jsx(Spinner, {}) }));
|
|
50
|
+
}
|
|
51
|
+
if (feedbackState === Models.ChatbotFeedbackState.Success) {
|
|
52
|
+
return (_jsxs(Flex, { direction: "row", gap: "2", alignItems: "center", className: classNames(className, Styles.feedback), children: [_jsx(Icon, { svg: IconCheck, className: "c-status-success" }), _jsx(Text, { className: Styles.feedbackResultText, subdued: true, size: "small", "data-cy": "titan-chatbot-message-feedback-success", children: "Thanks for your feedback." })] }));
|
|
53
|
+
}
|
|
54
|
+
if (feedbackState === Models.ChatbotFeedbackState.Failure) {
|
|
55
|
+
// Feedback is done: either user clicked thumbs up or submitted feedback
|
|
56
|
+
return (_jsxs(Flex, { direction: "row", gap: "2", alignItems: "center", className: classNames(className, Styles.feedback), "data-cy": "titan-chatbot-message-feedback-failed", children: [_jsx(Icon, { svg: IconError, className: "c-status-danger" }), _jsx(Text, { className: classNames('c-status-danger', Styles.feedbackResultText), children: "Failed to send feedback." })] }));
|
|
57
|
+
}
|
|
58
|
+
const SubmitButton = (_jsx(Button, { appearance: "primary", disabled: !feedbackStore.isValid, onClick: handleFeedbackSubmit, "data-cy": "titan-chatbot-message-feedback-submit", children: "Submit" }));
|
|
59
|
+
return (_jsxs(Flex, { direction: "row", gap: "2", alignItems: "center", className: className, children: [!isGuardrail && title && _jsx(Text, { variant: "eyebrow", children: title }), !isGuardrail && (_jsx(Button, { icon: IconThumbUp, size: "small", appearance: "ghost", "aria-label": "thumb up", onClick: handleFeedbackThumbsUp, "data-cy": "titan-chatbot-message-feedback-thumbs-up" })), _jsx(Popover, { placement: "top-start", onOutsidePress: () => setIsPopoverOpen(false), open: isPopoverOpen, children: isGuardrail ? (_jsxs(Fragment, { children: [_jsx(Popover.Trigger, { children: props => (_jsx(Link, { ...props, onClick: () => setIsPopoverOpen(true), className: classNames('fs-paragraph-small', Styles.provideAnswer), color: "blue", "data-cy": "titan-chatbot-message-feedback-provide-answer", children: "Provide correct answer" })) }), _jsx(Popover.Content, { children: _jsxs(Flex, { direction: "column", children: [_jsx(Flex, { justifyContent: "space-between", alignItems: "center", children: _jsx(Text, { el: "h3", variant: "headline", size: "small", children: "Provide correct answer" }) }), _jsx(ChatbotMessageFeedbackFormGuardrail, {}), SubmitButton] }) })] })) : (_jsxs(Fragment, { children: [_jsx(Popover.Button, { icon: IconThumbDown, size: "small", appearance: "ghost", onClick: () => setIsPopoverOpen(true), "aria-label": "thumb down", "data-cy": "titan-chatbot-message-feedback-thumbs-down" }), _jsx(Popover.Content, { children: _jsxs(Flex, { direction: "column", children: [_jsx(Flex, { justifyContent: "space-between", alignItems: "center", children: _jsx(Text, { el: "h3", variant: "headline", size: "small", children: "Why didn't this answer solve your problem?" }) }), _jsx(ChatbotMessageFeedbackForm, {}), SubmitButton] }) })] })) })] }));
|
|
60
|
+
}));
|
|
61
|
+
//# 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,sBAAsB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAC;AAG5D,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,SAAS,CAsBpD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Link } from '@servicetitan/anvil2';
|
|
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 handleFeedback = useCallback(() => {
|
|
8
|
+
setIsFeedbackOpen(false);
|
|
9
|
+
}, []);
|
|
10
|
+
return (_jsxs(Fragment, { children: [_jsx(Link, { ...rest, onClick: e => {
|
|
11
|
+
setIsFeedbackOpen(true);
|
|
12
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
13
|
+
}, "data-cy": "titan-chatbot-session-feedback-link", children: children }), isFeedbackOpen && _jsx(ChatbotSessionFeedbackModal, { onClose: handleFeedback })] }));
|
|
14
|
+
};
|
|
15
|
+
//# 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,sBAAsB,CAAC;AACvD,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,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,CAAC,CAAC,EAAE;oBACT,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBACxB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,CAAC;gBACjB,CAAC,aACO,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":"AAMA,OAAO,EAAE,EAAE,EAAe,MAAM,OAAO,CAAC;AAExC,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAsFnE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, ButtonToggle, Dialog, Flex, Text, Textarea } from '@servicetitan/anvil2';
|
|
3
|
+
import IconThumbDown from '@servicetitan/anvil2/assets/icons/material/round/thumb_down.svg';
|
|
4
|
+
import IconThumbUp from '@servicetitan/anvil2/assets/icons/material/round/thumb_up.svg';
|
|
5
|
+
import { provide, useDependencies } from '@servicetitan/react-ioc';
|
|
6
|
+
import { CHATBOT_UI_STORE_TOKEN, SessionFeedbackStore } from '@servicetitan/titan-chatbot-api';
|
|
7
|
+
import { observer } from 'mobx-react';
|
|
8
|
+
import { useCallback } from 'react';
|
|
9
|
+
export const ChatbotSessionFeedbackModal = provide({
|
|
10
|
+
singletons: [SessionFeedbackStore],
|
|
11
|
+
})(observer(({ onClose }) => {
|
|
12
|
+
const [chatbotFeedbackStore, chatbotUiStore] = useDependencies(SessionFeedbackStore, CHATBOT_UI_STORE_TOKEN);
|
|
13
|
+
const handleClose = useCallback(() => {
|
|
14
|
+
onClose();
|
|
15
|
+
}, [onClose]);
|
|
16
|
+
const handleSubmit = useCallback(() => {
|
|
17
|
+
chatbotUiStore.sendSessionFeedback(chatbotFeedbackStore.feedback);
|
|
18
|
+
onClose();
|
|
19
|
+
}, [chatbotUiStore, chatbotFeedbackStore, onClose]);
|
|
20
|
+
const handleThumbs = useCallback((isThumbsUp) => {
|
|
21
|
+
chatbotFeedbackStore.formState.$.thumbs.onChange(isThumbsUp ? 1 : -1);
|
|
22
|
+
}, [chatbotFeedbackStore]);
|
|
23
|
+
return (_jsxs(Dialog, { onClose: handleClose, open: true, title: "Give Feedback on Titan", "data-cy": "titan-chatbot-session-feedback-modal", children: [_jsx(Dialog.Content, { children: _jsxs(Flex, { direction: "column", gap: "2", className: "m-block-start-6", children: [_jsx(Text, { children: "Was Titan able to help solve your problem?" }), _jsxs(Flex, { direction: "row", gap: "4", alignItems: "center", children: [_jsx(ButtonToggle, { size: "small", "aria-label": "Thumbs Up", title: "Thumbs Up", icon: IconThumbUp, checked: chatbotFeedbackStore.isThumbsUp, onClick: () => handleThumbs(true), "data-cy": "titan-chatbot-session-feedback-thumbs-up" }), _jsx(ButtonToggle, { size: "small", "aria-label": "Thumbs Down", title: "Thumbs Down", icon: IconThumbDown, checked: chatbotFeedbackStore.isThumbsDown, onClick: () => handleThumbs(false), "data-cy": "titan-chatbot-session-feedback-thumbs-down" })] }), _jsx(Textarea, { className: "m-block-start-4", label: "Tell us more", rows: 3, value: chatbotFeedbackStore.formState.$.comment.value, onChange: chatbotFeedbackStore.formState.$.comment.onChangeHandler, "data-cy": "titan-chatbot-session-feedback-comment" })] }) }), _jsx(Dialog.Footer, { children: _jsxs(Flex, { direction: "row", justifyContent: "flex-end", gap: "3", children: [_jsx(Button, { onClick: handleClose, "data-cy": "titan-chatbot-session-feedback-cancel", children: "Cancel" }), _jsx(Button, { onClick: handleSubmit, appearance: "primary", disabled: !chatbotFeedbackStore.isValid, "data-cy": "titan-chatbot-session-feedback-submit", children: "Submit Feedback" })] }) })] }));
|
|
24
|
+
}));
|
|
25
|
+
//# 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-filters.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/chatbot/filters/__tests-cy__/chatbot-filters.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { AnvilProvider } from '@servicetitan/anvil2';
|
|
3
|
+
import { runChatbotFiltersSharedTests } from '@servicetitan/titan-chatbot-ui-cypress';
|
|
4
|
+
import { ChatFilters } from '../chatbot-filters';
|
|
5
|
+
describe('[ChatFilters]', () => {
|
|
6
|
+
runChatbotFiltersSharedTests(ChatFilters, component => (_jsx(AnvilProvider, { children: component })));
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=chatbot-filters.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-filters.test.js","sourceRoot":"","sources":["../../../../../src/components/chatbot/filters/__tests-cy__/chatbot-filters.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,4BAA4B,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC,CACnD,KAAC,aAAa,cAAE,SAAS,GAAiB,CAC7C,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ChipProps } from '@servicetitan/anvil2';
|
|
2
|
+
import { FC, RefAttributes } from 'react';
|
|
3
|
+
export declare const ChatbotFilterButton: FC<RefAttributes<HTMLElement> & ChipProps & {
|
|
4
|
+
count: number;
|
|
5
|
+
open: boolean;
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=chatbot-filter-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-filter-button.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/filters/chatbot-filter-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,EAAE,EAAE,aAAa,EAAsD,MAAM,OAAO,CAAC;AAG9F,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAChC,aAAa,CAAC,WAAW,CAAC,GAAG,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAmD5E,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Chip } from '@servicetitan/anvil2';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import { forwardRef, useEffect, useImperativeHandle, useRef } from 'react';
|
|
5
|
+
import * as Styles from './chatbot-filter.module.css';
|
|
6
|
+
export const ChatbotFilterButton = forwardRef(({ className, count, open, ...chipProps }, ref) => {
|
|
7
|
+
const buttonRef = useRef(null);
|
|
8
|
+
useImperativeHandle(ref, () => buttonRef.current, []);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
// This is temporary solution until we have a proper filter button component, or it's replacement in Anvil2
|
|
11
|
+
const chip = buttonRef.current;
|
|
12
|
+
if (!chip) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
// Ensure chip has a counter element
|
|
16
|
+
let counterEl = chip.querySelector('.chip__counter');
|
|
17
|
+
if (!counterEl) {
|
|
18
|
+
counterEl = document.createElement('div');
|
|
19
|
+
counterEl.className = 'chip__counter';
|
|
20
|
+
chip.append(counterEl);
|
|
21
|
+
}
|
|
22
|
+
counterEl.textContent = count.toString();
|
|
23
|
+
counterEl.style.display = count > 0 ? 'flex' : 'none';
|
|
24
|
+
// Ensure chip has an icon element
|
|
25
|
+
const iconEl = chip.querySelector('.chip__icon');
|
|
26
|
+
if (!iconEl) {
|
|
27
|
+
const icon = document.createElement('img');
|
|
28
|
+
icon.className = 'chip__icon';
|
|
29
|
+
icon.src =
|
|
30
|
+
'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9ImN1cnJlbnRDb2xvciIgaGVpZ2h0PSIxZW0iIHdpZHRoPSIxZW0iIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTcuNDEgNy44NEwxMiAxMi40Mmw0LjU5LTQuNThMMTggOS4yNWwtNiA2LTYtNnoiPjwvcGF0aD48L3N2Zz4=';
|
|
31
|
+
chip.append(icon);
|
|
32
|
+
}
|
|
33
|
+
}, [count]);
|
|
34
|
+
return (_jsx(Chip, { ref: buttonRef, className: classNames(Styles.filterButton, {
|
|
35
|
+
[Styles.filterButtonActive]: count > 0,
|
|
36
|
+
[Styles.filterButtonOpen]: open,
|
|
37
|
+
}, className), ...chipProps }));
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=chatbot-filter-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-filter-button.js","sourceRoot":"","sources":["../../../../src/components/chatbot/filters/chatbot-filter-button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAa,MAAM,sBAAsB,CAAC;AACvD,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAqB,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC9F,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AAEtD,MAAM,CAAC,MAAM,mBAAmB,GAE5B,UAAU,CACV,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAEnD,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAQ,EAAE,EAAE,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACX,2GAA2G;QAC3G,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO;QACX,CAAC;QAED,oCAAoC;QACpC,IAAI,SAAS,GAAuB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,SAAS,CAAC,SAAS,GAAG,eAAe,CAAC;YAEtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;QACD,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAEtD,kCAAkC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;YAC9B,IAAI,CAAC,GAAG;gBACJ,wQAAwQ,CAAC;YAC7Q,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,CACH,KAAC,IAAI,IACD,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,UAAU,CACjB,MAAM,CAAC,YAAY,EACnB;YACI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,KAAK,GAAG,CAAC;YACtC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI;SAClC,EACD,SAAS,CACZ,KACG,SAAS,GACf,CACL,CAAC;AACN,CAAC,CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-filter.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/filters/chatbot-filter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA0B,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAe,EAAE,EAA0D,MAAM,OAAO,CAAC;AAGhG,UAAU,gBAAgB;IACtB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,gBAAgB,CA0J1C,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Checkbox, Flex, Link, Popover, Text, TextField, useMergeRefs } from '@servicetitan/anvil2';
|
|
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 { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
7
|
+
import { ChatbotFilterButton } from './chatbot-filter-button';
|
|
8
|
+
export const ChatFilter = observer(({ filter }) => {
|
|
9
|
+
var _a, _b, _c;
|
|
10
|
+
const triggerRef = useRef();
|
|
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).trim();
|
|
16
|
+
const selectedOptionsCount = (_c = (_b = filterStore.selectedOptions[filter.key]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
|
|
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
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const triggerElement = triggerRef.current;
|
|
35
|
+
const boundingRect = triggerElement.getBoundingClientRect();
|
|
36
|
+
const headerFooterSize = 160;
|
|
37
|
+
setListMaxHeight(boundingRect.top - headerFooterSize);
|
|
38
|
+
}, []);
|
|
39
|
+
const handleToggle = () => {
|
|
40
|
+
setOpen(prev => !prev);
|
|
41
|
+
};
|
|
42
|
+
const handleCancel = (e) => {
|
|
43
|
+
var _a;
|
|
44
|
+
if ((_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
setOpen(false);
|
|
48
|
+
};
|
|
49
|
+
const handleFilterChange = useCallback((event) => {
|
|
50
|
+
setFilterText(event.target.value);
|
|
51
|
+
}, []);
|
|
52
|
+
const handleItemChecked = useCallback((value, checked) => {
|
|
53
|
+
if (checked) {
|
|
54
|
+
filterStore.selectOption(filter.key, value);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
filterStore.deselectOption(filter.key, value);
|
|
58
|
+
}
|
|
59
|
+
}, [filterStore, filter]);
|
|
60
|
+
return (_jsxs(Popover, { placement: "top", noPadding: true, maxHeight: listMaxHeight, onOutsidePress: handleCancel, open: open, children: [_jsx(Popover.Trigger, { children: ({ ref: popoverRef, ...props }) => {
|
|
61
|
+
const mergedRef = useMergeRefs([
|
|
62
|
+
popoverRef,
|
|
63
|
+
triggerRef,
|
|
64
|
+
]);
|
|
65
|
+
return (_jsx(ChatbotFilterButton, { ...props, ref: mergedRef, count: selectedOptionsCount, open: open, label: filterLabel, onClick: handleToggle, "data-cy": "titan-chatbot-filter-button" }));
|
|
66
|
+
} }), _jsx(Popover.Content, { children: _jsxs(Flex, { direction: "column", className: "p-4", gap: "4", "data-cy": "titan-chatbot-filter-content", children: [_jsx(Flex, { children: _jsx(TextField, { onChange: handleFilterChange, value: filterText, size: "small", placeholder: "Search", "data-cy": "titan-chatbot-filter-search" }) }), allOptions.length > 0 ? (_jsx(Flex, { direction: "column", gap: "2", "data-cy": "titan-chatbot-filter-options", children: filteredOptions.map(option => (_jsx(Checkbox, { label: option.text, value: option.value, checked: (filterStore.selectedOptions[filter.key] || []).includes(option.value), onChange: (_, state) => {
|
|
67
|
+
var _a;
|
|
68
|
+
handleItemChecked(String((_a = state === null || state === void 0 ? void 0 : state.value) !== null && _a !== void 0 ? _a : ''), !(state === null || state === void 0 ? void 0 : state.checked));
|
|
69
|
+
} }, option.value))) })) : (_jsx(Text, { className: "ta-center", size: "small", subdued: true, children: "No items available" })), _jsxs(Flex, { direction: "row", alignItems: "baseline", gap: "2", children: [_jsx(Text, { size: "small", children: "Select" }), _jsx(Text, { size: "small", children: _jsx(Link, { appearance: "primary", onClick: () => filterStore.selectAll(filter.key), "data-cy": "titan-chatbot-filter-all", children: "All" }) }), _jsx(Text, { size: "small", children: _jsx(Link, { appearance: "primary", onClick: () => filterStore.deselectAll(filter.key), "data-cy": "titan-chatbot-filter-none", children: "None" }) })] })] }) })] }));
|
|
70
|
+
});
|
|
71
|
+
//# 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,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAU,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAwB,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAM9D,MAAM,CAAC,MAAM,UAAU,GAAyB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAoB,EAAE,EAAE;;IACtF,MAAM,UAAU,GAAG,MAAM,EAAqB,CAAC;IAC/C,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,IAAI,EAAE,CAAC;IACxF,MAAM,oBAAoB,GAAG,MAAA,MAAA,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAE,MAAM,mCAAI,CAAC,CAAC;IAElF,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,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QACD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC;QAC1C,MAAM,YAAY,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;QAC5D,MAAM,gBAAgB,GAAG,GAAG,CAAC;QAC7B,gBAAgB,CAAC,YAAY,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC;IAC1D,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,CAAC,CAAa,EAAE,EAAE;;QACnC,IAAI,MAAA,UAAU,CAAC,OAAO,0CAAE,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,EAAE,CAAC;YACjD,OAAO;QACX,CAAC;QACD,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,MAAC,OAAO,IACJ,SAAS,EAAC,KAAK,EACf,SAAS,QACT,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,YAAY,EAC5B,IAAI,EAAE,IAAI,aAEV,KAAC,OAAO,CAAC,OAAO,cACX,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;oBAC/B,MAAM,SAAS,GAAG,YAAY,CAAC;wBAC3B,UAAU;wBACV,UAAoC;qBACvC,CAAC,CAAC;oBACH,OAAO,CACH,KAAC,mBAAmB,OACZ,KAAK,EACT,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,YAAY,aACb,6BAA6B,GACvC,CACL,CAAC;gBACN,CAAC,GACa,EAClB,KAAC,OAAO,CAAC,OAAO,cACZ,MAAC,IAAI,IACD,SAAS,EAAC,QAAQ,EAClB,SAAS,EAAC,KAAK,EACf,GAAG,EAAC,GAAG,aACC,8BAA8B,aAEtC,KAAC,IAAI,cACD,KAAC,SAAS,IACN,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAC,OAAO,EACZ,WAAW,EAAC,QAAQ,aACZ,6BAA6B,GACvC,GACC,EACN,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACrB,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,GAAG,EAAC,GAAG,aAAS,8BAA8B,YAClE,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAC3B,KAAC,QAAQ,IAEL,KAAK,EAAE,MAAM,CAAC,IAAI,EAClB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,OAAO,EAAE,CACL,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAChD,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;;oCACnB,iBAAiB,CACb,MAAM,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,mCAAI,EAAE,CAAC,EAC1B,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,CAClB,CAAC;gCACN,CAAC,IAXI,MAAM,CAAC,KAAK,CAYnB,CACL,CAAC,GACC,CACV,CAAC,CAAC,CAAC,CACA,KAAC,IAAI,IAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,yCAEzC,CACV,EACD,MAAC,IAAI,IAAC,SAAS,EAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAC,GAAG,EAAC,GAAG,aAC/C,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,uBAAc,EAChC,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,YACd,KAAC,IAAI,IACD,UAAU,EAAC,SAAS,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,aACxC,0BAA0B,oBAG/B,GACJ,EACP,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,YACd,KAAC,IAAI,IACD,UAAU,EAAC,SAAS,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,aAC1C,2BAA2B,qBAGhC,GACJ,IACJ,IACJ,GACO,IACZ,CACb,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
@import '@servicetitan/tokens/dist/tokens.css';
|
|
2
|
+
|
|
3
|
+
.filterButton {
|
|
4
|
+
padding-inline: var(--size-1);
|
|
5
|
+
padding-block: var(--size-1);
|
|
6
|
+
border-radius: 0.375rem;
|
|
7
|
+
border: 1px solid
|
|
8
|
+
light-dark(var(--color-neutral-80, #949596), var(--color-neutral-100, #606162));
|
|
9
|
+
background-color: light-dark(
|
|
10
|
+
var(--color-neutral-0, #ffffff),
|
|
11
|
+
var(--color-neutral-400, #141414)
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.filterButton:hover {
|
|
16
|
+
background-color: light-dark(#14141414, #ffffff14);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.filterButton > :global(.chip__counter) {
|
|
20
|
+
background-color: var(--color-purple-400, #6954c0);
|
|
21
|
+
color: var(--color-purple-100, #f1edff);
|
|
22
|
+
border-radius: 100%;
|
|
23
|
+
width: 1.25rem;
|
|
24
|
+
height: 1.25rem;
|
|
25
|
+
display: flex;
|
|
26
|
+
justify-content: center;
|
|
27
|
+
align-items: center;
|
|
28
|
+
margin-block: auto;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.filterButton.filterButtonActive {
|
|
32
|
+
background-color: var(--color-purple-100, #f1edff);
|
|
33
|
+
color: var(--color-purple-400, #6954c0);
|
|
34
|
+
border: 1px solid var(--color-purple-400, #6954c0);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.filterButton > :global(.chip__icon) {
|
|
38
|
+
transform: rotate(0deg);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.filterButton.filterButtonOpen > :global(.chip__icon) {
|
|
42
|
+
transform: rotate(180deg);
|
|
43
|
+
}
|
|
@@ -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 { Flex } from '@servicetitan/anvil2';
|
|
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(Flex, { className: className, gap: "2", "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,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,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,IAAI,IAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAC,GAAG,aAAS,uBAAuB,YAC9D,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,GACC,CACV,CAAC,CAAC,CAAC,IAAI,CAAC;AACb,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-links.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/chatbot/messages/__tests-cy__/chatbot-links.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { AnvilProvider } from '@servicetitan/anvil2';
|
|
3
|
+
import { runChatbotLinksSharedTests } from '@servicetitan/titan-chatbot-ui-cypress';
|
|
4
|
+
import { ChatbotLinks } from '../chatbot-links';
|
|
5
|
+
describe('[ChatbotLinks]', () => {
|
|
6
|
+
runChatbotLinksSharedTests(ChatbotLinks, component => (_jsx(AnvilProvider, { children: component })));
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=chatbot-links.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot-links.test.js","sourceRoot":"","sources":["../../../../../src/components/chatbot/messages/__tests-cy__/chatbot-links.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,0BAA0B,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,CAClD,KAAC,aAAa,cAAE,SAAS,GAAiB,CAC7C,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|