@defra/flood-webchat 0.0.1-beta.4 → 0.0.1-beta.41
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/README.md +83 -1
- package/dist/client.js +2146 -472
- package/dist/client.js.map +1 -1
- package/dist/server.js +181 -241
- package/dist/server.js.map +1 -1
- package/main.scss +10 -6
- package/package.json +6 -2
- package/src/client/components/availability/availability.jsx +71 -54
- package/src/client/components/availability/availability.scss +15 -33
- package/src/client/components/chat/chat.jsx +233 -0
- package/src/client/components/chat/chat.scss +233 -0
- package/src/client/components/errorSummary/error-summary.jsx +34 -0
- package/src/client/components/live-region.jsx +55 -0
- package/src/client/components/message/message.jsx +20 -0
- package/src/client/components/panel/panel-footer.jsx +9 -0
- package/src/client/components/panel/panel-header.jsx +54 -14
- package/src/client/components/panel/panel.jsx +128 -71
- package/src/client/components/panel/panel.scss +63 -22
- package/src/client/components/screens/end-chat.jsx +77 -0
- package/src/client/components/screens/feedback.jsx +66 -0
- package/src/client/components/screens/pre-chat.jsx +50 -30
- package/src/client/components/screens/request-chat.jsx +177 -4
- package/src/client/components/screens/settings.jsx +97 -0
- package/src/client/components/screens/unavailable.jsx +23 -0
- package/src/client/components/skip-link.jsx +42 -0
- package/src/client/hooks/useFocusedElements.js +80 -0
- package/src/client/hooks/useTextareaAutosize.js +13 -0
- package/src/client/index.jsx +15 -1
- package/src/client/lib/agent-status-headline.js +17 -0
- package/src/client/lib/check-availability.js +1 -0
- package/src/client/lib/history.js +13 -0
- package/src/client/lib/message-notification.js +36 -0
- package/src/client/lib/transform-messages.js +34 -0
- package/src/client/scss/_objects.scss +33 -0
- package/src/client/scss/_settings.scss +101 -0
- package/src/client/scss/_tools.scss +33 -0
- package/src/client/scss/_utilities.scss +25 -0
- package/src/client/store/AppProvider.jsx +187 -0
- package/src/client/store/actions-map.js +152 -0
- package/src/client/store/constants.js +3 -0
- package/src/client/store/reducer.js +31 -0
- package/src/client/store/useApp.js +5 -0
- package/src/client/store/useChatSdk.js +37 -0
- package/src/server/index.js +15 -6
- package/src/server/lib/client.js +31 -35
- package/src/server/lib/utils.js +16 -8
- package/src/client/lib/external-stores.js +0 -4
- package/src/client/lib/external-sync-store.js +0 -42
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","mappings":"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","sources":["webpack://@defra/flood-webchat/./src/server/index.js","webpack://@defra/flood-webchat/./src/server/lib/client.js","webpack://@defra/flood-webchat/./src/server/lib/utils.js","webpack://@defra/flood-webchat/external commonjs \"axios\"","webpack://@defra/flood-webchat/external commonjs \"jwt-decode\"","webpack://@defra/flood-webchat/external commonjs \"querystring\"","webpack://@defra/flood-webchat/webpack/bootstrap","webpack://@defra/flood-webchat/webpack/before-startup","webpack://@defra/flood-webchat/webpack/startup","webpack://@defra/flood-webchat/webpack/after-startup"],"sourcesContent":["const { authenticate, getHost, getIsOpen, getActivity } = require('./lib/client.js')\n\n/**\n * Returns webchat availability\n * @param options {object}\n * @param options.clientId {string}\n * @param options.clientSecret {string}\n * @param options.accessKey {string}\n * @param options.accessSecret {string}\n * @param options.skillEndpoint {string}\n * @param options.hoursEndpoint {string}\n * @param options.maxQueueCount {string}\n * @returns {Promise<{date: Date, availability: (string)}>}\n */\nmodule.exports = async function getAvailability ({\n clientId,\n clientSecret,\n accessKey,\n accessSecret,\n skillEndpoint,\n hoursEndpoint,\n maxQueueCount\n}) {\n const authorisation = 'Basic ' + Buffer.from(`${encodeURIComponent(clientId)}:${encodeURIComponent(clientSecret)}`).toString('base64')\n\n // Cache authentication and re-authenticate when needed (lasts 1 hour?)\n const { tenantId, token, tokenType } = await authenticate({ authorisation, accessKey, accessSecret })\n\n const host = await getHost({ tenantId })\n\n const [{ hasCapacity, hasAgentsAvailable }, isOpen] = await Promise.all([\n getActivity({ tokenType, token, host, skillEndpoint, maxQueueCount }),\n getIsOpen({ token, tokenType, host, hoursEndpoint })\n ])\n\n const isAvailable = isOpen && hasAgentsAvailable && hasCapacity\n const isExistingOnly = isOpen && hasAgentsAvailable && !hasCapacity\n\n let availability = 'UNAVAILABLE'\n\n if (isAvailable) {\n availability = 'AVAILABLE'\n } else if (isExistingOnly) {\n availability = 'EXISTING'\n }\n\n return {\n date: new Date(),\n availability\n }\n}\n","const querystring = require('querystring')\nconst axios = require('axios')\nconst jwtdecode = require('jwt-decode')\nconst { isWithinHours } = require('./utils.js')\n\nconst contentType = 'application/x-www-form-urlencoded'\n\nconst authenticate = async ({ authorisation, accessKey, accessSecret }) => {\n const uri = 'https://cxone.niceincontact.com/auth/token'\n\n const config = {\n signal: AbortSignal.timeout(3000),\n headers: {\n Host: 'eu1.niceincontact.com',\n 'Content-Type': contentType,\n Authorization: authorisation\n }\n }\n\n const body = querystring.stringify({\n grant_type: 'password',\n username: accessKey,\n password: accessSecret\n })\n\n const auth = await axios.post(uri, body, config)\n\n return {\n token: auth.data.access_token,\n tokenType: auth.data.token_type,\n tenantId: jwtdecode(auth.data.id_token)?.tenantId\n }\n}\n\nconst getHost = async ({ tenantId }) => {\n const uri = `https://cxone.niceincontact.com/.well-known/cxone-configuration?tenantId=${tenantId}`\n\n const config = {\n signal: AbortSignal.timeout(3000)\n }\n\n const api = await axios.get(uri, config)\n\n return `api-${api.data.area}.niceincontact.com`\n}\n\nconst getActivity = async ({ tokenType, token, host, skillEndpoint, maxQueueCount }) => {\n const config = {\n signal: AbortSignal.timeout(3000),\n headers: {\n Host: host,\n Authorization: `${tokenType} ${token}`,\n 'Content-Type': contentType\n }\n }\n const uri = `https://${host}${skillEndpoint}`\n\n const skill = await axios.get(uri, config)\n\n const activity = skill.data.skillActivity[0]\n\n return {\n hasCapacity: activity.queueCount < maxQueueCount,\n hasAgentsAvailable: activity.agentsAvailable >= 1\n }\n}\n\nconst getIsOpen = async ({ host, token, tokenType, hoursEndpoint }) => {\n const config = {\n signal: AbortSignal.timeout(3000),\n headers: {\n Host: 'api-l36.niceincontact.com',\n Authorization: `${tokenType} ${token}`,\n 'Content-Type': contentType\n }\n }\n\n const uri = `https://${host}${hoursEndpoint}`\n\n const hours = await axios.get(uri, config)\n\n const days = hours.data.resultSet.hoursOfOperationProfiles[0].days\n\n return isWithinHours(days)\n}\n\nmodule.exports = {\n authenticate,\n getHost,\n getIsOpen,\n getActivity\n}\n","const isWithinHours = (days, date = null) => {\n const now = date ? new Date(date) : new Date()\n\n const name = now.toLocaleDateString('en-GB', { weekday: 'long' })\n const day = days.find(d => d.day.toLowerCase() === name.toLowerCase())\n const dateItems = now.toLocaleDateString('en-GB').split('/')\n const open = `${dateItems[2]}-${dateItems[1]}-${dateItems[0]}T${day.openTime}`\n const close = `${dateItems[2]}-${dateItems[1]}-${dateItems[0]}T${day.closeTime}`\n\n return now.getTime() >= Date.parse(open) && now.getTime() <= Date.parse(close)\n}\n\nmodule.exports = {\n isWithinHours\n}\n","module.exports = require(\"axios\");","module.exports = require(\"jwt-decode\");","module.exports = require(\"querystring\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/server/index.js\");\n",""],"names":["_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","key","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","done","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","undefined","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","_catch","thrown","delegateYield","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","Array","from","test","len","arr2","_i","_s","_e","_x","_r","_arr","_n","_d","isArray","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","_require","require","authenticate","getHost","getIsOpen","getActivity","module","_getAvailability","_callee","_ref","clientId","clientSecret","accessKey","accessSecret","skillEndpoint","hoursEndpoint","maxQueueCount","authorisation","_yield$authenticate","tenantId","token","tokenType","host","_yield$Promise$all","_yield$Promise$all2","_yield$Promise$all2$","hasCapacity","hasAgentsAvailable","isOpen","isAvailable","isExistingOnly","availability","_callee$","_context","Buffer","concat","encodeURIComponent","all","date","Date","getAvailability","querystring","axios","jwtdecode","isWithinHours","contentType","_ref2","_jwtdecode","uri","config","body","auth","signal","AbortSignal","timeout","headers","Host","Authorization","stringify","grant_type","username","password","post","data","access_token","token_type","id_token","_ref4","_callee2","_ref3","api","_callee2$","_context2","get","area","_x2","_ref6","_callee3","_ref5","skill","activity","_callee3$","_context3","skillActivity","queueCount","agentsAvailable","_x3","_ref8","_callee4","_ref7","hours","days","_callee4$","_context4","resultSet","hoursOfOperationProfiles","_x4","now","toLocaleDateString","weekday","day","find","d","toLowerCase","dateItems","split","open","openTime","close","closeTime","getTime","parse"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"server.js","mappings":"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","sources":["webpack://@defra/flood-webchat/./src/server/index.js","webpack://@defra/flood-webchat/./src/server/lib/client.js","webpack://@defra/flood-webchat/./src/server/lib/utils.js","webpack://@defra/flood-webchat/external commonjs \"axios\"","webpack://@defra/flood-webchat/external commonjs \"jwt-decode\"","webpack://@defra/flood-webchat/external commonjs \"luxon\"","webpack://@defra/flood-webchat/external commonjs \"querystring\"","webpack://@defra/flood-webchat/webpack/bootstrap","webpack://@defra/flood-webchat/webpack/before-startup","webpack://@defra/flood-webchat/webpack/startup","webpack://@defra/flood-webchat/webpack/after-startup"],"sourcesContent":["const { authenticate, getApiBaseUrl, getIsOpen, getActivity } = require('./lib/client.js')\n\n/**\n * Returns webchat availability\n * @param options {object}\n * @param options.clientId {string}\n * @param options.clientSecret {string}\n * @param options.accessKey {string}\n * @param options.accessSecret {string}\n * @param options.skillEndpoint {string}\n * @param options.hoursEndpoint {string}\n * @param options.authenticationUri {string}\n * @param options.wellKnownUri {string}\n * @param options.maxQueueCount {string}\n * @returns {Promise<{date: Date, availability: (string)}>}\n */\nmodule.exports = async function getAvailability ({\n clientId,\n clientSecret,\n accessKey,\n accessSecret,\n maxQueueCount,\n skillEndpoint,\n hoursEndpoint,\n wellKnownUri = 'https://cxone.niceincontact.com/.well-known/cxone-configuration',\n authenticationUri = 'https://cxone.niceincontact.com/auth/token'\n}) {\n const authorisation = 'Basic ' + Buffer.from(`${encodeURIComponent(clientId)}:${encodeURIComponent(clientSecret)}`).toString('base64')\n\n // Cache authentication and re-authenticate when needed (lasts 1 hour?)\n const { tenantId, token, tokenType } = await authenticate({\n authenticationUri,\n authorisation,\n accessKey,\n accessSecret\n })\n\n const apiBaseUrl = await getApiBaseUrl({ wellKnownUri, tenantId })\n\n const [{ hasCapacity, hasAgentsAvailable }, isOpen] = await Promise.all([\n getActivity({ baseUrl: apiBaseUrl, tokenType, token, skillEndpoint, maxQueueCount }),\n getIsOpen({ baseUrl: apiBaseUrl, token, tokenType, hoursEndpoint })\n ])\n\n const isAvailable = isOpen && hasAgentsAvailable && hasCapacity\n const isExistingOnly = isOpen && hasAgentsAvailable && !hasCapacity\n\n let availability = 'UNAVAILABLE'\n\n if (isAvailable) {\n availability = 'AVAILABLE'\n } else if (isExistingOnly) {\n availability = 'EXISTING'\n }\n\n return {\n date: new Date(),\n availability\n }\n}\n","const querystring = require('querystring')\nconst axios = require('axios')\nconst jwtdecode = require('jwt-decode')\nconst { isWithinHours } = require('./utils.js')\n\nconst contentType = 'application/x-www-form-urlencoded'\n\nconst authenticate = async ({ authenticationUri, authorisation, accessKey, accessSecret }) => {\n const url = new URL(authenticationUri)\n const body = querystring.stringify({\n grant_type: 'password',\n username: accessKey,\n password: accessSecret\n })\n\n const auth = await axios.post(url.href, body, {\n signal: AbortSignal.timeout(3000),\n headers: {\n Host: url.host,\n 'Content-Type': contentType,\n Authorization: authorisation\n }\n })\n\n return {\n token: auth.data.access_token,\n tokenType: auth.data.token_type,\n tenantId: jwtdecode(auth.data.id_token)?.tenantId\n }\n}\n\nconst getApiBaseUrl = async ({ wellKnownUri, tenantId }) => {\n const url = new URL(wellKnownUri)\n url.searchParams.set('tenantId', tenantId)\n\n const { data } = await axios.get(url.href, {\n headers: {\n Host: url.host\n },\n signal: AbortSignal.timeout(3000)\n })\n\n return data.api_endpoint\n}\n\nconst getActivity = async ({ tokenType, token, baseUrl, skillEndpoint, maxQueueCount }) => {\n const url = new URL(skillEndpoint, baseUrl)\n\n const skill = await axios.get(url.href, {\n signal: AbortSignal.timeout(3000),\n headers: {\n Host: url.host,\n Authorization: `${tokenType} ${token}`,\n 'Content-Type': contentType\n }\n })\n\n const activity = skill.data.skillActivity[0]\n\n return {\n hasCapacity: activity.queueCount < maxQueueCount,\n hasAgentsAvailable: activity.agentsAvailable >= 1\n }\n}\n\nconst getIsOpen = async ({ baseUrl, token, tokenType, hoursEndpoint }) => {\n const url = new URL(hoursEndpoint, baseUrl)\n\n const hours = await axios.get(url.href, {\n signal: AbortSignal.timeout(3000),\n headers: {\n Host: url.host,\n Authorization: `${tokenType} ${token}`,\n 'Content-Type': contentType\n }\n })\n\n const days = hours.data.resultSet.hoursOfOperationProfiles[0].days\n\n return isWithinHours(days)\n}\n\nmodule.exports = {\n authenticate,\n getApiBaseUrl,\n getIsOpen,\n getActivity\n}\n","const { DateTime } = require('luxon')\n\nconst getHour = time => Number(time.split(':')[0])\n\nconst isWithinHours = (days, date) => {\n const now = date ? DateTime.fromISO(date) : DateTime.local()\n now.setZone('Europe/London')\n\n const newDate = date ? new Date(date) : new Date()\n\n const today = newDate.toLocaleDateString('en-GB', { weekday: 'long' })\n const dateParts = newDate.toLocaleDateString('en-GB').split('/')\n\n const todaysAvailability = days.find(item => item.day === today)\n const todaysDateTimeOpen = DateTime.local(Number(dateParts[2]), Number(dateParts[1]), Number(dateParts[0]), getHour(todaysAvailability.openTime))\n const todaysDateTimeClose = DateTime.local(Number(dateParts[2]), Number(dateParts[1]), Number(dateParts[0]), getHour(todaysAvailability.closeTime))\n\n return now.diff(todaysDateTimeOpen).milliseconds >= 0 && now.diff(todaysDateTimeClose).milliseconds <= 0\n}\n\nmodule.exports = {\n isWithinHours\n}\n","module.exports = require(\"axios\");","module.exports = require(\"jwt-decode\");","module.exports = require(\"luxon\");","module.exports = require(\"querystring\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/server/index.js\");\n",""],"names":["authenticate","getApiBaseUrl","getIsOpen","getActivity","require","module","exports","getAvailability","clientId","clientSecret","accessKey","accessSecret","maxQueueCount","skillEndpoint","hoursEndpoint","wellKnownUri","authenticationUri","authorisation","Buffer","from","encodeURIComponent","toString","tenantId","token","tokenType","apiBaseUrl","hasCapacity","hasAgentsAvailable","isOpen","Promise","all","baseUrl","isAvailable","isExistingOnly","availability","date","Date","querystring","axios","jwtdecode","isWithinHours","contentType","url","URL","body","stringify","grant_type","username","password","auth","post","href","signal","AbortSignal","timeout","headers","Host","host","Authorization","data","access_token","token_type","id_token","searchParams","set","get","api_endpoint","skill","activity","skillActivity","queueCount","agentsAvailable","hours","days","resultSet","hoursOfOperationProfiles","DateTime","getHour","time","Number","split","now","fromISO","local","setZone","newDate","today","toLocaleDateString","weekday","dateParts","todaysAvailability","find","item","day","todaysDateTimeOpen","openTime","todaysDateTimeClose","closeTime","diff","milliseconds"],"sourceRoot":""}
|
package/main.scss
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
|
|
2
2
|
// Required GOVUK Styles
|
|
3
3
|
@import "govuk-frontend/govuk/core/typography";
|
|
4
|
+
@import "govuk-frontend/govuk/core/links";
|
|
4
5
|
@import "govuk-frontend/govuk/utilities/visually-hidden";
|
|
6
|
+
@import "govuk-frontend/govuk/components/button/button";
|
|
5
7
|
|
|
6
|
-
//
|
|
8
|
+
// (ITCSS)
|
|
9
|
+
@import "./src/client/scss/settings";
|
|
10
|
+
@import "./src/client/scss/tools";
|
|
11
|
+
@import "./src/client/scss/objects";
|
|
12
|
+
@import "./src/client/scss/utilities";
|
|
13
|
+
|
|
14
|
+
// React components
|
|
7
15
|
@import "./src/client/components/availability/availability";
|
|
8
16
|
@import "./src/client/components/panel/panel";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.wc-scroll-padding {
|
|
12
|
-
scroll-padding-bottom: calc(2rem + 20px);
|
|
13
|
-
}
|
|
17
|
+
@import "./src/client/components/chat/chat";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defra/flood-webchat",
|
|
3
|
-
"version": "0.0.1-beta.
|
|
3
|
+
"version": "0.0.1-beta.41",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/server.js",
|
|
6
6
|
"browser": "dist/client.js",
|
|
@@ -59,10 +59,14 @@
|
|
|
59
59
|
"govuk-frontend": "^4.0.0"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
+
"@nice-devone/nice-cxone-chat-web-sdk": "^1.3.0",
|
|
62
63
|
"axios": "^1.5.0",
|
|
63
64
|
"jwt-decode": "^3.1.2",
|
|
65
|
+
"lodash.debounce": "^4.0.8",
|
|
66
|
+
"luxon": "^3.4.3",
|
|
64
67
|
"querystring": "^0.2.1",
|
|
65
68
|
"react": "^18.2.0",
|
|
66
|
-
"react-dom": "^18.2.0"
|
|
69
|
+
"react-dom": "^18.2.0",
|
|
70
|
+
"uuid": "^9.0.1"
|
|
67
71
|
}
|
|
68
72
|
}
|
|
@@ -1,73 +1,112 @@
|
|
|
1
|
-
import React, { useEffect, useRef
|
|
1
|
+
import React, { useEffect, useRef } from 'react'
|
|
2
|
+
|
|
2
3
|
import { classnames } from '../../lib/classnames'
|
|
3
|
-
import { useMessageThread, useWebchatOpenState } from '../../lib/external-stores'
|
|
4
4
|
import { Panel } from '../panel/panel.jsx'
|
|
5
|
+
import { SkipLink } from '../skip-link.jsx'
|
|
6
|
+
|
|
7
|
+
import { useApp } from '../../store/useApp'
|
|
8
|
+
import { historyPushState, historyReplaceState } from '../../lib/history.js'
|
|
9
|
+
import { LiveRegion } from '../live-region.jsx'
|
|
10
|
+
|
|
11
|
+
export function Availability () {
|
|
12
|
+
const { availability, isChatOpen, setChatVisibility, unseenCount, threadId, setUnseenCount, setInstigatorId, setLiveRegionText } = useApp()
|
|
5
13
|
|
|
6
|
-
export function Availability (props) {
|
|
7
|
-
const [isOpen, setOpen] = useWebchatOpenState()
|
|
8
|
-
const [isFixed, setFixed] = useState(false)
|
|
9
14
|
const buttonRef = useRef()
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
|
|
16
|
+
const showUnseenCount = unseenCount > 0 && !isChatOpen
|
|
17
|
+
|
|
18
|
+
const onClick = e => {
|
|
19
|
+
e.preventDefault()
|
|
20
|
+
setUnseenCount(0)
|
|
21
|
+
setChatVisibility(!isChatOpen)
|
|
22
|
+
setInstigatorId(e.target.id)
|
|
23
|
+
|
|
24
|
+
if (!isChatOpen) {
|
|
25
|
+
historyPushState()
|
|
26
|
+
} else {
|
|
27
|
+
historyReplaceState()
|
|
28
|
+
}
|
|
12
29
|
}
|
|
30
|
+
|
|
13
31
|
const onKeyDown = event => {
|
|
14
32
|
if (event.key === ' ') {
|
|
15
33
|
event.preventDefault()
|
|
16
34
|
}
|
|
17
35
|
}
|
|
36
|
+
|
|
18
37
|
const onKeyUp = event => {
|
|
19
38
|
if (event.key === ' ') {
|
|
20
|
-
|
|
39
|
+
setUnseenCount(0)
|
|
40
|
+
setChatVisibility(!isChatOpen)
|
|
21
41
|
}
|
|
22
42
|
}
|
|
23
43
|
|
|
24
|
-
const intersectionCallback = entries => {
|
|
25
|
-
const [entry] = entries
|
|
26
|
-
const isBelowFold = !entry.isIntersecting && entry.boundingClientRect.top > 0
|
|
27
|
-
setFixed(!isOpen && isBelowFold)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
44
|
useEffect(() => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
})
|
|
34
|
-
const parentElement = buttonRef.current?.parentElement
|
|
35
|
-
if (parentElement) {
|
|
36
|
-
observer.observe(parentElement)
|
|
45
|
+
if (showUnseenCount) {
|
|
46
|
+
setLiveRegionText(`Floodline Webchat - ${unseenCount} new messages`)
|
|
37
47
|
}
|
|
48
|
+
|
|
38
49
|
return () => {
|
|
39
|
-
|
|
40
|
-
observer.unobserve(parentElement)
|
|
41
|
-
}
|
|
50
|
+
setLiveRegionText()
|
|
42
51
|
}
|
|
43
|
-
}, [
|
|
52
|
+
}, [unseenCount, isChatOpen])
|
|
44
53
|
|
|
45
54
|
useEffect(() => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
55
|
+
const onScroll = () => {
|
|
56
|
+
if (!threadId) {
|
|
57
|
+
return
|
|
58
|
+
}
|
|
49
59
|
|
|
50
|
-
|
|
60
|
+
if (availability !== 'AVAILABLE') {
|
|
61
|
+
return
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const rect = buttonRef.current.parentElement.getBoundingClientRect()
|
|
65
|
+
|
|
66
|
+
const isBelowFold = rect.top + 35 > (window.innerHeight || document.documentElement.clientHeight)
|
|
67
|
+
const isFixed = !isChatOpen && isBelowFold
|
|
68
|
+
|
|
69
|
+
document.documentElement.classList.toggle('wc-u-scroll-padding', isFixed)
|
|
70
|
+
document.body.classList.toggle('wc-u-scroll-padding', isFixed)
|
|
71
|
+
buttonRef.current.classList.toggle('wc-availability--fixed', isFixed)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
document.addEventListener('scroll', onScroll)
|
|
75
|
+
onScroll()
|
|
76
|
+
|
|
77
|
+
return () => {
|
|
78
|
+
document.removeEventListener('scroll', onScroll)
|
|
79
|
+
}
|
|
80
|
+
}, [threadId, isChatOpen, availability])
|
|
81
|
+
|
|
82
|
+
switch (availability) {
|
|
51
83
|
case 'AVAILABLE':
|
|
52
84
|
return (
|
|
53
85
|
<>
|
|
54
86
|
<div
|
|
55
|
-
className={classnames('wc-availability',
|
|
87
|
+
className={classnames('wc-availability', isChatOpen && 'wc-open')}
|
|
56
88
|
ref={buttonRef}
|
|
57
89
|
>
|
|
58
90
|
<div className='wc-availability__inner'>
|
|
59
91
|
<a
|
|
92
|
+
id='webchat-start-chat-link'
|
|
60
93
|
className='wc-availability__link'
|
|
61
|
-
href='#webchat'
|
|
94
|
+
href='#webchat'
|
|
95
|
+
draggable='false'
|
|
62
96
|
onClick={onClick}
|
|
63
97
|
onKeyUp={onKeyUp}
|
|
64
98
|
onKeyDown={onKeyDown}
|
|
99
|
+
role='button'
|
|
100
|
+
data-module='govuk-button'
|
|
65
101
|
>
|
|
66
|
-
|
|
102
|
+
{!threadId ? <>Start chat</> : <>Show chat</>}
|
|
103
|
+
{showUnseenCount ? <span className='wc-availability__unseen'>{unseenCount}</span> : null}
|
|
67
104
|
</a>
|
|
68
105
|
</div>
|
|
69
106
|
</div>
|
|
70
|
-
{
|
|
107
|
+
{isChatOpen && <Panel />}
|
|
108
|
+
{showUnseenCount ? <LiveRegion /> : null}
|
|
109
|
+
<SkipLink />
|
|
71
110
|
</>
|
|
72
111
|
)
|
|
73
112
|
case 'EXISTING':
|
|
@@ -81,25 +120,3 @@ export function Availability (props) {
|
|
|
81
120
|
)
|
|
82
121
|
}
|
|
83
122
|
}
|
|
84
|
-
|
|
85
|
-
function AvailabilityContent () {
|
|
86
|
-
const [thread] = useMessageThread()
|
|
87
|
-
const unreadMessageCount = thread.filter(message => !message.read).length
|
|
88
|
-
if (!thread.length) {
|
|
89
|
-
return (
|
|
90
|
-
<>
|
|
91
|
-
Start Chat
|
|
92
|
-
</>
|
|
93
|
-
)
|
|
94
|
-
}
|
|
95
|
-
return (
|
|
96
|
-
<>
|
|
97
|
-
Show Chat {!!unreadMessageCount && (
|
|
98
|
-
<>
|
|
99
|
-
<span className='wc-availability__unseen'>{unreadMessageCount}</span>
|
|
100
|
-
<span className='govuk-visually-hidden'> {unreadMessageCount === 1 ? 'new message' : 'new messages'}</span>
|
|
101
|
-
</>
|
|
102
|
-
)}
|
|
103
|
-
</>
|
|
104
|
-
)
|
|
105
|
-
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
.wc-availability__inner {
|
|
3
2
|
max-width: 960px;
|
|
4
3
|
margin-left: auto;
|
|
@@ -12,6 +11,10 @@
|
|
|
12
11
|
right: 0;
|
|
13
12
|
padding-left: 15px;
|
|
14
13
|
padding-right: 15px;
|
|
14
|
+
border: 1px solid transparent;
|
|
15
|
+
@media (forced-colors: active) {
|
|
16
|
+
border-color: currentColor;
|
|
17
|
+
}
|
|
15
18
|
|
|
16
19
|
@include mq ($from: 'tablet') {
|
|
17
20
|
padding-left: 30px;
|
|
@@ -27,52 +30,31 @@
|
|
|
27
30
|
}
|
|
28
31
|
|
|
29
32
|
.wc-availability__link {
|
|
33
|
+
@extend %govuk-link;
|
|
34
|
+
display: inline-block;
|
|
30
35
|
@include govuk-font($size: 19);
|
|
31
|
-
position:relative;
|
|
32
|
-
display:inline-block;
|
|
33
36
|
margin-right: 5px;
|
|
34
|
-
margin-bottom: 0;
|
|
35
|
-
fill: govuk-colour('black');
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
&:visited:not(:hover):not(:focus) {
|
|
39
|
+
color: govuk-colour('blue');
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
.govuk-visually-hidden, .wc-availability__unseen {
|
|
42
43
|
pointer-events: none;
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
&:hover {
|
|
46
|
-
color:
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
&:active {
|
|
50
|
-
color: govuk-colour('black');
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
&:visited {
|
|
54
|
-
color: $govuk-link-colour;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
&:focus {
|
|
58
|
-
box-shadow: none;
|
|
59
|
-
background-color: transparent;
|
|
60
|
-
text-decoration: underline;
|
|
61
|
-
color: $govuk-focus-colour;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
&:hover:not(:focus):not(:active) {
|
|
65
|
-
color: $govuk-link-hover-colour;
|
|
66
|
-
|
|
67
|
-
.wc-availability__unseen {
|
|
68
|
-
background-color: govuk-colour('dark-blue');
|
|
69
|
-
}
|
|
46
|
+
&:hover:not(:focus):not(:active) .wc-availability__unseen {
|
|
47
|
+
background-color: govuk-colour('dark-blue');
|
|
70
48
|
}
|
|
71
49
|
}
|
|
72
50
|
|
|
73
51
|
.wc-availability__unseen {
|
|
74
52
|
display: inline-block;
|
|
75
53
|
position: relative;
|
|
54
|
+
border: 1px solid transparent;
|
|
55
|
+
@media (forced-colors: active) {
|
|
56
|
+
border-color: currentColor;
|
|
57
|
+
}
|
|
76
58
|
border-radius: 10px;
|
|
77
59
|
background-color: govuk-colour('black');
|
|
78
60
|
color: govuk-colour('white');
|
|
@@ -86,4 +68,4 @@
|
|
|
86
68
|
padding-left: 7px;
|
|
87
69
|
padding-right: 7px;
|
|
88
70
|
}
|
|
89
|
-
}
|
|
71
|
+
}
|