@servicetitan/titan-chatbot-ui 3.1.2 → 3.1.4
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 +24 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.d.ts.map +1 -1
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.js +10 -3
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.js.map +1 -1
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.d.ts.map +1 -1
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.js +13 -1
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.js.map +1 -1
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.d.ts.map +1 -1
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.js +3 -1
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.js.map +1 -1
- package/dist/components/chatbot/messages/chatbot-links.d.ts.map +1 -1
- package/dist/components/chatbot/messages/chatbot-links.js +4 -1
- package/dist/components/chatbot/messages/chatbot-links.js.map +1 -1
- package/package.json +8 -10
- package/src/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.tsx +26 -6
- package/src/components/chatbot/feedback/chatbot-message-feedback-form.tsx +19 -7
- package/src/components/chatbot/feedback/chatbot-session-feedback-modal.tsx +6 -2
- package/src/components/chatbot/messages/chatbot-links.tsx +6 -4
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
# v3.1.4 (Fri Aug 22 2025)
|
|
2
|
+
|
|
3
|
+
#### 🐛 Bug Fix
|
|
4
|
+
|
|
5
|
+
- SPA-7126: Small link props improvement [#47](https://github.com/servicetitan/titan-chatbot-client/pull/47) ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
|
|
6
|
+
|
|
7
|
+
#### Authors: 1
|
|
8
|
+
|
|
9
|
+
- Alexandr Yarmolchuk ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# v3.1.3 (Fri Aug 22 2025)
|
|
14
|
+
|
|
15
|
+
#### 🐛 Bug Fix
|
|
16
|
+
|
|
17
|
+
- SPA-7126: Removed non-compatible with Anvil2 dependencies [#45](https://github.com/servicetitan/titan-chatbot-client/pull/45) ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
|
|
18
|
+
|
|
19
|
+
#### Authors: 1
|
|
20
|
+
|
|
21
|
+
- Alexandr Yarmolchuk ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
1
25
|
# v3.1.2 (Fri Aug 15 2025)
|
|
2
26
|
|
|
3
27
|
#### 🐛 Bug Fix
|
|
@@ -1 +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":"
|
|
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":"AAKA,OAAO,EAAe,EAAE,EAAE,MAAM,OAAO,CAAC;AAGxC,eAAO,MAAM,mCAAmC,EAAE,EA8ChD,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Form, Stack } from '@servicetitan/design-system';
|
|
3
|
-
import { FormStateErrorBanner } from '@servicetitan/form';
|
|
2
|
+
import { Banner, Form, Stack } from '@servicetitan/design-system';
|
|
4
3
|
import { useDependencies } from '@servicetitan/react-ioc';
|
|
5
4
|
import { MessageFeedbackGuardrailStore } from '@servicetitan/titan-chatbot-api';
|
|
6
5
|
import classNames from 'classnames';
|
|
@@ -8,6 +7,14 @@ import { observer } from 'mobx-react';
|
|
|
8
7
|
import * as Styles from './chatbot-message-feedback-form.module.less';
|
|
9
8
|
export const ChatbotMessageFeedbackFormGuardrail = observer(() => {
|
|
10
9
|
const [store] = useDependencies(MessageFeedbackGuardrailStore);
|
|
11
|
-
|
|
10
|
+
const errors = store.getFormErrors();
|
|
11
|
+
const status = errors.length === 0 ? 'success' : 'critical';
|
|
12
|
+
return (_jsxs(Stack, { direction: "column", spacing: "2", children: [store.formState.error && (_jsx(Banner, { status: status, icon: true, title: "Form Incomplete", "data-cy": "titan-chatbot-message-feedback-form-error", children: _jsx("ul", { children: errors.map((e, index) => (
|
|
13
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
14
|
+
_jsx("li", { children: e }, index))) }) })), _jsxs(Form, { "data-cy": "titan-chatbot-message-feedback-form", children: [_jsx(Form.Input, { label: "Link to correct article", className: classNames(Styles.formItem), error: store.formState.$.linkUrl.error, value: store.formState.$.linkUrl.value, onChange: (e) => {
|
|
15
|
+
store.formState.$.linkUrl.onChange(e.currentTarget.value);
|
|
16
|
+
}, "data-cy": "titan-chatbot-message-feedback-form-link-url" }), _jsx(Form.TextArea, { label: "Notes", className: classNames(Styles.formItem, Styles.textArea), value: store.formState.$.comment.value, onChange: (e) => {
|
|
17
|
+
store.formState.$.comment.onChange(e.currentTarget.value);
|
|
18
|
+
}, onBlur: store.formState.$.comment.enableAutoValidationAndValidate, "data-cy": "titan-chatbot-message-feedback-form-other-comment" })] })] }));
|
|
12
19
|
});
|
|
13
20
|
//# sourceMappingURL=chatbot-message-feedback-form-guardrail.js.map
|
|
@@ -1 +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,KAAK,EAAE,MAAM,6BAA6B,CAAC;
|
|
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,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAClE,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;IAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAE5D,OAAO,CACH,MAAC,KAAK,IAAC,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAC,GAAG,aAChC,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CACtB,KAAC,MAAM,IACH,MAAM,EAAE,MAAM,EACd,IAAI,QACJ,KAAK,EAAC,iBAAiB,aACf,2CAA2C,YAEnD,uBACK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;oBACtB,oDAAoD;oBACpD,uBAAiB,CAAC,IAAT,KAAK,CAAU,CAC3B,CAAC,GACD,GACA,CACZ,EACD,MAAC,IAAI,eAAS,qCAAqC,aAC/C,KAAC,IAAI,CAAC,KAAK,IACP,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,CAAC,CAAgC,EAAE,EAAE;4BAC3C,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;wBAC9D,CAAC,aACO,8CAA8C,GACxD,EACF,KAAC,IAAI,CAAC,QAAQ,IACV,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,CAAC,CAAmC,EAAE,EAAE;4BAC9C,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;wBAC9D,CAAC,EACD,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,+BAA+B,aACzD,mDAAmD,GAC7D,IACC,IACH,CACX,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatbot-message-feedback-form.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback-form.tsx"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"chatbot-message-feedback-form.d.ts","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback-form.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAe,EAAE,EAAE,MAAM,OAAO,CAAC;AAGxC,eAAO,MAAM,0BAA0B,EAAE,EAoEvC,CAAC"}
|
|
@@ -7,6 +7,18 @@ import { observer } from 'mobx-react';
|
|
|
7
7
|
import * as Styles from './chatbot-message-feedback-form.module.less';
|
|
8
8
|
export const ChatbotMessageFeedbackForm = observer(() => {
|
|
9
9
|
const [store] = useDependencies(MessageFeedbackStore);
|
|
10
|
-
return (_jsxs(Form, { "data-cy": "titan-chatbot-message-feedback-form", children: [_jsx(Form.Checkbox, { label: "Answer is unrelated to my question", className: Styles.formItem, value: store.formState.$.unrelated.value, onChange:
|
|
10
|
+
return (_jsxs(Form, { "data-cy": "titan-chatbot-message-feedback-form", children: [_jsx(Form.Checkbox, { label: "Answer is unrelated to my question", className: Styles.formItem, value: store.formState.$.unrelated.value, onChange: (_, checked) => {
|
|
11
|
+
store.formState.$.unrelated.onChange(!!checked);
|
|
12
|
+
}, "data-cy": "titan-chatbot-message-feedback-form-unrelated" }), _jsx(Form.Checkbox, { label: "Answer is unclear, not sure what it means", className: Styles.formItem, value: store.formState.$.unclear.value, onChange: (_, checked) => {
|
|
13
|
+
store.formState.$.unclear.onChange(!!checked);
|
|
14
|
+
}, "data-cy": "titan-chatbot-message-feedback-form-unclear" }), _jsx(Form.Checkbox, { label: "Answer doesn\u2019t fully address the question", className: Styles.formItem, value: store.formState.$.notFull.value, onChange: (_, checked) => {
|
|
15
|
+
store.formState.$.notFull.onChange(!!checked);
|
|
16
|
+
}, "data-cy": "titan-chatbot-message-feedback-form-not-full" }), _jsx(Form.Checkbox, { label: "Answer is incorrect or doesn\u2019t work", className: Styles.formItem, value: store.formState.$.incorrect.value, onChange: (_, checked) => {
|
|
17
|
+
store.formState.$.incorrect.onChange(!!checked);
|
|
18
|
+
}, "data-cy": "titan-chatbot-message-feedback-form-incorrect" }), _jsx(Form.Checkbox, { label: "Other", className: Styles.formItem, value: store.formState.$.other.value, onChange: (_, checked) => {
|
|
19
|
+
store.formState.$.other.onChange(!!checked);
|
|
20
|
+
}, "data-cy": "titan-chatbot-message-feedback-form-other" }), store.isTextAreaVisible && (_jsxs("div", { className: "m-l-4", children: [_jsx(Form.TextArea, { className: classNames(Styles.formItem, Styles.textArea), error: store.formState.$.otherComment.error, value: store.formState.$.otherComment.value, onChange: (e) => {
|
|
21
|
+
store.formState.$.otherComment.onChange(e.currentTarget.value);
|
|
22
|
+
}, onBlur: store.formState.$.otherComment.enableAutoValidationAndValidate, "data-cy": "titan-chatbot-message-feedback-form-other-comment" }), _jsx(BodyText, { size: "small", className: "c-neutral-100 m-b-1", children: "Tell us more about what can be improved." })] }))] }));
|
|
11
23
|
});
|
|
12
24
|
//# sourceMappingURL=chatbot-message-feedback-form.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatbot-message-feedback-form.js","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-message-feedback-form.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,MAAM,MAAM,6CAA6C,CAAC;AAEtE,MAAM,CAAC,MAAM,0BAA0B,GAAO,QAAQ,CAAC,GAAG,EAAE;IACxD,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC;IACtD,OAAO,CACH,MAAC,IAAI,eAAS,qCAAqC,aAC/C,KAAC,IAAI,CAAC,QAAQ,IACV,KAAK,EAAC,oCAAoC,EAC1C,SAAS,EAAE,MAAM,CAAC,QAAQ,EAC1B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,
|
|
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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"}
|
|
@@ -1 +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,
|
|
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;AAErD,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CA4FnE,CAAC"}
|
|
@@ -18,6 +18,8 @@ export const ChatbotSessionFeedbackModal = provide({
|
|
|
18
18
|
const handleThumbs = useCallback((isThumbsUp) => {
|
|
19
19
|
chatbotFeedbackStore.formState.$.thumbs.onChange(isThumbsUp ? 1 : -1);
|
|
20
20
|
}, [chatbotFeedbackStore]);
|
|
21
|
-
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:
|
|
21
|
+
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: (e) => {
|
|
22
|
+
chatbotFeedbackStore.formState.$.comment.onChange(e.currentTarget.value);
|
|
23
|
+
}, "data-cy": "titan-chatbot-session-feedback-comment" })] }) }));
|
|
22
24
|
}));
|
|
23
25
|
//# sourceMappingURL=chatbot-session-feedback-modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatbot-session-feedback-modal.js","sourceRoot":"","sources":["../../../../src/components/chatbot/feedback/chatbot-session-feedback-modal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,
|
|
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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"}
|
|
@@ -1 +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;
|
|
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;AAEzD,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,CA4D3C,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { BodyText, Collapsible, Icon, Link, Stack } from '@servicetitan/design-system';
|
|
3
|
+
import classNames from 'classnames';
|
|
3
4
|
import { Fragment, useCallback, useState } from 'react';
|
|
4
5
|
import * as Styles from './chatbot-links.module.less';
|
|
5
6
|
export const ChatbotLinks = ({ linkProps, links, onToggle, seeLessLabel, seeMoreLabel, }) => {
|
|
6
7
|
const [linksCollapsed, setLinksCollapsed] = useState(true);
|
|
8
|
+
const className = linkProps === null || linkProps === void 0 ? void 0 : linkProps.className;
|
|
9
|
+
const primary = Boolean(linkProps === null || linkProps === void 0 ? void 0 : linkProps.primary);
|
|
7
10
|
const handleToggleCollapsible = useCallback(() => {
|
|
8
11
|
setLinksCollapsed(!linksCollapsed);
|
|
9
12
|
setTimeout(() => {
|
|
@@ -15,7 +18,7 @@ export const ChatbotLinks = ({ linkProps, links, onToggle, seeLessLabel, seeMore
|
|
|
15
18
|
}
|
|
16
19
|
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
20
|
var _a, _b;
|
|
18
|
-
return (_jsx("li", { children: _jsx(BodyText, { el: "span", children: _jsx(Link, { href: u.url, target: "_blank", className: Styles.messageLink,
|
|
21
|
+
return (_jsx("li", { children: _jsx(BodyText, { el: "span", children: _jsx(Link, { href: u.url, target: "_blank", className: classNames(Styles.messageLink, className), primary: primary, title: (_a = u.title) !== null && _a !== void 0 ? _a : u.url, "data-cy": "titan-chatbot-links-link", "data-pendo": "titan-chatbot-links-link-secondary", children: (_b = u.title) !== null && _b !== void 0 ? _b : u.url }) }) }, u.url));
|
|
19
22
|
}) }) })] }));
|
|
20
23
|
};
|
|
21
24
|
//# sourceMappingURL=chatbot-links.js.map
|
|
@@ -1 +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;
|
|
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,UAAU,MAAM,YAAY,CAAC;AACpC,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;IAC3D,MAAM,SAAS,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,CAAC;IAE5C,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,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,EACpD,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,aACf,0BAA0B,gBACvB,oCAAoC,YAE9C,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,GACd,GACA,IAbN,CAAC,CAAC,GAAG,CAcT,CACR,CAAA;qBAAA,CAAC,GACD,GACK,IACP,CACd,CAAC;AACN,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/titan-chatbot-ui",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.4",
|
|
4
4
|
"description": "Chatbot experience UI package",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,17 +17,15 @@
|
|
|
17
17
|
"push:local": "yalc push"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@servicetitan/titan-chat-ui": "^3.1.
|
|
21
|
-
"@servicetitan/titan-chat-ui-common": "^3.1.
|
|
22
|
-
"@servicetitan/titan-chatbot-api": "^3.1.
|
|
20
|
+
"@servicetitan/titan-chat-ui": "^3.1.4",
|
|
21
|
+
"@servicetitan/titan-chat-ui-common": "^3.1.4",
|
|
22
|
+
"@servicetitan/titan-chatbot-api": "^3.1.4",
|
|
23
23
|
"nanoid": "^5.1.5"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"@servicetitan/confirm": ">=27",
|
|
27
27
|
"@servicetitan/culture": ">=27",
|
|
28
28
|
"@servicetitan/design-system": "^14",
|
|
29
|
-
"@servicetitan/form": ">=27",
|
|
30
|
-
"@servicetitan/form-state": ">=27",
|
|
31
29
|
"@servicetitan/log-service": ">=27",
|
|
32
30
|
"@servicetitan/react-ioc": ">=24",
|
|
33
31
|
"@servicetitan/skeleton": ">=8",
|
|
@@ -38,11 +36,11 @@
|
|
|
38
36
|
"mobx": ">=6",
|
|
39
37
|
"mobx-react": ">=9",
|
|
40
38
|
"mobx-utils": ">=6",
|
|
41
|
-
"react": "
|
|
42
|
-
"react-dom": "
|
|
39
|
+
"react": ">=18",
|
|
40
|
+
"react-dom": ">=18"
|
|
43
41
|
},
|
|
44
42
|
"devDependencies": {
|
|
45
|
-
"@servicetitan/cypress-shared": "^3.1.
|
|
43
|
+
"@servicetitan/cypress-shared": "^3.1.4",
|
|
46
44
|
"cypress": "^14.3.2"
|
|
47
45
|
},
|
|
48
46
|
"keywords": [
|
|
@@ -55,5 +53,5 @@
|
|
|
55
53
|
"cli": {
|
|
56
54
|
"webpack": false
|
|
57
55
|
},
|
|
58
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "35fca60717ca9d384fe20fd319471a9d728db23d"
|
|
59
57
|
}
|
|
@@ -1,31 +1,51 @@
|
|
|
1
|
-
import { Form, Stack } from '@servicetitan/design-system';
|
|
2
|
-
import { FormStateErrorBanner } from '@servicetitan/form';
|
|
1
|
+
import { Banner, Form, Stack } from '@servicetitan/design-system';
|
|
3
2
|
import { useDependencies } from '@servicetitan/react-ioc';
|
|
4
3
|
import { MessageFeedbackGuardrailStore } from '@servicetitan/titan-chatbot-api';
|
|
5
4
|
import classNames from 'classnames';
|
|
6
5
|
import { observer } from 'mobx-react';
|
|
7
|
-
import { FC } from 'react';
|
|
6
|
+
import { ChangeEvent, FC } from 'react';
|
|
8
7
|
import * as Styles from './chatbot-message-feedback-form.module.less';
|
|
9
8
|
|
|
10
9
|
export const ChatbotMessageFeedbackFormGuardrail: FC = observer(() => {
|
|
11
10
|
const [store] = useDependencies(MessageFeedbackGuardrailStore);
|
|
11
|
+
const errors = store.getFormErrors();
|
|
12
|
+
const status = errors.length === 0 ? 'success' : 'critical';
|
|
13
|
+
|
|
12
14
|
return (
|
|
13
15
|
<Stack direction="column" spacing="2">
|
|
14
|
-
{store.formState.error &&
|
|
16
|
+
{store.formState.error && (
|
|
17
|
+
<Banner
|
|
18
|
+
status={status}
|
|
19
|
+
icon
|
|
20
|
+
title="Form Incomplete"
|
|
21
|
+
data-cy="titan-chatbot-message-feedback-form-error"
|
|
22
|
+
>
|
|
23
|
+
<ul>
|
|
24
|
+
{errors.map((e, index) => (
|
|
25
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
26
|
+
<li key={index}>{e}</li>
|
|
27
|
+
))}
|
|
28
|
+
</ul>
|
|
29
|
+
</Banner>
|
|
30
|
+
)}
|
|
15
31
|
<Form data-cy="titan-chatbot-message-feedback-form">
|
|
16
32
|
<Form.Input
|
|
17
33
|
label="Link to correct article"
|
|
18
34
|
className={classNames(Styles.formItem)}
|
|
19
35
|
error={store.formState.$.linkUrl.error}
|
|
20
36
|
value={store.formState.$.linkUrl.value}
|
|
21
|
-
onChange={
|
|
37
|
+
onChange={(e: ChangeEvent<HTMLInputElement>) => {
|
|
38
|
+
store.formState.$.linkUrl.onChange(e.currentTarget.value);
|
|
39
|
+
}}
|
|
22
40
|
data-cy="titan-chatbot-message-feedback-form-link-url"
|
|
23
41
|
/>
|
|
24
42
|
<Form.TextArea
|
|
25
43
|
label="Notes"
|
|
26
44
|
className={classNames(Styles.formItem, Styles.textArea)}
|
|
27
45
|
value={store.formState.$.comment.value}
|
|
28
|
-
onChange={
|
|
46
|
+
onChange={(e: ChangeEvent<HTMLTextAreaElement>) => {
|
|
47
|
+
store.formState.$.comment.onChange(e.currentTarget.value);
|
|
48
|
+
}}
|
|
29
49
|
onBlur={store.formState.$.comment.enableAutoValidationAndValidate}
|
|
30
50
|
data-cy="titan-chatbot-message-feedback-form-other-comment"
|
|
31
51
|
/>
|
|
@@ -3,7 +3,7 @@ import { useDependencies } from '@servicetitan/react-ioc';
|
|
|
3
3
|
import { MessageFeedbackStore } from '@servicetitan/titan-chatbot-api';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
5
|
import { observer } from 'mobx-react';
|
|
6
|
-
import { FC } from 'react';
|
|
6
|
+
import { ChangeEvent, FC } from 'react';
|
|
7
7
|
import * as Styles from './chatbot-message-feedback-form.module.less';
|
|
8
8
|
|
|
9
9
|
export const ChatbotMessageFeedbackForm: FC = observer(() => {
|
|
@@ -14,35 +14,45 @@ export const ChatbotMessageFeedbackForm: FC = observer(() => {
|
|
|
14
14
|
label="Answer is unrelated to my question"
|
|
15
15
|
className={Styles.formItem}
|
|
16
16
|
value={store.formState.$.unrelated.value}
|
|
17
|
-
onChange={
|
|
17
|
+
onChange={(_, checked) => {
|
|
18
|
+
store.formState.$.unrelated.onChange(!!checked);
|
|
19
|
+
}}
|
|
18
20
|
data-cy="titan-chatbot-message-feedback-form-unrelated"
|
|
19
21
|
/>
|
|
20
22
|
<Form.Checkbox
|
|
21
23
|
label="Answer is unclear, not sure what it means"
|
|
22
24
|
className={Styles.formItem}
|
|
23
25
|
value={store.formState.$.unclear.value}
|
|
24
|
-
onChange={
|
|
26
|
+
onChange={(_, checked) => {
|
|
27
|
+
store.formState.$.unclear.onChange(!!checked);
|
|
28
|
+
}}
|
|
25
29
|
data-cy="titan-chatbot-message-feedback-form-unclear"
|
|
26
30
|
/>
|
|
27
31
|
<Form.Checkbox
|
|
28
32
|
label="Answer doesn’t fully address the question"
|
|
29
33
|
className={Styles.formItem}
|
|
30
34
|
value={store.formState.$.notFull.value}
|
|
31
|
-
onChange={
|
|
35
|
+
onChange={(_, checked) => {
|
|
36
|
+
store.formState.$.notFull.onChange(!!checked);
|
|
37
|
+
}}
|
|
32
38
|
data-cy="titan-chatbot-message-feedback-form-not-full"
|
|
33
39
|
/>
|
|
34
40
|
<Form.Checkbox
|
|
35
41
|
label="Answer is incorrect or doesn’t work"
|
|
36
42
|
className={Styles.formItem}
|
|
37
43
|
value={store.formState.$.incorrect.value}
|
|
38
|
-
onChange={
|
|
44
|
+
onChange={(_, checked) => {
|
|
45
|
+
store.formState.$.incorrect.onChange(!!checked);
|
|
46
|
+
}}
|
|
39
47
|
data-cy="titan-chatbot-message-feedback-form-incorrect"
|
|
40
48
|
/>
|
|
41
49
|
<Form.Checkbox
|
|
42
50
|
label="Other"
|
|
43
51
|
className={Styles.formItem}
|
|
44
52
|
value={store.formState.$.other.value}
|
|
45
|
-
onChange={
|
|
53
|
+
onChange={(_, checked) => {
|
|
54
|
+
store.formState.$.other.onChange(!!checked);
|
|
55
|
+
}}
|
|
46
56
|
data-cy="titan-chatbot-message-feedback-form-other"
|
|
47
57
|
/>
|
|
48
58
|
{store.isTextAreaVisible && (
|
|
@@ -51,7 +61,9 @@ export const ChatbotMessageFeedbackForm: FC = observer(() => {
|
|
|
51
61
|
className={classNames(Styles.formItem, Styles.textArea)}
|
|
52
62
|
error={store.formState.$.otherComment.error}
|
|
53
63
|
value={store.formState.$.otherComment.value}
|
|
54
|
-
onChange={
|
|
64
|
+
onChange={(e: ChangeEvent<HTMLTextAreaElement>) => {
|
|
65
|
+
store.formState.$.otherComment.onChange(e.currentTarget.value);
|
|
66
|
+
}}
|
|
55
67
|
onBlur={store.formState.$.otherComment.enableAutoValidationAndValidate}
|
|
56
68
|
data-cy="titan-chatbot-message-feedback-form-other-comment"
|
|
57
69
|
/>
|
|
@@ -2,7 +2,7 @@ import { BodyText, Button, ButtonGroup, Form, Modal, Stack } from '@servicetitan
|
|
|
2
2
|
import { provide, useDependencies } from '@servicetitan/react-ioc';
|
|
3
3
|
import { CHATBOT_UI_STORE_TOKEN, SessionFeedbackStore } from '@servicetitan/titan-chatbot-api';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
|
-
import { FC, useCallback } from 'react';
|
|
5
|
+
import { ChangeEvent, FC, useCallback } from 'react';
|
|
6
6
|
|
|
7
7
|
export const ChatbotSessionFeedbackModal: FC<{ onClose: () => void }> = provide({
|
|
8
8
|
singletons: [SessionFeedbackStore],
|
|
@@ -85,7 +85,11 @@ export const ChatbotSessionFeedbackModal: FC<{ onClose: () => void }> = provide(
|
|
|
85
85
|
label="Tell us more"
|
|
86
86
|
maxRows={3}
|
|
87
87
|
value={chatbotFeedbackStore.formState.$.comment.value}
|
|
88
|
-
onChange={
|
|
88
|
+
onChange={(e: ChangeEvent<HTMLTextAreaElement>) => {
|
|
89
|
+
chatbotFeedbackStore.formState.$.comment.onChange(
|
|
90
|
+
e.currentTarget.value
|
|
91
|
+
);
|
|
92
|
+
}}
|
|
89
93
|
data-cy="titan-chatbot-session-feedback-comment"
|
|
90
94
|
/>
|
|
91
95
|
</Stack>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BodyText, Collapsible, Icon, Link, Stack } from '@servicetitan/design-system';
|
|
2
2
|
import { Models } from '@servicetitan/titan-chatbot-api';
|
|
3
|
+
import classNames from 'classnames';
|
|
3
4
|
import { FC, Fragment, useCallback, useState } from 'react';
|
|
4
5
|
import * as Styles from './chatbot-links.module.less';
|
|
5
6
|
|
|
@@ -22,6 +23,8 @@ export const ChatbotLinks: FC<ChatLinksProps> = ({
|
|
|
22
23
|
seeMoreLabel,
|
|
23
24
|
}) => {
|
|
24
25
|
const [linksCollapsed, setLinksCollapsed] = useState(true);
|
|
26
|
+
const className = linkProps?.className;
|
|
27
|
+
const primary = Boolean(linkProps?.primary);
|
|
25
28
|
|
|
26
29
|
const handleToggleCollapsible = useCallback(() => {
|
|
27
30
|
setLinksCollapsed(!linksCollapsed);
|
|
@@ -57,12 +60,11 @@ export const ChatbotLinks: FC<ChatLinksProps> = ({
|
|
|
57
60
|
<Link
|
|
58
61
|
href={u.url}
|
|
59
62
|
target="_blank"
|
|
60
|
-
className={Styles.messageLink}
|
|
61
|
-
primary
|
|
63
|
+
className={classNames(Styles.messageLink, className)}
|
|
64
|
+
primary={primary}
|
|
65
|
+
title={u.title ?? u.url}
|
|
62
66
|
data-cy="titan-chatbot-links-link"
|
|
63
67
|
data-pendo="titan-chatbot-links-link-secondary"
|
|
64
|
-
title={u.title ?? u.url}
|
|
65
|
-
{...linkProps}
|
|
66
68
|
>
|
|
67
69
|
{u.title ?? u.url}
|
|
68
70
|
</Link>
|