@defra/flood-webchat 0.0.1-beta.21 → 0.0.1-beta.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.js +301 -22
- package/dist/client.js.map +1 -1
- package/package.json +1 -1
- package/src/client/components/availability/availability.jsx +3 -3
- package/src/client/components/chat/chat.jsx +13 -5
- package/src/client/components/panel/panel-header.jsx +4 -2
- package/src/client/components/panel/panel.jsx +15 -1
- package/src/client/components/screens/end-chat.jsx +22 -2
- package/src/client/components/screens/end-feedback.jsx +18 -0
- package/src/client/components/screens/feedback.jsx +149 -0
- package/src/client/components/screens/request-chat.jsx +5 -1
- package/src/client/store/AppProvider.jsx +1 -0
package/dist/client.js
CHANGED
|
@@ -24,10 +24,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
24
24
|
function Availability() {
|
|
25
25
|
const {
|
|
26
26
|
availability,
|
|
27
|
-
messages,
|
|
28
27
|
isChatOpen,
|
|
29
28
|
setChatVisibility,
|
|
30
|
-
unseenCount
|
|
29
|
+
unseenCount,
|
|
30
|
+
threadId
|
|
31
31
|
} = (0,_store_useApp__WEBPACK_IMPORTED_MODULE_3__.useApp)();
|
|
32
32
|
const [isFixed, setIsFixed] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
33
33
|
const buttonRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
|
|
@@ -47,7 +47,7 @@ function Availability() {
|
|
|
47
47
|
const intersectionCallback = entries => {
|
|
48
48
|
const [entry] = entries;
|
|
49
49
|
const isBelowFold = !entry.isIntersecting && entry.boundingClientRect.top > 0;
|
|
50
|
-
setIsFixed(!isChatOpen && isBelowFold);
|
|
50
|
+
setIsFixed(!isChatOpen && isBelowFold && threadId);
|
|
51
51
|
};
|
|
52
52
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
53
53
|
const observer = new window.IntersectionObserver(intersectionCallback, {
|
|
@@ -68,7 +68,7 @@ function Availability() {
|
|
|
68
68
|
document.body.classList.toggle('wc-scroll-padding', isFixed);
|
|
69
69
|
}, [isFixed]);
|
|
70
70
|
let TextComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, "Show Chat");
|
|
71
|
-
if (!
|
|
71
|
+
if (!threadId) {
|
|
72
72
|
TextComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, "Start Chat");
|
|
73
73
|
}
|
|
74
74
|
switch (availability) {
|
|
@@ -175,7 +175,6 @@ function Chat({
|
|
|
175
175
|
connectionHeadlineText = 'Webchat is not currently available';
|
|
176
176
|
}
|
|
177
177
|
const sendMessage = e => {
|
|
178
|
-
e.preventDefault();
|
|
179
178
|
if (messageRef.current.value.length === 0) {
|
|
180
179
|
return;
|
|
181
180
|
}
|
|
@@ -186,11 +185,20 @@ function Chat({
|
|
|
186
185
|
}
|
|
187
186
|
setUserMessage('');
|
|
188
187
|
};
|
|
188
|
+
const handleKeyPress = e => {
|
|
189
|
+
if (e.key === 'Enter' && !e.shiftKey) {
|
|
190
|
+
e.preventDefault();
|
|
191
|
+
sendMessage();
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
const handleSubmit = e => {
|
|
195
|
+
e.preventDefault();
|
|
196
|
+
sendMessage();
|
|
197
|
+
};
|
|
189
198
|
const saveChat = () => {
|
|
190
199
|
const transcript = (0,_lib_transform_messages_js__WEBPACK_IMPORTED_MODULE_6__.formatTranscript)(messages);
|
|
191
200
|
const saveChatLink = document.querySelector('#transcript-download');
|
|
192
201
|
saveChatLink.setAttribute('href', `data:text/plain;charset=utf-8,${transcript}`);
|
|
193
|
-
saveChatLink.click();
|
|
194
202
|
};
|
|
195
203
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_panel_panel_header_jsx__WEBPACK_IMPORTED_MODULE_1__.PanelHeader, null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
196
204
|
className: "wc-status"
|
|
@@ -245,7 +253,8 @@ function Chat({
|
|
|
245
253
|
className: "wc-footer__input"
|
|
246
254
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("form", {
|
|
247
255
|
className: "wc-form",
|
|
248
|
-
noValidate: true
|
|
256
|
+
noValidate: true,
|
|
257
|
+
onSubmit: handleSubmit
|
|
249
258
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
250
259
|
className: "govuk-label wc-form__label govuk-!-font-size-16",
|
|
251
260
|
htmlFor: "wc-form-textarea"
|
|
@@ -259,13 +268,13 @@ function Chat({
|
|
|
259
268
|
id: "wc-form-textarea",
|
|
260
269
|
name: "message",
|
|
261
270
|
onChange: onChange,
|
|
271
|
+
onKeyPress: handleKeyPress,
|
|
262
272
|
value: userMessage
|
|
263
273
|
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
264
274
|
type: "submit",
|
|
265
275
|
className: "wc-form__button govuk-button govuk-!-font-size-16",
|
|
266
276
|
value: "Send",
|
|
267
|
-
"data-prevent-double-click": "true"
|
|
268
|
-
onClick: sendMessage
|
|
277
|
+
"data-prevent-double-click": "true"
|
|
269
278
|
}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
270
279
|
className: "wc-footer__settings"
|
|
271
280
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
@@ -416,8 +425,10 @@ function PanelHeader() {
|
|
|
416
425
|
const onClose = e => {
|
|
417
426
|
e.preventDefault();
|
|
418
427
|
setChatVisibility(false);
|
|
419
|
-
thread
|
|
420
|
-
|
|
428
|
+
if (thread) {
|
|
429
|
+
thread.lastMessageSeen();
|
|
430
|
+
setUnseenCount(0);
|
|
431
|
+
}
|
|
421
432
|
};
|
|
422
433
|
let ButtonComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
|
|
423
434
|
className: "wc-header__close",
|
|
@@ -479,9 +490,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
479
490
|
/* harmony import */ var _screens_unavailable_jsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../screens/unavailable.jsx */ "./src/client/components/screens/unavailable.jsx");
|
|
480
491
|
/* harmony import */ var _screens_end_chat_jsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../screens/end-chat.jsx */ "./src/client/components/screens/end-chat.jsx");
|
|
481
492
|
/* harmony import */ var _screens_settings_jsx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../screens/settings.jsx */ "./src/client/components/screens/settings.jsx");
|
|
482
|
-
/* harmony import */ var
|
|
483
|
-
/* harmony import */ var
|
|
484
|
-
/* harmony import */ var
|
|
493
|
+
/* harmony import */ var _screens_feedback_jsx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../screens/feedback.jsx */ "./src/client/components/screens/feedback.jsx");
|
|
494
|
+
/* harmony import */ var _store_useApp_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../store/useApp.js */ "./src/client/store/useApp.js");
|
|
495
|
+
/* harmony import */ var _store_useChatSdk_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../store/useChatSdk.js */ "./src/client/store/useChatSdk.js");
|
|
496
|
+
/* harmony import */ var _hooks_useFocusedElements_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../hooks/useFocusedElements.js */ "./src/client/hooks/useFocusedElements.js");
|
|
497
|
+
/* harmony import */ var _screens_end_feedback_jsx__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../screens/end-feedback.jsx */ "./src/client/components/screens/end-feedback.jsx");
|
|
498
|
+
|
|
499
|
+
|
|
485
500
|
|
|
486
501
|
|
|
487
502
|
|
|
@@ -504,13 +519,13 @@ function Panel() {
|
|
|
504
519
|
setChatVisibility,
|
|
505
520
|
setMessages,
|
|
506
521
|
setUnseenCount
|
|
507
|
-
} = (0,
|
|
522
|
+
} = (0,_store_useApp_js__WEBPACK_IMPORTED_MODULE_9__.useApp)();
|
|
508
523
|
const {
|
|
509
524
|
fetchThread,
|
|
510
525
|
fetchMessages
|
|
511
|
-
} = (0,
|
|
526
|
+
} = (0,_store_useChatSdk_js__WEBPACK_IMPORTED_MODULE_10__.useChatSdk)(sdk);
|
|
512
527
|
const [screen, setScreen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(threadId ? 2 : 0);
|
|
513
|
-
(0,
|
|
528
|
+
(0,_hooks_useFocusedElements_js__WEBPACK_IMPORTED_MODULE_11__.useFocusedElements)(screen);
|
|
514
529
|
|
|
515
530
|
/**
|
|
516
531
|
* Initializes the eventListener for pressing the escape key
|
|
@@ -551,6 +566,10 @@ function Panel() {
|
|
|
551
566
|
}, [thread, threadId]);
|
|
552
567
|
const onEscapeKey = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e => {
|
|
553
568
|
if (e.key === 'Escape' || e.key === 'Esc') {
|
|
569
|
+
if (thread) {
|
|
570
|
+
thread.lastMessageSeen();
|
|
571
|
+
setUnseenCount(0);
|
|
572
|
+
}
|
|
554
573
|
setChatVisibility(false);
|
|
555
574
|
}
|
|
556
575
|
}, []);
|
|
@@ -562,7 +581,9 @@ function Panel() {
|
|
|
562
581
|
const goToRequestChatScreen = handleScreenChange(1);
|
|
563
582
|
const goToChatScreen = handleScreenChange(2);
|
|
564
583
|
const goToEndChatScreen = handleScreenChange(3);
|
|
584
|
+
const goToFeedbackScreen = handleScreenChange(4);
|
|
565
585
|
const goToSettingsScreen = handleScreenChange(5);
|
|
586
|
+
const goToEndFeedbackScreen = handleScreenChange(6);
|
|
566
587
|
let ScreenComponent;
|
|
567
588
|
switch (screen) {
|
|
568
589
|
case 0:
|
|
@@ -583,7 +604,14 @@ function Panel() {
|
|
|
583
604
|
break;
|
|
584
605
|
case 3:
|
|
585
606
|
ScreenComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_screens_end_chat_jsx__WEBPACK_IMPORTED_MODULE_6__.EndChat, {
|
|
586
|
-
onChatScreen: goToChatScreen
|
|
607
|
+
onChatScreen: goToChatScreen,
|
|
608
|
+
onEndChatConfirm: goToFeedbackScreen
|
|
609
|
+
});
|
|
610
|
+
break;
|
|
611
|
+
case 4:
|
|
612
|
+
ScreenComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_screens_feedback_jsx__WEBPACK_IMPORTED_MODULE_8__.Feedback, {
|
|
613
|
+
onCancel: () => setChatVisibility(false),
|
|
614
|
+
onConfirmSubmit: goToEndFeedbackScreen
|
|
587
615
|
});
|
|
588
616
|
break;
|
|
589
617
|
case 5:
|
|
@@ -591,6 +619,11 @@ function Panel() {
|
|
|
591
619
|
onCancel: goToChatScreen
|
|
592
620
|
});
|
|
593
621
|
break;
|
|
622
|
+
case 6:
|
|
623
|
+
ScreenComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_screens_end_feedback_jsx__WEBPACK_IMPORTED_MODULE_12__.EndFeedback, {
|
|
624
|
+
onClose: () => setChatVisibility(false)
|
|
625
|
+
});
|
|
626
|
+
break;
|
|
594
627
|
default:
|
|
595
628
|
ScreenComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_screens_pre_chat_jsx__WEBPACK_IMPORTED_MODULE_2__.PreChat, {
|
|
596
629
|
onContinue: goToRequestChatScreen
|
|
@@ -625,11 +658,36 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
625
658
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
626
659
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
627
660
|
/* harmony import */ var _panel_panel_header_jsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../panel/panel-header.jsx */ "./src/client/components/panel/panel-header.jsx");
|
|
661
|
+
/* harmony import */ var _store_useApp_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../store/useApp.js */ "./src/client/store/useApp.js");
|
|
662
|
+
|
|
628
663
|
|
|
629
664
|
|
|
630
665
|
function EndChat({
|
|
631
|
-
onChatScreen
|
|
666
|
+
onChatScreen,
|
|
667
|
+
onEndChatConfirm
|
|
632
668
|
}) {
|
|
669
|
+
const {
|
|
670
|
+
setCustomerId,
|
|
671
|
+
setThreadId,
|
|
672
|
+
setMessages,
|
|
673
|
+
agentStatus,
|
|
674
|
+
thread,
|
|
675
|
+
setUnseenCount
|
|
676
|
+
} = (0,_store_useApp_js__WEBPACK_IMPORTED_MODULE_2__.useApp)();
|
|
677
|
+
const confirmEndChat = async e => {
|
|
678
|
+
e.preventDefault();
|
|
679
|
+
setThreadId();
|
|
680
|
+
setMessages([]);
|
|
681
|
+
setCustomerId();
|
|
682
|
+
thread.lastMessageSeen();
|
|
683
|
+
setUnseenCount(0);
|
|
684
|
+
|
|
685
|
+
// End chat if still open
|
|
686
|
+
if (agentStatus !== 'closed') {
|
|
687
|
+
thread.endChat();
|
|
688
|
+
}
|
|
689
|
+
onEndChatConfirm(e);
|
|
690
|
+
};
|
|
633
691
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_panel_panel_header_jsx__WEBPACK_IMPORTED_MODULE_1__.PanelHeader, null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
634
692
|
className: "wc-body"
|
|
635
693
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
@@ -640,7 +698,9 @@ function EndChat({
|
|
|
640
698
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
641
699
|
href: "#",
|
|
642
700
|
className: "govuk-button govuk-!-font-size-16",
|
|
643
|
-
"data-module": "govuk-button"
|
|
701
|
+
"data-module": "govuk-button",
|
|
702
|
+
id: "confirmEndChat",
|
|
703
|
+
onClick: confirmEndChat
|
|
644
704
|
}, "Yes, end chat"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
645
705
|
href: "#",
|
|
646
706
|
className: "govuk-link govuk-!-font-size-16",
|
|
@@ -650,6 +710,218 @@ function EndChat({
|
|
|
650
710
|
|
|
651
711
|
/***/ }),
|
|
652
712
|
|
|
713
|
+
/***/ "./src/client/components/screens/end-feedback.jsx":
|
|
714
|
+
/*!********************************************************!*\
|
|
715
|
+
!*** ./src/client/components/screens/end-feedback.jsx ***!
|
|
716
|
+
\********************************************************/
|
|
717
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
718
|
+
|
|
719
|
+
__webpack_require__.r(__webpack_exports__);
|
|
720
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
721
|
+
/* harmony export */ EndFeedback: () => (/* binding */ EndFeedback)
|
|
722
|
+
/* harmony export */ });
|
|
723
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
724
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
725
|
+
/* harmony import */ var _panel_panel_header_jsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../panel/panel-header.jsx */ "./src/client/components/panel/panel-header.jsx");
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
function EndFeedback({
|
|
729
|
+
onClose
|
|
730
|
+
}) {
|
|
731
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_panel_panel_header_jsx__WEBPACK_IMPORTED_MODULE_1__.PanelHeader, null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
732
|
+
className: "wc-body"
|
|
733
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
734
|
+
id: "wc-subtitle",
|
|
735
|
+
class: "govuk-heading-m"
|
|
736
|
+
}, "Thank you for your feedback"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
737
|
+
href: "#",
|
|
738
|
+
role: "button",
|
|
739
|
+
draggable: "false",
|
|
740
|
+
"data-module": "govuk-button",
|
|
741
|
+
"data-wc-focus-visible": true,
|
|
742
|
+
"data-wc-close-btn": true,
|
|
743
|
+
onClick: onClose
|
|
744
|
+
}, "Close window"))));
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
/***/ }),
|
|
748
|
+
|
|
749
|
+
/***/ "./src/client/components/screens/feedback.jsx":
|
|
750
|
+
/*!****************************************************!*\
|
|
751
|
+
!*** ./src/client/components/screens/feedback.jsx ***!
|
|
752
|
+
\****************************************************/
|
|
753
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
754
|
+
|
|
755
|
+
__webpack_require__.r(__webpack_exports__);
|
|
756
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
757
|
+
/* harmony export */ Feedback: () => (/* binding */ Feedback)
|
|
758
|
+
/* harmony export */ });
|
|
759
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
760
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
761
|
+
/* harmony import */ var _panel_panel_header_jsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../panel/panel-header.jsx */ "./src/client/components/panel/panel-header.jsx");
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
function Feedback({
|
|
765
|
+
onConfirmSubmit,
|
|
766
|
+
onCancel
|
|
767
|
+
}) {
|
|
768
|
+
const feedbackSubmit = async e => {
|
|
769
|
+
e.preventDefault();
|
|
770
|
+
onConfirmSubmit(e);
|
|
771
|
+
onCancel(e);
|
|
772
|
+
};
|
|
773
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_panel_panel_header_jsx__WEBPACK_IMPORTED_MODULE_1__.PanelHeader, null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
774
|
+
className: "wc-body"
|
|
775
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
776
|
+
id: "wc-subtitle",
|
|
777
|
+
className: "govuk-heading-s"
|
|
778
|
+
}, "Give Feedback on Floodline webchat"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Please note we\u2019re unable to respond to feedback."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
779
|
+
className: "govuk-form-group"
|
|
780
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("fieldset", {
|
|
781
|
+
className: "govuk-fieldset govuk-!-margin-bottom-4"
|
|
782
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("legend", {
|
|
783
|
+
className: "govuk-fieldset-heading govuk-fieldset__legend"
|
|
784
|
+
}, "Overall, how did you feel about webchat?"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
785
|
+
className: "govuk-radios govuk-radios--small",
|
|
786
|
+
"data-module": "govuk-radios"
|
|
787
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
788
|
+
className: "govuk-radios__item"
|
|
789
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
790
|
+
id: "very-satisfied",
|
|
791
|
+
name: "satisfaction",
|
|
792
|
+
type: "radio",
|
|
793
|
+
className: "govuk-radios__input",
|
|
794
|
+
value: "Very satisfied"
|
|
795
|
+
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
796
|
+
className: "govuk-label govuk-radios__label",
|
|
797
|
+
for: "very-satisfied"
|
|
798
|
+
}, "Very satisfied")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
799
|
+
className: "govuk-radios__item"
|
|
800
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
801
|
+
id: "satisfied",
|
|
802
|
+
name: "satisfaction",
|
|
803
|
+
type: "radio",
|
|
804
|
+
className: "govuk-radios__input",
|
|
805
|
+
value: "Satisfied"
|
|
806
|
+
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
807
|
+
className: "govuk-label govuk-radios__label",
|
|
808
|
+
for: "satisfied"
|
|
809
|
+
}, "Satisfied")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
810
|
+
className: "govuk-radios__item"
|
|
811
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
812
|
+
id: "no-opinion",
|
|
813
|
+
name: "satisfaction",
|
|
814
|
+
type: "radio",
|
|
815
|
+
className: "govuk-radios__input",
|
|
816
|
+
value: "No opinion"
|
|
817
|
+
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
818
|
+
className: "govuk-label govuk-radios__label",
|
|
819
|
+
for: "no-opinion"
|
|
820
|
+
}, "No Opinion")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
821
|
+
className: "govuk-radios__item"
|
|
822
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
823
|
+
id: "dissatisfied",
|
|
824
|
+
name: "satisfaction",
|
|
825
|
+
type: "radio",
|
|
826
|
+
className: "govuk-radios__input",
|
|
827
|
+
value: "Dissatisfied"
|
|
828
|
+
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
829
|
+
className: "govuk-label govuk-radios__label",
|
|
830
|
+
for: "dissatisfied"
|
|
831
|
+
}, "Dissatisfied")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
832
|
+
className: "govuk-radios__item"
|
|
833
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
834
|
+
id: "very-dissatisfied",
|
|
835
|
+
name: "satisfaction",
|
|
836
|
+
type: "radio",
|
|
837
|
+
className: "govuk-radios__input",
|
|
838
|
+
value: "Very dissatisfied"
|
|
839
|
+
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
840
|
+
className: "govuk-label govuk-radios__label",
|
|
841
|
+
for: "very-dissatisfied"
|
|
842
|
+
}, "Very dissatisfied")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("fieldset", {
|
|
843
|
+
className: "govuk-fieldset govuk-!-margin-bottom-4"
|
|
844
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("legend", {
|
|
845
|
+
className: "govuk-fieldset__legend"
|
|
846
|
+
}, "Did the adviser answer your question?"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
847
|
+
className: "govuk-radios govuk-radios--small",
|
|
848
|
+
"data-module": "govuk-radios"
|
|
849
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
850
|
+
className: "govuk-radios__item"
|
|
851
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
852
|
+
id: "answer-yes",
|
|
853
|
+
name: "answer",
|
|
854
|
+
type: "radio",
|
|
855
|
+
className: "govuk-radios__input",
|
|
856
|
+
value: "Yes"
|
|
857
|
+
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
858
|
+
className: "govuk-label govuk-radios__label",
|
|
859
|
+
for: "answer-yes"
|
|
860
|
+
}, "Yes")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
861
|
+
className: "govuk-radios__item"
|
|
862
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
863
|
+
id: "answer-no",
|
|
864
|
+
name: "answer",
|
|
865
|
+
type: "radio",
|
|
866
|
+
className: "govuk-radios__input",
|
|
867
|
+
value: "No"
|
|
868
|
+
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
869
|
+
className: "govuk-label govuk-radios__label",
|
|
870
|
+
for: "answer-no"
|
|
871
|
+
}, "No")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
872
|
+
className: "govuk-radios__item"
|
|
873
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
874
|
+
id: "answer-partly",
|
|
875
|
+
name: "answer",
|
|
876
|
+
type: "radio",
|
|
877
|
+
className: "govuk-radios__input",
|
|
878
|
+
value: "Partly"
|
|
879
|
+
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
880
|
+
className: "govuk-label govuk-radios__label",
|
|
881
|
+
for: "answer-partly"
|
|
882
|
+
}, "Partly"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
883
|
+
className: "govuk-form-group"
|
|
884
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
885
|
+
className: "govuk-label",
|
|
886
|
+
for: "improvements"
|
|
887
|
+
}, "How can we improve webchat? (optional)"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("textarea", {
|
|
888
|
+
className: "govuk-textarea govuk-!-margin-bottom-4",
|
|
889
|
+
id: "improvements",
|
|
890
|
+
name: "improvements",
|
|
891
|
+
rows: "5"
|
|
892
|
+
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
893
|
+
className: "govuk-form-group"
|
|
894
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
895
|
+
className: "wc-fieldset-heading govuk-label",
|
|
896
|
+
for: "research"
|
|
897
|
+
}, "Tell us your email address if you want to take part in user research (optional)"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
898
|
+
id: "research-hint",
|
|
899
|
+
class: "wc-hint govuk-hint"
|
|
900
|
+
}, "We will not share your email address or use it for anything else. We\u2019ll delete it after 2 years."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
901
|
+
className: "govuk-input govuk-!-margin-bottom-4",
|
|
902
|
+
id: "research",
|
|
903
|
+
name: "research",
|
|
904
|
+
"aria-describedby": "research-hint",
|
|
905
|
+
type: "text"
|
|
906
|
+
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
907
|
+
className: "govuk-button-group"
|
|
908
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
909
|
+
id: "feedback-save",
|
|
910
|
+
href: "#",
|
|
911
|
+
className: "govuk-button govuk-!-font-size-16",
|
|
912
|
+
"data-module": "govuk-button",
|
|
913
|
+
onClick: feedbackSubmit
|
|
914
|
+
}, "Submit"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
915
|
+
id: "feedback-cancel",
|
|
916
|
+
href: "#",
|
|
917
|
+
className: "govuk-link govuk-!-font-size-16",
|
|
918
|
+
"data-module": "govuk-button",
|
|
919
|
+
onClick: onCancel
|
|
920
|
+
}, "Cancel"))));
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
/***/ }),
|
|
924
|
+
|
|
653
925
|
/***/ "./src/client/components/screens/pre-chat.jsx":
|
|
654
926
|
/*!****************************************************!*\
|
|
655
927
|
!*** ./src/client/components/screens/pre-chat.jsx ***!
|
|
@@ -760,6 +1032,7 @@ function RequestChat({
|
|
|
760
1032
|
} = (0,_store_useChatSdk_js__WEBPACK_IMPORTED_MODULE_5__.useChatSdk)(sdk);
|
|
761
1033
|
const [errors, setErrors] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});
|
|
762
1034
|
const [questionLength, setQuestionLength] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);
|
|
1035
|
+
const [isButtonDisabled, setButtonDisabled] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
763
1036
|
const nameRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
|
|
764
1037
|
const questionRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
|
|
765
1038
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
@@ -784,6 +1057,7 @@ function RequestChat({
|
|
|
784
1057
|
}
|
|
785
1058
|
if (Object.keys(errs).length === 0) {
|
|
786
1059
|
try {
|
|
1060
|
+
setButtonDisabled(true);
|
|
787
1061
|
const threadId = uuid__WEBPACK_IMPORTED_MODULE_1__.v4();
|
|
788
1062
|
const customerId = await fetchCustomerId();
|
|
789
1063
|
const thread = await fetchThread(threadId);
|
|
@@ -792,6 +1066,7 @@ function RequestChat({
|
|
|
792
1066
|
setCustomerId(customerId);
|
|
793
1067
|
setThreadId(threadId);
|
|
794
1068
|
setThread(thread);
|
|
1069
|
+
thread.setCustomField('threadid', threadId);
|
|
795
1070
|
} catch (err) {
|
|
796
1071
|
console.log('[Request Chat Error]', err);
|
|
797
1072
|
}
|
|
@@ -867,8 +1142,9 @@ function RequestChat({
|
|
|
867
1142
|
}, questionHint))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
|
|
868
1143
|
className: "govuk-button govuk-!-margin-top-1 govuk-!-font-size-16",
|
|
869
1144
|
"data-module": "govuk-button",
|
|
870
|
-
onClick: onRequestChat
|
|
871
|
-
|
|
1145
|
+
onClick: onRequestChat,
|
|
1146
|
+
disabled: isButtonDisabled
|
|
1147
|
+
}, isButtonDisabled ? 'Requesting...' : 'Request Chat'))));
|
|
872
1148
|
}
|
|
873
1149
|
|
|
874
1150
|
/***/ }),
|
|
@@ -1311,6 +1587,9 @@ const AppProvider = ({
|
|
|
1311
1587
|
});
|
|
1312
1588
|
};
|
|
1313
1589
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
1590
|
+
sdk.onChatEvent('SetConsumerContactCustomFields', () => {
|
|
1591
|
+
console.log('Custom field set');
|
|
1592
|
+
});
|
|
1314
1593
|
sdk.onChatEvent(_nice_devone_nice_cxone_chat_web_sdk__WEBPACK_IMPORTED_MODULE_1__.ChatEvent.LIVECHAT_RECOVERED, onLiveChatRecovered);
|
|
1315
1594
|
sdk.onChatEvent(_nice_devone_nice_cxone_chat_web_sdk__WEBPACK_IMPORTED_MODULE_1__.ChatEvent.MESSAGE_CREATED, onMessageCreated);
|
|
1316
1595
|
sdk.onChatEvent(_nice_devone_nice_cxone_chat_web_sdk__WEBPACK_IMPORTED_MODULE_1__.ChatEvent.AGENT_TYPING_STARTED, onAgentTypingStarted);
|