@defra/flood-webchat 0.0.1-beta.26 → 0.0.1-beta.28
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 +256 -105
- package/dist/client.js.map +1 -1
- package/main.scss +10 -6
- package/package.json +1 -1
- package/src/client/components/availability/availability.jsx +9 -4
- package/src/client/components/availability/availability.scss +8 -134
- package/src/client/components/chat/chat.jsx +50 -51
- package/src/client/components/chat/chat.scss +113 -35
- package/src/client/components/errorSummary/error-summary.jsx +2 -2
- package/src/client/components/message/message.jsx +4 -4
- package/src/client/components/panel/panel-header.jsx +40 -11
- package/src/client/components/panel/panel.jsx +21 -4
- package/src/client/components/panel/panel.scss +62 -22
- package/src/client/components/screens/end-chat.jsx +6 -4
- package/src/client/components/screens/feedback.jsx +5 -5
- package/src/client/components/screens/pre-chat.jsx +45 -44
- package/src/client/components/screens/request-chat.jsx +74 -67
- package/src/client/components/screens/settings.jsx +39 -37
- package/src/client/hooks/useFocusedElements.js +12 -2
- package/src/client/lib/history.js +13 -0
- package/src/client/scss/_objects.scss +33 -0
- package/src/client/scss/_settings.scss +75 -0
- package/src/client/scss/_tools.scss +33 -0
- package/src/client/scss/_utilities.scss +25 -0
- package/src/client/store/AppProvider.jsx +39 -4
- package/src/client/store/actions-map.js +17 -1
- package/src/client/store/reducer.js +2 -0
package/dist/client.js
CHANGED
|
@@ -17,6 +17,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
17
17
|
/* harmony import */ var _lib_classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/classnames */ "./src/client/lib/classnames.js");
|
|
18
18
|
/* harmony import */ var _panel_panel_jsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../panel/panel.jsx */ "./src/client/components/panel/panel.jsx");
|
|
19
19
|
/* harmony import */ var _store_useApp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../store/useApp */ "./src/client/store/useApp.js");
|
|
20
|
+
/* harmony import */ var _lib_history_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../lib/history.js */ "./src/client/lib/history.js");
|
|
21
|
+
|
|
20
22
|
|
|
21
23
|
|
|
22
24
|
|
|
@@ -31,8 +33,10 @@ function Availability() {
|
|
|
31
33
|
} = (0,_store_useApp__WEBPACK_IMPORTED_MODULE_3__.useApp)();
|
|
32
34
|
const [isFixed, setIsFixed] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
33
35
|
const buttonRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
|
|
34
|
-
const onClick =
|
|
36
|
+
const onClick = e => {
|
|
37
|
+
e.preventDefault();
|
|
35
38
|
setChatVisibility(!isChatOpen);
|
|
39
|
+
(0,_lib_history_js__WEBPACK_IMPORTED_MODULE_4__.historyPushState)();
|
|
36
40
|
};
|
|
37
41
|
const onKeyDown = event => {
|
|
38
42
|
if (event.key === ' ') {
|
|
@@ -64,8 +68,8 @@ function Availability() {
|
|
|
64
68
|
};
|
|
65
69
|
}, [buttonRef, isChatOpen]);
|
|
66
70
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
67
|
-
document.documentElement.classList.toggle('wc-scroll-padding', isFixed);
|
|
68
|
-
document.body.classList.toggle('wc-scroll-padding', isFixed);
|
|
71
|
+
document.documentElement.classList.toggle('wc-u-scroll-padding', isFixed);
|
|
72
|
+
document.body.classList.toggle('wc-u-scroll-padding', isFixed);
|
|
69
73
|
}, [isFixed]);
|
|
70
74
|
let TextComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, "Show Chat");
|
|
71
75
|
if (!threadId) {
|
|
@@ -84,9 +88,11 @@ function Availability() {
|
|
|
84
88
|
draggable: "false",
|
|
85
89
|
onClick: onClick,
|
|
86
90
|
onKeyUp: onKeyUp,
|
|
87
|
-
onKeyDown: onKeyDown
|
|
91
|
+
onKeyDown: onKeyDown,
|
|
92
|
+
role: "button",
|
|
93
|
+
"data-module": "govuk-button"
|
|
88
94
|
}, TextComponent, unseenCount > 0 && !isChatOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
|
|
89
|
-
className: "wc-
|
|
95
|
+
className: "wc-availability__unseen"
|
|
90
96
|
}, unseenCount) : null))), isChatOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_panel_panel_jsx__WEBPACK_IMPORTED_MODULE_2__.Panel, null));
|
|
91
97
|
case 'EXISTING':
|
|
92
98
|
case 'UNAVAILABLE':
|
|
@@ -138,9 +144,11 @@ function Chat({
|
|
|
138
144
|
agent,
|
|
139
145
|
agentStatus,
|
|
140
146
|
isAgentTyping,
|
|
141
|
-
settings
|
|
147
|
+
settings,
|
|
148
|
+
isKeyboard
|
|
142
149
|
} = (0,_store_useApp_js__WEBPACK_IMPORTED_MODULE_4__.useApp)();
|
|
143
150
|
const [userMessage, setUserMessage] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('');
|
|
151
|
+
const [focusVisibleWithin, setFocusVisibleWithin] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
144
152
|
const messageRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
|
|
145
153
|
(0,_hooks_useTextareaAutosize_js__WEBPACK_IMPORTED_MODULE_5__.useTextareaAutosize)(messageRef.current, userMessage);
|
|
146
154
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
@@ -203,26 +211,25 @@ function Chat({
|
|
|
203
211
|
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", {
|
|
204
212
|
className: "wc-status"
|
|
205
213
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
|
|
206
|
-
className: "wc-status__availability
|
|
214
|
+
className: "wc-status__availability"
|
|
207
215
|
}, connectionHeadlineText), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
208
|
-
className: "wc-status__link
|
|
216
|
+
className: "wc-status__link",
|
|
209
217
|
href: "#",
|
|
210
218
|
"data-module": "govuk-button",
|
|
211
219
|
onClick: onEndChatScreen
|
|
212
220
|
}, "End chat")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
213
|
-
className: "wc-body"
|
|
214
|
-
|
|
215
|
-
className: "wc-chat__body"
|
|
221
|
+
className: "wc-body",
|
|
222
|
+
tabIndex: "0"
|
|
216
223
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", {
|
|
217
|
-
className: "wc-
|
|
224
|
+
className: "wc-chat"
|
|
218
225
|
}, messages.length ? messages.map((msg, index) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_message_message_jsx__WEBPACK_IMPORTED_MODULE_3__.Message, {
|
|
219
226
|
key: msg.id,
|
|
220
227
|
message: msg,
|
|
221
228
|
previousMessage: messages[index - 1]
|
|
222
229
|
})) : null, isAgentTyping ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
|
|
223
|
-
className: "wc-chat__message
|
|
230
|
+
className: "wc-chat__message outbound"
|
|
224
231
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
225
|
-
className: "wc-chat__from
|
|
232
|
+
className: "wc-chat__from"
|
|
226
233
|
}, agentName, " is typing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
227
234
|
className: "wc-chat__text outbound"
|
|
228
235
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("svg", {
|
|
@@ -249,14 +256,12 @@ function Chat({
|
|
|
249
256
|
cy: "8",
|
|
250
257
|
r: "3",
|
|
251
258
|
fill: "currentColor"
|
|
252
|
-
})))) : null))
|
|
253
|
-
className:
|
|
254
|
-
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("form", {
|
|
255
|
-
className: "wc-form",
|
|
259
|
+
})))) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_panel_panel_footer_jsx__WEBPACK_IMPORTED_MODULE_2__.PanelFooter, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("form", {
|
|
260
|
+
className: `wc-form${focusVisibleWithin ? ' wc-focus-within' : ''}`,
|
|
256
261
|
noValidate: true,
|
|
257
262
|
onSubmit: handleSubmit
|
|
258
263
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
259
|
-
className: "govuk-label wc-form__label
|
|
264
|
+
className: "govuk-label wc-form__label",
|
|
260
265
|
htmlFor: "wc-form-textarea"
|
|
261
266
|
}, "Your message", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
|
|
262
267
|
className: "govuk-visually-hidden"
|
|
@@ -264,18 +269,24 @@ function Chat({
|
|
|
264
269
|
ref: messageRef,
|
|
265
270
|
rows: "1",
|
|
266
271
|
"aria-required": "true",
|
|
267
|
-
className: "wc-form__textarea
|
|
272
|
+
className: "wc-form__textarea",
|
|
268
273
|
id: "wc-form-textarea",
|
|
269
274
|
name: "message",
|
|
270
275
|
onChange: onChange,
|
|
271
276
|
onKeyDown: handleKeyPress,
|
|
277
|
+
onFocus: () => {
|
|
278
|
+
setFocusVisibleWithin(isKeyboard);
|
|
279
|
+
},
|
|
280
|
+
onBlur: () => {
|
|
281
|
+
setFocusVisibleWithin(false);
|
|
282
|
+
},
|
|
272
283
|
value: userMessage
|
|
273
284
|
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
274
285
|
type: "submit",
|
|
275
|
-
className: "wc-form__button govuk-button
|
|
286
|
+
className: "wc-form__button govuk-button",
|
|
276
287
|
value: "Send",
|
|
277
288
|
"data-prevent-double-click": "true"
|
|
278
|
-
}))
|
|
289
|
+
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
279
290
|
className: "wc-footer__settings"
|
|
280
291
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
281
292
|
href: "#",
|
|
@@ -328,11 +339,11 @@ const ErrorSummary = ({
|
|
|
328
339
|
role: "alert"
|
|
329
340
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h2", {
|
|
330
341
|
id: "wc-error",
|
|
331
|
-
className: "govuk-error-summary__title"
|
|
342
|
+
className: "wc-error-summary__title govuk-error-summary__title"
|
|
332
343
|
}, "There is a problem"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
333
344
|
className: "govuk-error-summary__body"
|
|
334
345
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", {
|
|
335
|
-
className: "govuk-list govuk-error-summary__list"
|
|
346
|
+
className: "govuk-list govuk-error-summary__list wc-error-summary__list"
|
|
336
347
|
}, errs.map(key => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
|
|
337
348
|
key: key
|
|
338
349
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
@@ -366,13 +377,13 @@ function Message({
|
|
|
366
377
|
const outbound = message.direction === 'outbound';
|
|
367
378
|
const messageOwnerSameAsPrevious = message?.direction === previousMessage?.direction;
|
|
368
379
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", {
|
|
369
|
-
className: (0,_lib_classnames__WEBPACK_IMPORTED_MODULE_1__.classnames)('wc-chat__message
|
|
380
|
+
className: (0,_lib_classnames__WEBPACK_IMPORTED_MODULE_1__.classnames)('wc-chat__message', outbound ? 'outbound' : 'inbound')
|
|
370
381
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
371
|
-
className: "wc-chat__from
|
|
382
|
+
className: "wc-chat__from"
|
|
372
383
|
}, messageOwnerSameAsPrevious ? null : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", null, outbound ? message.assignee : 'You'), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
|
|
373
384
|
className: "govuk-visually-hidden"
|
|
374
|
-
}, ":")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("
|
|
375
|
-
className: (0,_lib_classnames__WEBPACK_IMPORTED_MODULE_1__.classnames)('wc-chat__text',
|
|
385
|
+
}, ":")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
386
|
+
className: (0,_lib_classnames__WEBPACK_IMPORTED_MODULE_1__.classnames)('wc-chat__text', outbound ? 'outbound' : 'inbound')
|
|
376
387
|
}, message.text));
|
|
377
388
|
}
|
|
378
389
|
|
|
@@ -414,24 +425,42 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
414
425
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
415
426
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
416
427
|
/* harmony import */ var _store_useApp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../store/useApp.js */ "./src/client/store/useApp.js");
|
|
428
|
+
/* harmony import */ var _lib_history_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/history.js */ "./src/client/lib/history.js");
|
|
429
|
+
|
|
417
430
|
|
|
418
431
|
|
|
419
432
|
function PanelHeader() {
|
|
420
433
|
const {
|
|
421
434
|
thread,
|
|
435
|
+
threadId,
|
|
422
436
|
setChatVisibility,
|
|
423
437
|
setUnseenCount,
|
|
424
|
-
|
|
438
|
+
isMobile
|
|
425
439
|
} = (0,_store_useApp_js__WEBPACK_IMPORTED_MODULE_1__.useApp)();
|
|
426
440
|
const onClose = e => {
|
|
427
441
|
e.preventDefault();
|
|
428
442
|
setChatVisibility(false);
|
|
443
|
+
(0,_lib_history_js__WEBPACK_IMPORTED_MODULE_2__.historyReplaceState)();
|
|
429
444
|
if (threadId) {
|
|
430
445
|
thread?.lastMessageSeen();
|
|
431
446
|
setUnseenCount(0);
|
|
432
447
|
}
|
|
433
448
|
};
|
|
434
|
-
|
|
449
|
+
const BackButtonComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
|
|
450
|
+
className: "wc-header__back",
|
|
451
|
+
"aria-label": "Close the webchat",
|
|
452
|
+
onClick: onClose
|
|
453
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("svg", {
|
|
454
|
+
"aria-hidden": "true",
|
|
455
|
+
focusable: "false",
|
|
456
|
+
width: "20",
|
|
457
|
+
height: "20",
|
|
458
|
+
viewBox: "0 0 20 20"
|
|
459
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
|
|
460
|
+
d: "M4.828,11L12.314,18.485L10.899,19.899L1,10L10.899,0.101L12.314,1.515L4.828,9L19,9L19,11L4.828,11Z",
|
|
461
|
+
fill: "currentColor"
|
|
462
|
+
})));
|
|
463
|
+
const CloseButtonComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
|
|
435
464
|
className: "wc-header__close",
|
|
436
465
|
"aria-label": "Close the webchat",
|
|
437
466
|
onClick: onClose
|
|
@@ -445,28 +474,39 @@ function PanelHeader() {
|
|
|
445
474
|
d: "M10,8.6L15.6,3L17,4.4L11.4,10L17,15.6L15.6,17L10,11.4L4.4,17L3,15.6L8.6,10L3,4.4L4.4,3L10,8.6Z",
|
|
446
475
|
fill: "currentColor"
|
|
447
476
|
})));
|
|
477
|
+
const MinimiseButtonComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
|
|
478
|
+
className: "wc-header__hide",
|
|
479
|
+
"aria-label": "Minimise the webchat",
|
|
480
|
+
onClick: onClose
|
|
481
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("svg", {
|
|
482
|
+
"aria-hidden": "true",
|
|
483
|
+
focusable: "false",
|
|
484
|
+
width: "20",
|
|
485
|
+
height: "20",
|
|
486
|
+
viewBox: "0 0 20 20"
|
|
487
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
|
|
488
|
+
d: "M10 14.4l-7-7L4.4 6l5.6 5.6L15.6 6 17 7.4l-7 7z",
|
|
489
|
+
fill: "currentColor"
|
|
490
|
+
})));
|
|
491
|
+
let RightButtonComponent = CloseButtonComponent;
|
|
448
492
|
if (thread) {
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
|
|
460
|
-
d: "M10 14.4l-7-7L4.4 6l5.6 5.6L15.6 6 17 7.4l-7 7z",
|
|
461
|
-
fill: "currentColor"
|
|
462
|
-
})));
|
|
493
|
+
RightButtonComponent = MinimiseButtonComponent;
|
|
494
|
+
if (isMobile && !window.history.state) {
|
|
495
|
+
RightButtonComponent = MinimiseButtonComponent;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
if (!thread && isMobile && !window.history.state) {
|
|
499
|
+
RightButtonComponent = CloseButtonComponent;
|
|
500
|
+
}
|
|
501
|
+
if (isMobile && window.history.state) {
|
|
502
|
+
RightButtonComponent = null;
|
|
463
503
|
}
|
|
464
504
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
465
505
|
className: "wc-header"
|
|
466
|
-
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h2", {
|
|
506
|
+
}, window.history.state ? BackButtonComponent : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h2", {
|
|
467
507
|
id: "wc-header-title",
|
|
468
|
-
className: "wc-header__title
|
|
469
|
-
}, "Floodline Webchat"),
|
|
508
|
+
className: "wc-header__title"
|
|
509
|
+
}, "Floodline Webchat"), RightButtonComponent);
|
|
470
510
|
}
|
|
471
511
|
|
|
472
512
|
/***/ }),
|
|
@@ -495,6 +535,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
495
535
|
/* harmony import */ var _store_useApp_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../store/useApp.js */ "./src/client/store/useApp.js");
|
|
496
536
|
/* harmony import */ var _store_useChatSdk_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../store/useChatSdk.js */ "./src/client/store/useChatSdk.js");
|
|
497
537
|
/* harmony import */ var _hooks_useFocusedElements_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../hooks/useFocusedElements.js */ "./src/client/hooks/useFocusedElements.js");
|
|
538
|
+
/* harmony import */ var _lib_history_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../lib/history.js */ "./src/client/lib/history.js");
|
|
539
|
+
|
|
498
540
|
|
|
499
541
|
|
|
500
542
|
|
|
@@ -517,7 +559,8 @@ function Panel() {
|
|
|
517
559
|
setThreadId,
|
|
518
560
|
setChatVisibility,
|
|
519
561
|
setMessages,
|
|
520
|
-
setUnseenCount
|
|
562
|
+
setUnseenCount,
|
|
563
|
+
isMobile
|
|
521
564
|
} = (0,_store_useApp_js__WEBPACK_IMPORTED_MODULE_9__.useApp)();
|
|
522
565
|
const {
|
|
523
566
|
fetchThread,
|
|
@@ -532,16 +575,30 @@ function Panel() {
|
|
|
532
575
|
setUnseenCount(0);
|
|
533
576
|
}
|
|
534
577
|
setChatVisibility(false);
|
|
578
|
+
(0,_lib_history_js__WEBPACK_IMPORTED_MODULE_12__.historyReplaceState)();
|
|
535
579
|
}
|
|
536
580
|
}, [thread, threadId, setUnseenCount, setChatVisibility]);
|
|
537
581
|
|
|
582
|
+
/**
|
|
583
|
+
* We need ammend classes on the body element to handle mobile behaviour
|
|
584
|
+
*/
|
|
585
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
586
|
+
document.body.classList.remove('wc-u-hidden');
|
|
587
|
+
document.getElementsByTagName('html')[0].classList.add('wc-u-html');
|
|
588
|
+
document.body.classList.add('wc-u-body');
|
|
589
|
+
return () => {
|
|
590
|
+
document.getElementsByTagName('html')[0].classList.remove('wc-u-html');
|
|
591
|
+
document.body.classList.remove('wc-u-body');
|
|
592
|
+
};
|
|
593
|
+
}, [isMobile]);
|
|
594
|
+
|
|
538
595
|
/**
|
|
539
596
|
* Initializes the eventListener for pressing the escape key
|
|
540
597
|
*/
|
|
541
598
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
542
|
-
|
|
599
|
+
document.addEventListener('keydown', onEscapeKey);
|
|
543
600
|
return () => {
|
|
544
|
-
document.removeEventListener('keydown',
|
|
601
|
+
document.removeEventListener('keydown', onEscapeKey);
|
|
545
602
|
};
|
|
546
603
|
}, [onEscapeKey, setChatVisibility]);
|
|
547
604
|
|
|
@@ -631,7 +688,9 @@ function Panel() {
|
|
|
631
688
|
tabIndex: "-1",
|
|
632
689
|
"aria-modal": "true",
|
|
633
690
|
"aria-labelledby": "wc-header-title"
|
|
634
|
-
},
|
|
691
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
692
|
+
className: "wc-panel__inner"
|
|
693
|
+
}, ScreenComponent));
|
|
635
694
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/(0,react_dom__WEBPACK_IMPORTED_MODULE_1__.createPortal)(Component, document.body));
|
|
636
695
|
}
|
|
637
696
|
|
|
@@ -682,22 +741,26 @@ function EndChat({
|
|
|
682
741
|
};
|
|
683
742
|
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", {
|
|
684
743
|
className: "wc-body"
|
|
744
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
745
|
+
className: "wc-content"
|
|
685
746
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
686
|
-
className: "
|
|
747
|
+
className: "wc-heading",
|
|
687
748
|
"aria-live": "polite"
|
|
688
749
|
}, "Are you sure you want to end the chat?"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
689
750
|
className: "govuk-button-group"
|
|
690
751
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
691
752
|
href: "#endChat",
|
|
692
|
-
|
|
753
|
+
role: "button",
|
|
754
|
+
className: "wc-button govuk-button",
|
|
693
755
|
"data-module": "govuk-button",
|
|
694
756
|
id: "confirmEndChat",
|
|
695
757
|
onClick: confirmEndChat
|
|
696
758
|
}, "Yes, end chat"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
697
759
|
href: "#resumeChat",
|
|
698
|
-
|
|
760
|
+
role: "button",
|
|
761
|
+
className: "wc-link govuk-link",
|
|
699
762
|
onClick: onChatScreen
|
|
700
|
-
}, "No, resume chat"))));
|
|
763
|
+
}, "No, resume chat")))));
|
|
701
764
|
}
|
|
702
765
|
|
|
703
766
|
/***/ }),
|
|
@@ -725,23 +788,24 @@ function Feedback({
|
|
|
725
788
|
};
|
|
726
789
|
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", {
|
|
727
790
|
className: "wc-body"
|
|
791
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
792
|
+
className: "wc-content"
|
|
728
793
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
729
794
|
id: "wc-subtitle",
|
|
730
|
-
className: "
|
|
731
|
-
}, "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("a", {
|
|
795
|
+
className: "wc-heading"
|
|
796
|
+
}, "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("p", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
732
797
|
className: "govuk-link",
|
|
733
798
|
href: "#",
|
|
734
799
|
target: "_blank",
|
|
735
800
|
rel: "noreferrer"
|
|
736
|
-
}, "Feedback Link"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("
|
|
737
|
-
className: "govuk-button-group"
|
|
738
|
-
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
801
|
+
}, "Feedback Link")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
739
802
|
id: "feedback-cancel",
|
|
803
|
+
className: "wc-link govuk-link",
|
|
740
804
|
href: "#",
|
|
741
805
|
"data-module": "govuk-button",
|
|
742
806
|
role: "button",
|
|
743
807
|
onClick: feedbackCancel
|
|
744
|
-
}, "Close"))));
|
|
808
|
+
}, "Close")))));
|
|
745
809
|
}
|
|
746
810
|
|
|
747
811
|
/***/ }),
|
|
@@ -766,18 +830,14 @@ function PreChat({
|
|
|
766
830
|
}) {
|
|
767
831
|
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", {
|
|
768
832
|
className: "wc-body"
|
|
833
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
834
|
+
className: "wc-content"
|
|
769
835
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
770
|
-
className: "
|
|
836
|
+
className: "wc-heading",
|
|
771
837
|
"aria-live": "polite"
|
|
772
|
-
}, "What you can use webchat for"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
|
|
773
|
-
className: "
|
|
774
|
-
}, "
|
|
775
|
-
className: "govuk-body-s"
|
|
776
|
-
}, "You can use webchat to get:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", {
|
|
777
|
-
className: "govuk-list govuk-list--bullet govuk-body-s"
|
|
778
|
-
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "current flood warnings and alerts in your area"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "information on the flood warning service"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "advice on what to do before, during and after a flood")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
|
|
779
|
-
className: "govuk-body-s"
|
|
780
|
-
}, "There are other ways to\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
838
|
+
}, "What you can use webchat for"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Webchat lets you talk directly to a Floodline adviser."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "You can use webchat to get:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", {
|
|
839
|
+
className: "wc-list"
|
|
840
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "current flood warnings and alerts in your area"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "information on the flood warning service"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "advice on what to do before, during and after a flood")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "There are other ways to\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
781
841
|
className: "govuk-link",
|
|
782
842
|
href: "https://www.gov.uk/sign-up-for-flood-warnings",
|
|
783
843
|
target: "_blank",
|
|
@@ -787,29 +847,23 @@ function PreChat({
|
|
|
787
847
|
href: "https://www.fws.environment-agency.gov.uk/app/olr/login",
|
|
788
848
|
target: "_blank",
|
|
789
849
|
rel: "noreferrer"
|
|
790
|
-
}, "manage your flood warnings account"), "."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
|
|
791
|
-
className: "govuk-body-s"
|
|
792
|
-
}, "Do not use webchat to\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
850
|
+
}, "manage your flood warnings account"), "."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Do not use webchat to\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
793
851
|
className: "govuk-link",
|
|
794
852
|
href: "https://www.gov.uk/report-flood-cause",
|
|
795
853
|
target: "_blank",
|
|
796
854
|
rel: "noreferrer"
|
|
797
855
|
}, "report a flood"), "."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
|
|
798
|
-
className: "govuk-button govuk-!-
|
|
856
|
+
className: "govuk-button wc-button govuk-!-margin-top-1",
|
|
799
857
|
"data-module": "govuk-button",
|
|
800
858
|
onClick: onContinue
|
|
801
859
|
}, "Continue"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
802
|
-
className: "
|
|
803
|
-
}, "Other flood information"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
|
|
804
|
-
className: "govuk-body-s"
|
|
805
|
-
}, "Call Floodline for all other flood and flood warning information."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
|
|
806
|
-
className: "govuk-body-s"
|
|
807
|
-
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("strong", null, "Floodline helpline"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("br", null), "Telephone: 0345 988 1188", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("br", null), "Textphone: 0345 602 6340", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("br", null), "Open 24 hours a day, 7 days a week", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("br", null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
860
|
+
className: "wc-heading"
|
|
861
|
+
}, "Other flood information"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Call Floodline for all other flood and flood warning information."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("strong", null, "Floodline helpline"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("br", null), "Telephone: 0345 988 1188", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("br", null), "Textphone: 0345 602 6340", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("br", null), "Open 24 hours a day, 7 days a week", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("br", null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
808
862
|
className: "govuk-link",
|
|
809
863
|
href: "https://gov.uk/call-charges",
|
|
810
864
|
target: "_blank",
|
|
811
865
|
rel: "noreferrer"
|
|
812
|
-
}, "Find out more about call charges"))));
|
|
866
|
+
}, "Find out more about call charges")))));
|
|
813
867
|
}
|
|
814
868
|
|
|
815
869
|
/***/ }),
|
|
@@ -907,6 +961,8 @@ function RequestChat({
|
|
|
907
961
|
};
|
|
908
962
|
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_3__.PanelHeader, null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
909
963
|
className: "wc-body"
|
|
964
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
965
|
+
className: "wc-content"
|
|
910
966
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
911
967
|
href: "#",
|
|
912
968
|
className: "wc-back-link govuk-back-link",
|
|
@@ -914,12 +970,12 @@ function RequestChat({
|
|
|
914
970
|
}, "What you can use webchat for"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_errorSummary_error_summary_jsx__WEBPACK_IMPORTED_MODULE_6__.ErrorSummary, {
|
|
915
971
|
errors: errors
|
|
916
972
|
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
917
|
-
className: "
|
|
973
|
+
className: "wc-heading",
|
|
918
974
|
"aria-live": "polite"
|
|
919
975
|
}, "Your name and question"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("form", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
920
|
-
className: (0,_lib_classnames_js__WEBPACK_IMPORTED_MODULE_2__.classnames)('govuk-form-group', errors.name && 'govuk-form-group--error')
|
|
976
|
+
className: (0,_lib_classnames_js__WEBPACK_IMPORTED_MODULE_2__.classnames)('wc-form-group', 'govuk-form-group', errors.name && 'govuk-form-group--error')
|
|
921
977
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
922
|
-
className: "govuk-label",
|
|
978
|
+
className: "wc-label govuk-label",
|
|
923
979
|
htmlFor: "wc-name"
|
|
924
980
|
}, "Your name"), errors.name && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
|
|
925
981
|
className: "govuk-error-message"
|
|
@@ -927,19 +983,19 @@ function RequestChat({
|
|
|
927
983
|
className: "govuk-visually-hidden"
|
|
928
984
|
}, "Error:"), " ", errors.name), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
|
|
929
985
|
ref: nameRef,
|
|
930
|
-
className: (0,_lib_classnames_js__WEBPACK_IMPORTED_MODULE_2__.classnames)('govuk-input', errors.name && 'govuk-input--error'),
|
|
986
|
+
className: (0,_lib_classnames_js__WEBPACK_IMPORTED_MODULE_2__.classnames)('wc-input', 'govuk-input', errors.name && 'govuk-input--error'),
|
|
931
987
|
id: "wc-name",
|
|
932
988
|
name: "name",
|
|
933
989
|
type: "text",
|
|
934
990
|
"data-testid": "request-chat-user-name"
|
|
935
991
|
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
936
|
-
className: "govuk-character-count",
|
|
992
|
+
className: "wc-form-group govuk-character-count",
|
|
937
993
|
"data-module": "govuk-character-count",
|
|
938
994
|
"data-maxlength": "500"
|
|
939
995
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
940
996
|
className: (0,_lib_classnames_js__WEBPACK_IMPORTED_MODULE_2__.classnames)('govuk-form-group', errors.question && 'govuk-form-group--error')
|
|
941
997
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
942
|
-
className: "govuk-label",
|
|
998
|
+
className: "wc-label govuk-label",
|
|
943
999
|
htmlFor: "wc-question"
|
|
944
1000
|
}, "Your question"), errors.question && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
|
|
945
1001
|
className: "govuk-error-message"
|
|
@@ -952,11 +1008,11 @@ function RequestChat({
|
|
|
952
1008
|
rows: "5",
|
|
953
1009
|
"aria-describedby": "wc-question-info",
|
|
954
1010
|
onChange: onQuestionChange,
|
|
955
|
-
className: (0,_lib_classnames_js__WEBPACK_IMPORTED_MODULE_2__.classnames)('govuk-textarea', 'govuk-js-character-count', !isQuestionLengthValid || errors.question ? 'govuk-textarea--error' : ''),
|
|
1011
|
+
className: (0,_lib_classnames_js__WEBPACK_IMPORTED_MODULE_2__.classnames)('wc-textarea', 'govuk-textarea', 'govuk-js-character-count', !isQuestionLengthValid || errors.question ? 'govuk-textarea--error' : ''),
|
|
956
1012
|
"data-testid": "request-chat-user-question"
|
|
957
1013
|
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
958
1014
|
id: "wc-question-info",
|
|
959
|
-
className: "govuk-hint govuk-
|
|
1015
|
+
className: "wc-hint govuk-hint govuk-char-count__msg",
|
|
960
1016
|
style: {
|
|
961
1017
|
color: `${!isQuestionLengthValid ? '#d4351c' : ''}`
|
|
962
1018
|
},
|
|
@@ -965,18 +1021,18 @@ function RequestChat({
|
|
|
965
1021
|
className: "govuk-character-count__sr-status govuk-visually-hidden",
|
|
966
1022
|
"aria-live": "polite"
|
|
967
1023
|
}, questionHint))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
968
|
-
className: "
|
|
1024
|
+
className: "wc-inset-text govuk-inset-text"
|
|
969
1025
|
}, "By selecting 'Request chat' you agree to the terms of our\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
970
1026
|
href: "https://check-for-flooding.service.gov.uk/privacy-notice",
|
|
971
1027
|
target: "_blank",
|
|
972
1028
|
rel: "noreferrer",
|
|
973
1029
|
className: "govuk-link"
|
|
974
1030
|
}, "privacy notice"), "."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
|
|
975
|
-
className: "govuk-button govuk-!-margin-top-1
|
|
1031
|
+
className: "wc-button govuk-button govuk-!-margin-top-1",
|
|
976
1032
|
"data-module": "govuk-button",
|
|
977
1033
|
onClick: onRequestChat,
|
|
978
1034
|
disabled: isButtonDisabled
|
|
979
|
-
}, buttonLabel))));
|
|
1035
|
+
}, buttonLabel)))));
|
|
980
1036
|
}
|
|
981
1037
|
|
|
982
1038
|
/***/ }),
|
|
@@ -1017,13 +1073,15 @@ function Settings({
|
|
|
1017
1073
|
};
|
|
1018
1074
|
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", {
|
|
1019
1075
|
className: "wc-body"
|
|
1076
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
1077
|
+
className: "wc-content"
|
|
1020
1078
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("fieldset", {
|
|
1021
1079
|
className: "govuk-fieldset govuk-!-margin-bottom-4"
|
|
1022
1080
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("legend", {
|
|
1023
1081
|
className: "govuk-fieldset__legend govuk-fieldset__legend"
|
|
1024
1082
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
|
|
1025
1083
|
id: "wc-subtitle",
|
|
1026
|
-
className: "
|
|
1084
|
+
className: "wc-heading"
|
|
1027
1085
|
}, "Change settings")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
1028
1086
|
className: "govuk-checkboxes govuk-checkboxes--small",
|
|
1029
1087
|
"data-module": "govuk-checkboxes"
|
|
@@ -1038,7 +1096,7 @@ function Settings({
|
|
|
1038
1096
|
defaultChecked: optionAudio,
|
|
1039
1097
|
onChange: () => setOptionAudio(!optionAudio)
|
|
1040
1098
|
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
1041
|
-
className: "
|
|
1099
|
+
className: "wc-label govuk-label govuk-checkboxes__label",
|
|
1042
1100
|
htmlFor: "audio"
|
|
1043
1101
|
}, "Play a sound when receiving a new message")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
1044
1102
|
className: "govuk-checkboxes__item"
|
|
@@ -1051,23 +1109,23 @@ function Settings({
|
|
|
1051
1109
|
defaultChecked: optionScroll,
|
|
1052
1110
|
onChange: () => setOptionScroll(!optionScroll)
|
|
1053
1111
|
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
|
|
1054
|
-
className: "
|
|
1112
|
+
className: "wc-label govuk-label govuk-checkboxes__label",
|
|
1055
1113
|
htmlFor: "scroll"
|
|
1056
1114
|
}, "Scroll automatically to a new message")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
1057
1115
|
className: "govuk-button-group"
|
|
1058
1116
|
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
1059
1117
|
id: "settings-save",
|
|
1060
1118
|
href: "#",
|
|
1061
|
-
className: "
|
|
1119
|
+
className: "wc-button govuk-button",
|
|
1062
1120
|
"data-module": "govuk-button",
|
|
1063
1121
|
onClick: onSave
|
|
1064
1122
|
}, "Save"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
|
|
1065
1123
|
id: "settings-cancel",
|
|
1066
1124
|
href: "#",
|
|
1067
|
-
className: "
|
|
1125
|
+
className: "wc-link govuk-link",
|
|
1068
1126
|
"data-module": "govuk-button",
|
|
1069
1127
|
onClick: onCancel
|
|
1070
|
-
}, "Cancel"))));
|
|
1128
|
+
}, "Cancel")))));
|
|
1071
1129
|
}
|
|
1072
1130
|
|
|
1073
1131
|
/***/ }),
|
|
@@ -1121,10 +1179,19 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1121
1179
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
1122
1180
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
1123
1181
|
|
|
1124
|
-
const
|
|
1182
|
+
const ariaHidden = 'aria-hidden';
|
|
1183
|
+
const dataWcInert = 'data-wc-inert';
|
|
1184
|
+
const setAriaHidden = isInert => {
|
|
1125
1185
|
for (const node of document.body.children) {
|
|
1126
1186
|
if (node.id !== 'wc-panel') {
|
|
1127
|
-
|
|
1187
|
+
// We only want to toggle elements that aren't already inert
|
|
1188
|
+
if (isInert && !node.getAttribute(ariaHidden)) {
|
|
1189
|
+
node.setAttribute(ariaHidden, 'true');
|
|
1190
|
+
node.setAttribute(dataWcInert, '');
|
|
1191
|
+
} else if (node.hasAttribute(dataWcInert)) {
|
|
1192
|
+
node.removeAttribute(ariaHidden);
|
|
1193
|
+
node.removeAttribute(dataWcInert);
|
|
1194
|
+
}
|
|
1128
1195
|
}
|
|
1129
1196
|
}
|
|
1130
1197
|
};
|
|
@@ -1233,6 +1300,33 @@ const classnames = (...classes) => classes.filter(classname => classname && type
|
|
|
1233
1300
|
|
|
1234
1301
|
/***/ }),
|
|
1235
1302
|
|
|
1303
|
+
/***/ "./src/client/lib/history.js":
|
|
1304
|
+
/*!***********************************!*\
|
|
1305
|
+
!*** ./src/client/lib/history.js ***!
|
|
1306
|
+
\***********************************/
|
|
1307
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1308
|
+
|
|
1309
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1310
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1311
|
+
/* harmony export */ historyPushState: () => (/* binding */ historyPushState),
|
|
1312
|
+
/* harmony export */ historyReplaceState: () => (/* binding */ historyReplaceState)
|
|
1313
|
+
/* harmony export */ });
|
|
1314
|
+
const historyPushState = () => {
|
|
1315
|
+
const url = window.location.href.split('#')[0];
|
|
1316
|
+
window.history.pushState({
|
|
1317
|
+
history: true
|
|
1318
|
+
}, null, `${url}#webchat`);
|
|
1319
|
+
};
|
|
1320
|
+
const historyReplaceState = () => {
|
|
1321
|
+
if (window.history.state?.history) {
|
|
1322
|
+
window.history.back();
|
|
1323
|
+
}
|
|
1324
|
+
const url = window.location.href.split('#')[0];
|
|
1325
|
+
window.history.replaceState(null, null, url);
|
|
1326
|
+
};
|
|
1327
|
+
|
|
1328
|
+
/***/ }),
|
|
1329
|
+
|
|
1236
1330
|
/***/ "./src/client/lib/message-notification.js":
|
|
1237
1331
|
/*!************************************************!*\
|
|
1238
1332
|
!*** ./src/client/lib/message-notification.js ***!
|
|
@@ -1415,6 +1509,24 @@ const AppProvider = ({
|
|
|
1415
1509
|
payload: e.detail.data.case.status
|
|
1416
1510
|
});
|
|
1417
1511
|
};
|
|
1512
|
+
const onMatchMedia = e => {
|
|
1513
|
+
dispatch({
|
|
1514
|
+
type: 'TOGGLE_IS_MOBILE',
|
|
1515
|
+
payload: e.matches
|
|
1516
|
+
});
|
|
1517
|
+
};
|
|
1518
|
+
const onKeydown = () => {
|
|
1519
|
+
dispatch({
|
|
1520
|
+
type: 'TOGGLE_IS_KEYBOARD',
|
|
1521
|
+
payload: true
|
|
1522
|
+
});
|
|
1523
|
+
};
|
|
1524
|
+
const onPointerdown = () => {
|
|
1525
|
+
dispatch({
|
|
1526
|
+
type: 'TOGGLE_IS_KEYBOARD',
|
|
1527
|
+
payload: false
|
|
1528
|
+
});
|
|
1529
|
+
};
|
|
1418
1530
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
1419
1531
|
sdk.onChatEvent(_nice_devone_nice_cxone_chat_web_sdk__WEBPACK_IMPORTED_MODULE_1__.ChatEvent.LIVECHAT_RECOVERED, onLiveChatRecovered);
|
|
1420
1532
|
sdk.onChatEvent(_nice_devone_nice_cxone_chat_web_sdk__WEBPACK_IMPORTED_MODULE_1__.ChatEvent.MESSAGE_CREATED, onMessageCreated);
|
|
@@ -1422,6 +1534,16 @@ const AppProvider = ({
|
|
|
1422
1534
|
sdk.onChatEvent(_nice_devone_nice_cxone_chat_web_sdk__WEBPACK_IMPORTED_MODULE_1__.ChatEvent.AGENT_TYPING_ENDED, onAgentTypingEnded);
|
|
1423
1535
|
sdk.onChatEvent(_nice_devone_nice_cxone_chat_web_sdk__WEBPACK_IMPORTED_MODULE_1__.ChatEvent.ASSIGNED_AGENT_CHANGED, onAssignedAgentChanged);
|
|
1424
1536
|
sdk.onChatEvent(_nice_devone_nice_cxone_chat_web_sdk__WEBPACK_IMPORTED_MODULE_1__.ChatEvent.CONTACT_STATUS_CHANGED, onContactStatusChanged);
|
|
1537
|
+
// We need to know if it is a mobile and if it is a keyboard interaction
|
|
1538
|
+
window.matchMedia('(max-width: 640px)').addEventListener('change', onMatchMedia);
|
|
1539
|
+
window.addEventListener('keydown', onKeydown);
|
|
1540
|
+
window.addEventListener('pointerdown', onPointerdown);
|
|
1541
|
+
// Tidying up
|
|
1542
|
+
return () => {
|
|
1543
|
+
window.removeEventListener('change', onMatchMedia);
|
|
1544
|
+
window.removeEventListener('keydown', onKeydown);
|
|
1545
|
+
window.removeEventListener('pointerdown', onPointerdown);
|
|
1546
|
+
};
|
|
1425
1547
|
}, [sdk]);
|
|
1426
1548
|
|
|
1427
1549
|
/**
|
|
@@ -1435,18 +1557,31 @@ const AppProvider = ({
|
|
|
1435
1557
|
setCustomerId(window.localStorage.getItem(_constants_js__WEBPACK_IMPORTED_MODULE_4__.CUSTOMER_ID_STORAGE_KEY));
|
|
1436
1558
|
setThreadId(window.localStorage.getItem(_constants_js__WEBPACK_IMPORTED_MODULE_4__.THREAD_ID_STORAGE_KEY));
|
|
1437
1559
|
setSettings(JSON.parse(window.localStorage.getItem(_constants_js__WEBPACK_IMPORTED_MODULE_4__.SETTINGS_STORAGE_KEY)) || state.settings);
|
|
1560
|
+
}, []);
|
|
1561
|
+
|
|
1562
|
+
/**
|
|
1563
|
+
* Set browser history on start chat click
|
|
1564
|
+
*/
|
|
1565
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
1438
1566
|
if (window.location.hash === '#webchat') {
|
|
1439
1567
|
setChatVisibility(true);
|
|
1440
1568
|
}
|
|
1569
|
+
const onBrowserNavigation = window.addEventListener('popstate', () => {
|
|
1570
|
+
if (window.location.hash === '#webchat') {
|
|
1571
|
+
setChatVisibility(true);
|
|
1572
|
+
} else {
|
|
1573
|
+
setChatVisibility(false);
|
|
1574
|
+
}
|
|
1575
|
+
});
|
|
1576
|
+
return () => {
|
|
1577
|
+
window.removeEventListener('popstate', onBrowserNavigation);
|
|
1578
|
+
};
|
|
1441
1579
|
}, []);
|
|
1442
1580
|
|
|
1443
1581
|
/**
|
|
1444
1582
|
* State update functions
|
|
1445
1583
|
*/
|
|
1446
1584
|
const setChatVisibility = payload => {
|
|
1447
|
-
if (!payload) {
|
|
1448
|
-
window.location.hash = '';
|
|
1449
|
-
}
|
|
1450
1585
|
dispatch({
|
|
1451
1586
|
type: 'SET_CHAT_VISIBILITY',
|
|
1452
1587
|
payload
|
|
@@ -1617,6 +1752,18 @@ const setUnseenCount = (state, payload) => {
|
|
|
1617
1752
|
unseenCount: payload
|
|
1618
1753
|
};
|
|
1619
1754
|
};
|
|
1755
|
+
const toggleIsMobile = (state, payload) => {
|
|
1756
|
+
return {
|
|
1757
|
+
...state,
|
|
1758
|
+
isMobile: payload
|
|
1759
|
+
};
|
|
1760
|
+
};
|
|
1761
|
+
const toggleIsKeyboard = (state, payload) => {
|
|
1762
|
+
return {
|
|
1763
|
+
...state,
|
|
1764
|
+
isKeyboard: payload
|
|
1765
|
+
};
|
|
1766
|
+
};
|
|
1620
1767
|
const actionsMap = {
|
|
1621
1768
|
SET_CHAT_VISIBILITY: setChatVisibility,
|
|
1622
1769
|
SET_AVAILABILITY: setAvailability,
|
|
@@ -1629,7 +1776,9 @@ const actionsMap = {
|
|
|
1629
1776
|
SET_AGENT: setAgent,
|
|
1630
1777
|
SET_AGENT_TYPING: setAgentIsTyping,
|
|
1631
1778
|
SET_AGENT_STATUS: setAgentStatus,
|
|
1632
|
-
SET_UNSEEN_COUNT: setUnseenCount
|
|
1779
|
+
SET_UNSEEN_COUNT: setUnseenCount,
|
|
1780
|
+
TOGGLE_IS_MOBILE: toggleIsMobile,
|
|
1781
|
+
TOGGLE_IS_KEYBOARD: toggleIsKeyboard
|
|
1633
1782
|
};
|
|
1634
1783
|
|
|
1635
1784
|
/***/ }),
|
|
@@ -1676,6 +1825,8 @@ const initialState = {
|
|
|
1676
1825
|
agentStatus: null,
|
|
1677
1826
|
isAgentTyping: false,
|
|
1678
1827
|
isChatOpen: false,
|
|
1828
|
+
isMobile: window.matchMedia('(max-width: 640px)').matches,
|
|
1829
|
+
isKeyboard: false,
|
|
1679
1830
|
settings: {
|
|
1680
1831
|
audio: true,
|
|
1681
1832
|
scroll: true
|