diff --git a/Dockerfile b/Dockerfile
index 0a4b22ab..db9b42d9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,12 +1,13 @@
-FROM node:12.16.3
-
+FROM --platform=linux/amd64 node:12.16.3
# Create app directory
WORKDIR /usr/app
+ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
# Copy the package.json file
COPY package.json .
# Install app dependencies
+ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
RUN npm install
# Bundle app source
@@ -14,4 +15,4 @@ COPY . .
# Expose app port from docker container
EXPOSE 3002
-EXPOSE 8888
\ No newline at end of file
+EXPOSE 8888
diff --git a/composer.json b/composer.json
index 20d9f853..f608bd5a 100644
--- a/composer.json
+++ b/composer.json
@@ -1,7 +1,7 @@
{
"name": "dvsa/front-end",
"description": "DVSA front-end assets used within all applications",
- "version": "1.8.6",
+ "version": "1.9.0",
"homepage": "https://github.com/dvsa/front-end",
"license": "MIT"
}
diff --git a/dist/assets/javascripts/development.bundle.js b/dist/assets/javascripts/development.bundle.js
index 3538f124..96c809b6 100644
--- a/dist/assets/javascripts/development.bundle.js
+++ b/dist/assets/javascripts/development.bundle.js
@@ -1,11 +1,11 @@
/*!
*
* Name: dvsa-front-end/development
- * Version: 1.8.6
- * Timestamp: April 18th 2025, 1:59:16 pm
+ * Version: 1.9.0
+ * Timestamp: May 19th 2025, 4:22:46 pm
* Source: https://github.com/dvsa/front-end
*
- */!function(){var e,t={23:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.TEXT_TO_SPEECH_CONFIG={classes:{wrapper:"text-to-speech__wrapper",readerItem:"text-to-speech__item",readerItemHighlight:"text-to-speech__item--highlight",audioBtn:"text-to-speech__button",audioBtnPlaying:"text-to-speech__button--playing"},audioBtnText:"Play audio",dataAttributes:{readerID:"data-item-id"},DOMTargets:["p","ul"],buttonInnerHtml:"Play Audio\n "}},57:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DevPreviewFullscreen=void 0;var r,o=n(3503),i=((r=o)&&r.__esModule,n(24));t.DevPreviewFullscreen=function e(){var t=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.init=function(){t.setupState(),(0,i.delegateEvent)(document,"click",t.selectors.devPreviewFullscreenButton,t.onFullscreenPreviewClick)},this.setupState=function(){t.elements.previewElements.forEach((function(e){var n=e.querySelector(t.selectors.devPreviewFullscreenButton),r=e.querySelector(t.selectors.devPreviewExample),o=e.querySelector(t.selectors.devPreviewPismCode);t.state.previewElements.push({devPreviewElement:e,fullscreenButton:n,devPreviewExample:r,devPreviewPismCode:o,isFullscreen:!1});var i=t.state.previewElements.length-1;e&&e.setAttribute(t.attributes.stateItemId,i),n&&n.setAttribute(t.attributes.stateItemId,i)}))},this.onFullscreenPreviewClick=function(e){if(e&&e.target){var n=e.target.getAttribute(t.attributes.stateItemId),r=t.state.previewElements[n];r&&(r.isFullscreen?(r.devPreviewElement.insertBefore(r.devPreviewExample,r.devPreviewPismCode),(0,i.toggleClass)(r.devPreviewExample,t.classnames.devPreviewExample.fullscreen,!1),(0,i.toggleClass)(t.elements.body,t.classnames.devPreview.overflowBodyHidden,!1),window.scrollTo(0,t.state.previousYOffset),t.state.previousYOffset=0):(t.state.previousYOffset=window.pageYOffset,t.elements.body.appendChild(r.devPreviewExample),(0,i.toggleClass)(r.devPreviewExample,t.classnames.devPreviewExample.fullscreen,!0),(0,i.toggleClass)(t.elements.body,t.classnames.devPreview.overflowBodyHidden,!0),console.log(t.state.previousYOffset)),r.isFullscreen=!r.isFullscreen,r.fullscreenButton.innerText=r.isFullscreen?t.i18n.hideFullscreenPreview:t.i18n.fullScreenPreview)}},this.classnames={devPreview:{overflowBodyHidden:"dev-preview__body-overflow-hidden"},devPreviewExample:{fullscreen:"dev-preview__example--fullscreen"}},this.selectors={devPreview:".dev-preview",devPreviewExample:".dev-preview__example",devPreviewFullscreenButton:".dev-preview__fullscreen-button",devPreviewPismCode:".dev-preview__prism-code",body:"body"},this.attributes={exampleId:"data-example-id",stateItemId:"data-state-item-id"},this.i18n={fullScreenPreview:"Fullscreen preview",hideFullscreenPreview:"Hide fullscreen"},this.elements={body:document.querySelector(this.selectors.body),previewElements:Array.from(document.querySelectorAll(this.selectors.devPreview))},this.state={previousYOffset:0,previewElements:[]},this.elements.previewElements&&Array.isArray(this.elements.previewElements)&&this.init()}},169:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FontSizeToggle=void 0;var r=n(5169),o=n(8695);t.FontSizeToggle=function e(t){var n=this;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.setup=function(){n.state.pageElements=n.getTargetDOMElements(),n.state.pageElements&&((0,r.addEventListenerToEl)(n.state.buttons.increaseButton,"click",n.increaseClickHandler),(0,r.addEventListenerToEl)(n.state.buttons.decreaseButton,"click",n.decreaseClickHandler),(0,r.addEventListenerToEl)(n.state.buttons.resetButton,"click",n.resetButtonClickHandler))},this.increaseClickHandler=function(e){e.preventDefault(),n.testRanges(n.state.currentSize+1)&&(n.state.currentSize+=1,n.updateDOMElements())},this.decreaseClickHandler=function(e){e.preventDefault(),n.testRanges(n.state.currentSize-1)&&(n.state.currentSize-=1,n.updateDOMElements(!1))},this.resetButtonClickHandler=function(e){e.preventDefault(),n.resetState(),n.convertToArray(n.state.pageElements).forEach((function(e){return n.removeAttribute(e,"style")}))},this.testRanges=function(e){var t=!0;return e>n.state.maxSize?(n.disableButton(n.state.buttons.increaseButton),n.enableButton(n.state.buttons.decreaseButton),t=!1):e0&&void 0!==arguments[0])||arguments[0];n.convertToArray(n.state.pageElements).forEach((function(t){var r=parseInt(n.getComputedProperty(t,"font-size"),10);parseInt(n.getComputedProperty(t,"line-height"));t.style.fontSize=e?r+1+"px":r-1+"px"}))},this.removeAttribute=function(e,t){return e.removeAttribute(t)},this.getComputedProperty=function(e,t){return window.getComputedStyle(e).getPropertyValue(t)},this.getTargetDOMElements=function(){return document.body.querySelectorAll(n.state.targets)},this.convertToArray=function(e){return Array.from(e)},t){var i,a,s;i=t.querySelector("."+o.FONT_SIZE_TOGGLE_CONFIG.classes.increaseBtn),a=t.querySelector("."+o.FONT_SIZE_TOGGLE_CONFIG.classes.decreaseBtn),s=t.querySelector("."+o.FONT_SIZE_TOGGLE_CONFIG.classes.resetBtn),this.state={currentSize:0,maxSize:o.FONT_SIZE_TOGGLE_CONFIG.maxSize,minSize:o.FONT_SIZE_TOGGLE_CONFIG.minSize,buttons:{increaseButton:i,decreaseButton:a,resetButton:s},pageElements:"",targets:o.FONT_SIZE_TOGGLE_CONFIG.DOMTargets},this.state.buttons.increaseButton&&this.state.buttons.decreaseButton&&this.state.buttons.resetButton&&this.setup()}}},301:function(){!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e=[],t={},n=function(){};Prism.plugins.toolbar={};var r=Prism.plugins.toolbar.registerButton=function(n,r){var o;o="function"==typeof r?r:function(e){var t;return"function"==typeof r.onClick?((t=document.createElement("button")).type="button",t.addEventListener("click",(function(){r.onClick.call(this,e)}))):"string"==typeof r.url?(t=document.createElement("a")).href=r.url:t=document.createElement("span"),r.className&&t.classList.add(r.className),t.textContent=r.text,t},n in t?console.warn('There is a button with the key "'+n+'" registered already.'):e.push(t[n]=o)},o=Prism.plugins.toolbar.hook=function(r){var o=r.element.parentNode;if(o&&/pre/i.test(o.nodeName)&&!o.parentNode.classList.contains("code-toolbar")){var i=document.createElement("div");i.classList.add("code-toolbar"),o.parentNode.insertBefore(i,o),i.appendChild(o);var a=document.createElement("div");a.classList.add("toolbar");var s=e,l=function(e){for(;e;){var t=e.getAttribute("data-toolbar-order");if(null!=t)return(t=t.trim()).length?t.split(/\s*,\s*/g):[];e=e.parentElement}}(r.element);l&&(s=l.map((function(e){return t[e]||n}))),s.forEach((function(e){var t=e(r);if(t){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(t),a.appendChild(n)}})),i.appendChild(a)}};r("label",(function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-label")){var n,r,o=t.getAttribute("data-label");try{r=document.querySelector("template#"+o)}catch(e){}return r?n=r.content:(t.hasAttribute("data-url")?(n=document.createElement("a")).href=t.getAttribute("data-url"):n=document.createElement("span"),n.textContent=o),n}})),Prism.hooks.add("complete",o)}}()},692:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.initModules=void 0;var r=n(4889),o=(n(7222),n(9828)),i=n(7813),a=n(2589),s=n(2209),l=n(4145);t.initModules=function(){(0,o.initTextToSpeechToggle)(),(0,i.initFontSizeToggle)(),(0,a.initSpeechToText)(),(0,s.initThemeToggle)(),(0,r.initLibraryNavigation)(),(0,l.initAutoComplete)()}},1227:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TextToSpeechToggle=void 0;var r=n(5169),o=n(2765),i=n(23);t.TextToSpeechToggle=function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.setup=function(){return(0,r.addEventListenerToEl)(n.state.form,"change",n.formChangeHandler)},this.formChangeHandler=function(e){var t=e.target.value.toLowerCase();return t?"on"==t?n.enableReader():void n.disableReader():console.warn("Failed to read radio value")},this.enableReader=function(){return n.state.readerReference=new o.TextToSpeech},this.disableReader=function(){n.state.readerReference&&(delete n.state.readerReference,n.cleanReaderElements())},this.cleanReaderElements=function(){var e=document.querySelectorAll("."+i.TEXT_TO_SPEECH_CONFIG.classes.readerItem);(e=Array.from(e)).forEach((function(e){e.classList.remove(""+i.TEXT_TO_SPEECH_CONFIG.classes.readerItem),e.removeAttribute(""+i.TEXT_TO_SPEECH_CONFIG.dataAttributes.id),e.querySelector("."+i.TEXT_TO_SPEECH_CONFIG.classes.audioBtn).remove()}))},t||console.warn("Failed to initialise text to speech toggle");var a=t.querySelector(".text-to-speech-toggle__form");a||console.warn("Text to speech toggle form not found"),this.state={form:a,readerReference:"",readerConfig:{}},this.setup()}},1447:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LibraryPageNavigation=void 0;var r=n(24);t.LibraryPageNavigation=function e(){var t=this;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.mobileNavigationClickHandler=function(){(0,r.toggleClass)(t.navigationInner,t.navigationInnerOpenClassName)},this.sidebar=!1,this.maxWidth=800,this.navigationId="styleguide-navigation",this.navigationInnerClassName="styleguide-navigation__inner",this.navigationInnerOpenClassName="styleguide-navigation__inner--open",this.contentId="styleguide-content",this.mobileNavigationClassName="styleguide-navigation__mobile-nav",this.mobileNavigationContainerClassName="styleguide-navigation",this.libraryContainerId="library-container",this.libraryContainerElement=document.getElementById(this.libraryContainerId),this.navigation=document.getElementById(this.navigationId),this.navigation&&this.libraryContainerElement)return this.mobileNavigationContainer=document.querySelector("."+this.mobileNavigationClassName),this.navigationInner=this.navigation.querySelector("."+this.navigationInnerClassName),this.content=document.getElementById(this.contentId),this.mobileNavigationContainer?this.navigationInner?this.content?void(0,r.addEventListenerToEl)(this.mobileNavigationContainer,"click",this.mobileNavigationClickHandler):console.warn("Library content not found"):console.warn("Navigation inner not found"):console.warn("Mobile navigation container not found")}},1941:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SpeechToText=void 0;var r=n(5169),o=n(7708);t.SpeechToText=function e(t){var n=this;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.setup=function(){(0,r.addEventListenerToEl)(n.elements.recordButton,"click",n.listenBtnClickHandler),n.state.speechRecognition.onstart=n.isRecording,n.state.speechRecognition.onend=n.isStoppedRecording,n.state.speechRecognition.onresult=n.handleOnSpeechResult},this.listenBtnClickHandler=function(e){if(e.preventDefault(),n.state.isRecording)return n.state.speechRecognition.abort(),void n.isStoppedRecording();n.state.speechRecognition.start()},this.handleOnSpeechResult=function(e){var t=e.results[0][0].transcript;""!=n.elements.input.value.trim()&&(t=n.elements.input.value+" "+t),n.elements.input.value=t},this.isRecording=function(){n.state.isRecording=!0,n.elements.submitBtn.disabled=!0,n.elements.input.disabled=!0,n.elements.recordButton.innerHTML=o.SPEECH_TO_TEXT_CONFIG.content.recording},this.isStoppedRecording=function(){n.state.isRecording=!1,n.elements.submitBtn.disabled=!1,n.elements.input.disabled=!1,n.elements.recordButton.innerHTML=o.SPEECH_TO_TEXT_CONFIG.content.init},t){var i=(0,r.closestParentOfEl)(t,"."+o.SPEECH_TO_TEXT_CONFIG.classes.wrapper);this.elements={recordButton:t,wrapper:i,input:i.querySelector("."+o.SPEECH_TO_TEXT_CONFIG.classes.input),submitBtn:i.querySelector("."+o.SPEECH_TO_TEXT_CONFIG.classes.submitBtn)},this.state={speechRecognition:new webkitSpeechRecognition,isRecording:!1},this.elements.wrapper&&this.elements.input&&this.elements.submitBtn&&this.setup()}}},2209:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.initThemeToggle=void 0;var r=n(8157);t.initThemeToggle=function(){var e=document.querySelector(".theme-toggle");e&&new r.ThemeToggle(e)}},2413:function(e){!function(){if("undefined"!=typeof Prism){var t=Object.assign||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},n={"remove-trailing":"boolean","remove-indent":"boolean","left-trim":"boolean","right-trim":"boolean","break-lines":"number",indent:"number","remove-initial-line-feed":"boolean","tabs-to-spaces":"number","spaces-to-tabs":"number"};r.prototype={setDefaults:function(e){this.defaults=t(this.defaults,e)},normalize:function(e,n){for(var r in n=t(this.defaults,n)){var o=r.replace(/-(\w)/g,(function(e,t){return t.toUpperCase()}));"normalize"!==r&&"setDefaults"!==o&&n[r]&&this[o]&&(e=this[o].call(this,e,n[r]))}return e},leftTrim:function(e){return e.replace(/^\s+/,"")},rightTrim:function(e){return e.replace(/\s+$/,"")},tabsToSpaces:function(e,t){return t=0|t||4,e.replace(/\t/g,new Array(++t).join(" "))},spacesToTabs:function(e,t){return t=0|t||4,e.replace(RegExp(" {"+t+"}","g"),"\t")},removeTrailing:function(e){return e.replace(/\s*?$/gm,"")},removeInitialLineFeed:function(e){return e.replace(/^(?:\r?\n|\r)/,"")},removeIndent:function(e){var t=e.match(/^[^\S\n\r]*(?=\S)/gm);return t&&t[0].length?(t.sort((function(e,t){return e.length-t.length})),t[0].length?e.replace(RegExp("^"+t[0],"gm"),""):e):e},indent:function(e,t){return e.replace(/^[^\S\n\r]*(?=\S)/gm,new Array(++t).join("\t")+"$&")},breakLines:function(e,t){t=!0===t?80:0|t||80;for(var n=e.split("\n"),r=0;rt&&(i[s]="\n"+i[s],a=l)}n[r]=i.join("")}return n.join("\n")}},e.exports&&(e.exports=r),Prism.plugins.NormalizeWhitespace=new r({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",(function(e){var t=Prism.plugins.NormalizeWhitespace;if((!e.settings||!1!==e.settings["whitespace-normalization"])&&Prism.util.isActive(e.element,"whitespace-normalization",!0))if(e.element&&e.element.parentNode||!e.code){var r=e.element.parentNode;if(e.code&&r&&"pre"===r.nodeName.toLowerCase()){for(var o in null==e.settings&&(e.settings={}),n)if(Object.hasOwnProperty.call(n,o)){var i=n[o];if(r.hasAttribute("data-"+o))try{var a=JSON.parse(r.getAttribute("data-"+o)||"true");typeof a===i&&(e.settings[o]=a)}catch(e){}}for(var s=r.childNodes,l="",u="",c=!1,d=0;dl;)r(s,n=t[l++])&&(~i(u,n)||u.push(n));return u}},function(e,t,n){var r=n(25),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},function(e,t){e.exports=!1},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(48);e.exports=function(e,t){return new(r(e))(t)}},function(e,t,n){var r=n(2),o=n(33),i=n(34)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},function(e,t,n){"use strict";var r=n(0),o=n(32)(2);r(r.P+r.F*!n(13)([].filter,!0),"Array",{filter:function(e){return o(this,e,arguments[1])}})},function(e,t,n){var r=n(0);r(r.S,"Array",{isArray:n(33)})},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0,n(14),n(36),n(31),n(35),n(30),n(55),n(58);var r=n(5),o=a(n(60)),i=a(n(61));function a(e){return e&&e.__esModule?e:{default:e}}function s(){return(s=Object.assign||function(e){for(var t=1;t=r;this.setState({query:s}),i||!l&&u&&c?o(s,(function(e){var n=0=u,I=this.props.showNoOptionsFound&&F&&k&&A&&N,B=i+"__wrapper",L=i+"__input",M=null!==E?" "+L+"--focused":"",j=this.props.showAllValues?" "+L+"--show-all-values":" "+L+"--default",H=i+"__dropdown-arrow-down",R=-1!==E&&null!==E,q=i+"__menu",z=q+"--"+a,D=q+"--"+(C||I?"visible":"hidden"),$=i+"__option",G=i+"__hint",V=this.templateInputValue(S[O]),U=V&&0===V.toLowerCase().indexOf(T.toLowerCase())&&P?T+V.substr(T.length):"",X=d&&U;return h&&"string"==typeof(e=w({className:H}))&&(e=(0,r.createElement)("div",{className:i+"__dropdown-arrow-down-wrapper",dangerouslySetInnerHTML:{__html:e}})),(0,r.createElement)("div",{className:B,onKeyDown:this.handleKeyDown,role:"combobox","aria-expanded":C?"true":"false"},(0,r.createElement)(o.default,{length:S.length,queryLength:T.length,minQueryLength:u,selectedOption:this.templateInputValue(S[O]),selectedOptionIndex:O,tQueryTooShort:v,tNoResults:m,tSelectedOption:y,tResults:b}),X&&(0,r.createElement)("span",null,(0,r.createElement)("input",{className:G,readonly:!0,tabIndex:"-1",value:U})),(0,r.createElement)("input",s({"aria-activedescendant":!!R&&l+"__option--"+E,"aria-owns":l+"__listbox",autoComplete:"off",className:""+L+M+j,id:l,onClick:function(e){return t.handleInputClick(e)},onBlur:this.handleInputBlur},function(e){return{onInput:e}}(this.handleInputChange),{onFocus:this.handleInputFocus,name:c,placeholder:p,ref:function(e){t.elementReferences[-1]=e},type:"text",role:"textbox",required:f,value:T})),e,(0,r.createElement)("ul",{className:q+" "+z+" "+D,onMouseLeave:function(e){return t.handleListMouseLeave(e)},id:l+"__listbox",role:"listbox"},S.map((function(e,n){var o=(-1===E?O===n:E===n)&&null===x?" "+$+"--focused":"",i=n%2?" "+$+"--odd":"";return(0,r.createElement)("li",{"aria-selected":E===n,className:""+$+o+i,dangerouslySetInnerHTML:{__html:t.templateSuggestion(e)},id:l+"__option--"+n,key:n,onBlur:function(e){return t.handleOptionBlur(e,n)},onClick:function(e){return t.handleOptionClick(e,n)},onMouseEnter:function(e){return t.handleOptionMouseEnter(e,n)},ref:function(e){t.elementReferences[n]=e},role:"option",tabIndex:"-1"})})),I&&(0,r.createElement)("li",{className:$+" "+$+"--no-results"},g())))},t}(r.Component);(t.default=f).defaultProps={autoselect:!1,cssNamespace:"autocomplete",defaultValue:"",displayMenu:"inline",minLength:0,name:"input-autocomplete",placeholder:"",onConfirm:function(){},confirmOnBlur:!0,showNoOptionsFound:!0,showAllValues:!1,required:!1,tNoResults:function(){return"No results found"},dropdownArrow:i.default}},function(e,t,n){var r=n(9),o=n(53),i=n(28),a=n(26)("IE_PROTO"),s=function(){},l="prototype",u=function(){var e,t=n(15)("iframe"),r=i.length;for(t.style.display="none",n(54).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("