hmrc-frontend 6.2.0 → 6.3.0
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/govuk-prototype-kit.config.json +1 -1
- package/hmrc/VERSION.txt +1 -1
- package/hmrc/{accessible-autocomplete-6.2.0.css → accessible-autocomplete-6.3.0.css} +1 -1
- package/hmrc/components/banner/images/hmrc_tudor_crest_18px.png +0 -0
- package/hmrc/components/banner/template.njk +28 -13
- package/hmrc/components/footer/template.njk +34 -88
- package/hmrc/components/header/template.njk +124 -92
- package/hmrc/components/internal-header/images/hmrc_tudor_crest_18px_x2.png +0 -0
- package/hmrc/components/internal-header/template.njk +29 -14
- package/hmrc/govuk/images/favicon.ico +0 -0
- package/hmrc/govuk/images/favicon.svg +1 -4
- package/hmrc/govuk/images/govuk-icon-180.png +0 -0
- package/hmrc/govuk/images/govuk-icon-192.png +0 -0
- package/hmrc/govuk/images/govuk-icon-512.png +0 -0
- package/hmrc/govuk/images/govuk-icon-mask.svg +1 -3
- package/hmrc/govuk/images/govuk-opengraph-image.png +0 -0
- package/hmrc/hmrc-frontend-6.3.0.min.css +4 -0
- package/hmrc/hmrc-frontend-6.3.0.min.js +3 -0
- package/hmrc/layouts/account-header.html +2 -1
- package/hmrc/maps/accessible-autocomplete-6.3.0.css.map +1 -0
- package/hmrc/maps/hmrc-frontend-6.3.0.min.css.map +1 -0
- package/hmrc/maps/{hmrc-frontend-6.2.0.min.js.map → hmrc-frontend-6.3.0.min.js.map} +1 -1
- package/package.json +2 -2
- package/hmrc/hmrc-frontend-6.2.0.min.css +0 -4
- package/hmrc/hmrc-frontend-6.2.0.min.js +0 -3
- package/hmrc/maps/accessible-autocomplete-6.2.0.css.map +0 -1
- package/hmrc/maps/hmrc-frontend-6.2.0.min.css.map +0 -1
- /package/hmrc/{accessible-autocomplete-6.2.0.js → accessible-autocomplete-6.3.0.js} +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
!function(){"use strict";function t(...t){function e(t){const e={};return function t(i,n){for(const[o,s]of Object.entries(i)){const i=n?`${n}.${o}`:o;s&&"object"==typeof s?t(s,i):e[i]=s}}(t),e}const i={};for(const n of t){const t=e(n);for(const[e,n]of Object.entries(t))i[e]=n}return i}function e(t,e){const i={};for(const[n,o]of Object.entries(t)){const t=n.split(".");t[0]===e&&(t.length>1&&t.shift(),i[t.join(".")]=o)}return i}function i(t){if(t.includes("#"))return t.split("#").pop()}function n(t){const e=`--govuk-frontend-breakpoint-${t}`;return{property:e,value:window.getComputedStyle(document.documentElement).getPropertyValue(e)||void 0}}function o(t,e={}){var i;const n=t.getAttribute("tabindex");function o(){var i;null==(i=e.onBlur)||i.call(t),n||t.removeAttribute("tabindex")}n||t.setAttribute("tabindex","-1"),t.addEventListener("focus",(function(){t.addEventListener("blur",o,{once:!0})}),{once:!0}),null==(i=e.onBeforeFocus)||i.call(t),t.focus()}function s(t=document.body){return!!t&&t.classList.contains("govuk-frontend-supported")}function a(t){if("string"!=typeof t)return t;const e=t.trim();return"true"===e||"false"!==e&&(e.length>0&&isFinite(Number(e))?Number(e):t)}function r(t){const e={};for(const[i,n]of Object.entries(t))e[i]=a(n);return e}class c extends Error{constructor(...t){super(...t),this.name="GOVUKFrontendError"}}class l extends c{constructor(t=document.body){const e="noModule"in HTMLScriptElement.prototype?'GOV.UK Frontend initialised without `<body class="govuk-frontend-supported">` from template `<script>` snippet':"GOV.UK Frontend is not supported in this browser";super(t?e:'GOV.UK Frontend initialised without `<script type="module">`'),this.name="SupportError"}}class u extends c{constructor(...t){super(...t),this.name="ConfigError"}}class d extends c{constructor(t){let e="string"==typeof t?t:"";if("object"==typeof t){const{componentName:i,identifier:n,element:o,expectedType:s}=t;e=`${i}: ${n}`,e+=o?` is not of type ${null!=s?s:"HTMLElement"}`:" not found"}super(e),this.name="ElementError"}}class h{constructor(){this.checkSupport()}checkSupport(){if(!s())throw new l}}class m{constructor(t={},e={}){var i;this.translations=void 0,this.locale=void 0,this.translations=t,this.locale=null!=(i=e.locale)?i:document.documentElement.lang||"en"}t(t,e){if(!t)throw new Error("i18n: lookup key missing");"number"==typeof(null==e?void 0:e.count)&&(t=`${t}.${this.getPluralSuffix(t,e.count)}`);const i=this.translations[t];if("string"==typeof i){if(i.match(/%{(.\S+)}/)){if(!e)throw new Error("i18n: cannot replace placeholders in string if no option data provided");return this.replacePlaceholders(i,e)}return i}return t}replacePlaceholders(t,e){const i=Intl.NumberFormat.supportedLocalesOf(this.locale).length?new Intl.NumberFormat(this.locale):void 0;return t.replace(/%{(.\S+)}/g,(function(t,n){if(Object.prototype.hasOwnProperty.call(e,n)){const t=e[n];return!1===t||"number"!=typeof t&&"string"!=typeof t?"":"number"==typeof t?i?i.format(t):`${t}`:t}throw new Error(`i18n: no data found to replace ${t} placeholder in string`)}))}hasIntlPluralRulesSupport(){return Boolean("PluralRules"in window.Intl&&Intl.PluralRules.supportedLocalesOf(this.locale).length)}getPluralSuffix(t,e){if(e=Number(e),!isFinite(e))return"other";const i=this.hasIntlPluralRulesSupport()?new Intl.PluralRules(this.locale).select(e):this.selectPluralFormUsingFallbackRules(e);if(`${t}.${i}`in this.translations)return i;if(`${t}.other`in this.translations)return console.warn(`i18n: Missing plural form ".${i}" for "${this.locale}" locale. Falling back to ".other".`),"other";throw new Error(`i18n: Plural form ".other" is required for "${this.locale}" locale`)}selectPluralFormUsingFallbackRules(t){t=Math.abs(Math.floor(t));const e=this.getPluralRulesForLocale();return e?m.pluralRules[e](t):"other"}getPluralRulesForLocale(){const t=this.locale.split("-")[0];for(const e in m.pluralRulesMap){const i=m.pluralRulesMap[e];if(i.includes(this.locale)||i.includes(t))return e}}}m.pluralRulesMap={arabic:["ar"],chinese:["my","zh","id","ja","jv","ko","ms","th","vi"],french:["hy","bn","fr","gu","hi","fa","pa","zu"],german:["af","sq","az","eu","bg","ca","da","nl","en","et","fi","ka","de","el","hu","lb","no","so","sw","sv","ta","te","tr","ur"],irish:["ga"],russian:["ru","uk"],scottish:["gd"],spanish:["pt-PT","it","es"],welsh:["cy"]},m.pluralRules={arabic:t=>0===t?"zero":1===t?"one":2===t?"two":t%100>=3&&t%100<=10?"few":t%100>=11&&t%100<=99?"many":"other",chinese:()=>"other",french:t=>0===t||1===t?"one":"other",german:t=>1===t?"one":"other",irish:t=>1===t?"one":2===t?"two":t>=3&&t<=6?"few":t>=7&&t<=10?"many":"other",russian(t){const e=t%100,i=e%10;return 1===i&&11!==e?"one":i>=2&&i<=4&&!(e>=12&&e<=14)?"few":0===i||i>=5&&i<=9||e>=11&&e<=14?"many":"other"},scottish:t=>1===t||11===t?"one":2===t||12===t?"two":t>=3&&t<=10||t>=13&&t<=19?"few":"other",spanish:t=>1===t?"one":t%1e6==0&&0!==t?"many":"other",welsh:t=>0===t?"zero":1===t?"one":2===t?"two":3===t?"few":6===t?"many":"other"};class p extends h{constructor(i,n={}){if(super(),this.$module=void 0,this.config=void 0,this.i18n=void 0,this.controlsClass="govuk-accordion__controls",this.showAllClass="govuk-accordion__show-all",this.showAllTextClass="govuk-accordion__show-all-text",this.sectionClass="govuk-accordion__section",this.sectionExpandedClass="govuk-accordion__section--expanded",this.sectionButtonClass="govuk-accordion__section-button",this.sectionHeaderClass="govuk-accordion__section-header",this.sectionHeadingClass="govuk-accordion__section-heading",this.sectionHeadingDividerClass="govuk-accordion__section-heading-divider",this.sectionHeadingTextClass="govuk-accordion__section-heading-text",this.sectionHeadingTextFocusClass="govuk-accordion__section-heading-text-focus",this.sectionShowHideToggleClass="govuk-accordion__section-toggle",this.sectionShowHideToggleFocusClass="govuk-accordion__section-toggle-focus",this.sectionShowHideTextClass="govuk-accordion__section-toggle-text",this.upChevronIconClass="govuk-accordion-nav__chevron",this.downChevronIconClass="govuk-accordion-nav__chevron--down",this.sectionSummaryClass="govuk-accordion__section-summary",this.sectionSummaryFocusClass="govuk-accordion__section-summary-focus",this.sectionContentClass="govuk-accordion__section-content",this.$sections=void 0,this.browserSupportsSessionStorage=!1,this.$showAllButton=null,this.$showAllIcon=null,this.$showAllText=null,!(i instanceof HTMLElement))throw new d({componentName:"Accordion",element:i,identifier:"Root element (`$module`)"});this.$module=i,this.config=t(p.defaults,n,r(i.dataset)),this.i18n=new m(e(this.config,"i18n"));const o=this.$module.querySelectorAll(`.${this.sectionClass}`);if(!o.length)throw new d({componentName:"Accordion",identifier:`Sections (\`<div class="${this.sectionClass}">\`)`});this.$sections=o,this.browserSupportsSessionStorage=g.checkForSessionStorage(),this.initControls(),this.initSectionHeaders();const s=this.checkIfAllSectionsOpen();this.updateShowAllButton(s)}initControls(){this.$showAllButton=document.createElement("button"),this.$showAllButton.setAttribute("type","button"),this.$showAllButton.setAttribute("class",this.showAllClass),this.$showAllButton.setAttribute("aria-expanded","false"),this.$showAllIcon=document.createElement("span"),this.$showAllIcon.classList.add(this.upChevronIconClass),this.$showAllButton.appendChild(this.$showAllIcon);const t=document.createElement("div");t.setAttribute("class",this.controlsClass),t.appendChild(this.$showAllButton),this.$module.insertBefore(t,this.$module.firstChild),this.$showAllText=document.createElement("span"),this.$showAllText.classList.add(this.showAllTextClass),this.$showAllButton.appendChild(this.$showAllText),this.$showAllButton.addEventListener("click",(()=>this.onShowOrHideAllToggle())),"onbeforematch"in document&&document.addEventListener("beforematch",(t=>this.onBeforeMatch(t)))}initSectionHeaders(){this.$sections.forEach(((t,e)=>{const i=t.querySelector(`.${this.sectionHeaderClass}`);if(!i)throw new d({componentName:"Accordion",identifier:`Section headers (\`<div class="${this.sectionHeaderClass}">\`)`});this.constructHeaderMarkup(i,e),this.setExpanded(this.isExpanded(t),t),i.addEventListener("click",(()=>this.onSectionToggle(t))),this.setInitialState(t)}))}constructHeaderMarkup(t,e){const i=t.querySelector(`.${this.sectionButtonClass}`),n=t.querySelector(`.${this.sectionHeadingClass}`),o=t.querySelector(`.${this.sectionSummaryClass}`);if(!n)throw new d({componentName:"Accordion",identifier:`Section heading (\`.${this.sectionHeadingClass}\`)`});if(!i)throw new d({componentName:"Accordion",identifier:`Section button placeholder (\`<span class="${this.sectionButtonClass}">\`)`});const s=document.createElement("button");s.setAttribute("type","button"),s.setAttribute("aria-controls",`${this.$module.id}-content-${e+1}`);for(const t of Array.from(i.attributes))"id"!==t.nodeName&&s.setAttribute(t.nodeName,`${t.nodeValue}`);const a=document.createElement("span");a.classList.add(this.sectionHeadingTextClass),a.id=i.id;const r=document.createElement("span");r.classList.add(this.sectionHeadingTextFocusClass),a.appendChild(r),r.innerHTML=i.innerHTML;const c=document.createElement("span");c.classList.add(this.sectionShowHideToggleClass),c.setAttribute("data-nosnippet","");const l=document.createElement("span");l.classList.add(this.sectionShowHideToggleFocusClass),c.appendChild(l);const u=document.createElement("span"),h=document.createElement("span");if(h.classList.add(this.upChevronIconClass),l.appendChild(h),u.classList.add(this.sectionShowHideTextClass),l.appendChild(u),s.appendChild(a),s.appendChild(this.getButtonPunctuationEl()),null!=o&&o.parentNode){const t=document.createElement("span"),e=document.createElement("span");e.classList.add(this.sectionSummaryFocusClass),t.appendChild(e);for(const e of Array.from(o.attributes))t.setAttribute(e.nodeName,`${e.nodeValue}`);e.innerHTML=o.innerHTML,o.parentNode.replaceChild(t,o),s.appendChild(t),s.appendChild(this.getButtonPunctuationEl())}s.appendChild(c),n.removeChild(i),n.appendChild(s)}onBeforeMatch(t){const e=t.target;if(!(e instanceof Element))return;const i=e.closest(`.${this.sectionClass}`);i&&this.setExpanded(!0,i)}onSectionToggle(t){const e=this.isExpanded(t);this.setExpanded(!e,t),this.storeState(t)}onShowOrHideAllToggle(){const t=!this.checkIfAllSectionsOpen();this.$sections.forEach((e=>{this.setExpanded(t,e),this.storeState(e)})),this.updateShowAllButton(t)}setExpanded(t,e){const i=e.querySelector(`.${this.upChevronIconClass}`),n=e.querySelector(`.${this.sectionShowHideTextClass}`),o=e.querySelector(`.${this.sectionButtonClass}`),s=e.querySelector(`.${this.sectionContentClass}`);if(!s)throw new d({componentName:"Accordion",identifier:`Section content (\`<div class="${this.sectionContentClass}">\`)`});if(!i||!n||!o)return;const a=t?this.i18n.t("hideSection"):this.i18n.t("showSection");n.textContent=a,o.setAttribute("aria-expanded",`${t}`);const r=[],c=e.querySelector(`.${this.sectionHeadingTextClass}`);c&&r.push(`${c.textContent}`.trim());const l=e.querySelector(`.${this.sectionSummaryClass}`);l&&r.push(`${l.textContent}`.trim());const u=t?this.i18n.t("hideSectionAriaLabel"):this.i18n.t("showSectionAriaLabel");r.push(u),o.setAttribute("aria-label",r.join(" , ")),t?(s.removeAttribute("hidden"),e.classList.add(this.sectionExpandedClass),i.classList.remove(this.downChevronIconClass)):(s.setAttribute("hidden","until-found"),e.classList.remove(this.sectionExpandedClass),i.classList.add(this.downChevronIconClass));const h=this.checkIfAllSectionsOpen();this.updateShowAllButton(h)}isExpanded(t){return t.classList.contains(this.sectionExpandedClass)}checkIfAllSectionsOpen(){return this.$sections.length===this.$module.querySelectorAll(`.${this.sectionExpandedClass}`).length}updateShowAllButton(t){this.$showAllButton&&this.$showAllText&&this.$showAllIcon&&(this.$showAllButton.setAttribute("aria-expanded",t.toString()),this.$showAllText.textContent=t?this.i18n.t("hideAllSections"):this.i18n.t("showAllSections"),this.$showAllIcon.classList.toggle(this.downChevronIconClass,!t))}storeState(t){if(this.browserSupportsSessionStorage&&this.config.rememberExpanded){const e=t.querySelector(`.${this.sectionButtonClass}`);if(e){const t=e.getAttribute("aria-controls"),i=e.getAttribute("aria-expanded");t&&i&&window.sessionStorage.setItem(t,i)}}}setInitialState(t){if(this.browserSupportsSessionStorage&&this.config.rememberExpanded){const e=t.querySelector(`.${this.sectionButtonClass}`);if(e){const i=e.getAttribute("aria-controls"),n=i?window.sessionStorage.getItem(i):null;null!==n&&this.setExpanded("true"===n,t)}}}getButtonPunctuationEl(){const t=document.createElement("span");return t.classList.add("govuk-visually-hidden",this.sectionHeadingDividerClass),t.innerHTML=", ",t}}p.moduleName="govuk-accordion",p.defaults=Object.freeze({i18n:{hideAllSections:"Hide all sections",hideSection:"Hide",hideSectionAriaLabel:"Hide this section",showAllSections:"Show all sections",showSection:"Show",showSectionAriaLabel:"Show this section"},rememberExpanded:!0});const g={checkForSessionStorage:function(){const t="this is the test string";let e;try{return window.sessionStorage.setItem(t,t),e=window.sessionStorage.getItem(t)===t.toString(),window.sessionStorage.removeItem(t),e}catch(t){return!1}}};class f extends h{constructor(e,i={}){if(super(),this.$module=void 0,this.config=void 0,this.debounceFormSubmitTimer=null,!(e instanceof HTMLElement))throw new d({componentName:"Button",element:e,identifier:"Root element (`$module`)"});this.$module=e,this.config=t(f.defaults,i,r(e.dataset)),this.$module.addEventListener("keydown",(t=>this.handleKeyDown(t))),this.$module.addEventListener("click",(t=>this.debounce(t)))}handleKeyDown(t){const e=t.target;32===t.keyCode&&e instanceof HTMLElement&&"button"===e.getAttribute("role")&&(t.preventDefault(),e.click())}debounce(t){if(this.config.preventDoubleClick)return this.debounceFormSubmitTimer?(t.preventDefault(),!1):void(this.debounceFormSubmitTimer=window.setTimeout((()=>{this.debounceFormSubmitTimer=null}),1e3))}}function v(t,e){const i=t.closest(`[${e}]`);return i?i.getAttribute(e):null}f.moduleName="govuk-button",f.defaults=Object.freeze({preventDoubleClick:!1});class b extends h{constructor(i,n={}){var o,s;if(super(),this.$module=void 0,this.$textarea=void 0,this.$visibleCountMessage=void 0,this.$screenReaderCountMessage=void 0,this.lastInputTimestamp=null,this.lastInputValue="",this.valueChecker=null,this.config=void 0,this.i18n=void 0,this.maxLength=void 0,!(i instanceof HTMLElement))throw new d({componentName:"Character count",element:i,identifier:"Root element (`$module`)"});const a=i.querySelector(".govuk-js-character-count");if(!(a instanceof HTMLTextAreaElement||a instanceof HTMLInputElement))throw new d({componentName:"Character count",element:a,expectedType:"HTMLTextareaElement or HTMLInputElement",identifier:"Form field (`.govuk-js-character-count`)"});const c=r(i.dataset);let l={};("maxwords"in c||"maxlength"in c)&&(l={maxlength:void 0,maxwords:void 0}),this.config=t(b.defaults,n,l,c);const h=function(t,e){const i=[];for(const[n,o]of Object.entries(t)){const t=[];for(const{required:i,errorMessage:n}of o)i.every((t=>!!e[t]))||t.push(n);"anyOf"!==n||o.length-t.length>=1||i.push(...t)}return i}(b.schema,this.config);if(h[0])throw new u(`Character count: ${h[0]}`);this.i18n=new m(e(this.config,"i18n"),{locale:v(i,"lang")}),this.maxLength=null!=(o=null!=(s=this.config.maxwords)?s:this.config.maxlength)?o:1/0,this.$module=i,this.$textarea=a;const p=`${this.$textarea.id}-info`,g=document.getElementById(p);if(!g)throw new d({componentName:"Character count",element:g,identifier:`Count message (\`id="${p}"\`)`});`${g.textContent}`.match(/^\s*$/)&&(g.textContent=this.i18n.t("textareaDescription",{count:this.maxLength})),this.$textarea.insertAdjacentElement("afterend",g);const f=document.createElement("div");f.className="govuk-character-count__sr-status govuk-visually-hidden",f.setAttribute("aria-live","polite"),this.$screenReaderCountMessage=f,g.insertAdjacentElement("afterend",f);const w=document.createElement("div");w.className=g.className,w.classList.add("govuk-character-count__status"),w.setAttribute("aria-hidden","true"),this.$visibleCountMessage=w,g.insertAdjacentElement("afterend",w),g.classList.add("govuk-visually-hidden"),this.$textarea.removeAttribute("maxlength"),this.bindChangeEvents(),window.addEventListener("pageshow",(()=>this.updateCountMessage())),this.updateCountMessage()}bindChangeEvents(){this.$textarea.addEventListener("keyup",(()=>this.handleKeyUp())),this.$textarea.addEventListener("focus",(()=>this.handleFocus())),this.$textarea.addEventListener("blur",(()=>this.handleBlur()))}handleKeyUp(){this.updateVisibleCountMessage(),this.lastInputTimestamp=Date.now()}handleFocus(){this.valueChecker=window.setInterval((()=>{(!this.lastInputTimestamp||Date.now()-500>=this.lastInputTimestamp)&&this.updateIfValueChanged()}),1e3)}handleBlur(){this.valueChecker&&window.clearInterval(this.valueChecker)}updateIfValueChanged(){this.$textarea.value!==this.lastInputValue&&(this.lastInputValue=this.$textarea.value,this.updateCountMessage())}updateCountMessage(){this.updateVisibleCountMessage(),this.updateScreenReaderCountMessage()}updateVisibleCountMessage(){const t=this.maxLength-this.count(this.$textarea.value)<0;this.$visibleCountMessage.classList.toggle("govuk-character-count__message--disabled",!this.isOverThreshold()),this.$textarea.classList.toggle("govuk-textarea--error",t),this.$visibleCountMessage.classList.toggle("govuk-error-message",t),this.$visibleCountMessage.classList.toggle("govuk-hint",!t),this.$visibleCountMessage.textContent=this.getCountMessage()}updateScreenReaderCountMessage(){this.isOverThreshold()?this.$screenReaderCountMessage.removeAttribute("aria-hidden"):this.$screenReaderCountMessage.setAttribute("aria-hidden","true"),this.$screenReaderCountMessage.textContent=this.getCountMessage()}count(t){var e;return this.config.maxwords?(null!=(e=t.match(/\S+/g))?e:[]).length:t.length}getCountMessage(){const t=this.maxLength-this.count(this.$textarea.value),e=this.config.maxwords?"words":"characters";return this.formatCountMessage(t,e)}formatCountMessage(t,e){if(0===t)return this.i18n.t(`${e}AtLimit`);const i=t<0?"OverLimit":"UnderLimit";return this.i18n.t(`${e}${i}`,{count:Math.abs(t)})}isOverThreshold(){if(!this.config.threshold)return!0;const t=this.count(this.$textarea.value);return this.maxLength*this.config.threshold/100<=t}}b.moduleName="govuk-character-count",b.defaults=Object.freeze({threshold:0,i18n:{charactersUnderLimit:{one:"You have %{count} character remaining",other:"You have %{count} characters remaining"},charactersAtLimit:"You have 0 characters remaining",charactersOverLimit:{one:"You have %{count} character too many",other:"You have %{count} characters too many"},wordsUnderLimit:{one:"You have %{count} word remaining",other:"You have %{count} words remaining"},wordsAtLimit:"You have 0 words remaining",wordsOverLimit:{one:"You have %{count} word too many",other:"You have %{count} words too many"},textareaDescription:{other:""}}}),b.schema=Object.freeze({anyOf:[{required:["maxwords"],errorMessage:'Either "maxlength" or "maxwords" must be provided'},{required:["maxlength"],errorMessage:'Either "maxlength" or "maxwords" must be provided'}]});class w extends h{constructor(t){if(super(),this.$module=void 0,this.$inputs=void 0,!(t instanceof HTMLElement))throw new d({componentName:"Checkboxes",element:t,identifier:"Root element (`$module`)"});const e=t.querySelectorAll('input[type="checkbox"]');if(!e.length)throw new d({componentName:"Checkboxes",identifier:'Form inputs (`<input type="checkbox">`)'});this.$module=t,this.$inputs=e,this.$inputs.forEach((t=>{const e=t.getAttribute("data-aria-controls");if(e){if(!document.getElementById(e))throw new d({componentName:"Checkboxes",identifier:`Conditional reveal (\`id="${e}"\`)`});t.setAttribute("aria-controls",e),t.removeAttribute("data-aria-controls")}})),window.addEventListener("pageshow",(()=>this.syncAllConditionalReveals())),this.syncAllConditionalReveals(),this.$module.addEventListener("click",(t=>this.handleClick(t)))}syncAllConditionalReveals(){this.$inputs.forEach((t=>this.syncConditionalRevealWithInputState(t)))}syncConditionalRevealWithInputState(t){const e=t.getAttribute("aria-controls");if(!e)return;const i=document.getElementById(e);if(i&&i.classList.contains("govuk-checkboxes__conditional")){const e=t.checked;t.setAttribute("aria-expanded",e.toString()),i.classList.toggle("govuk-checkboxes__conditional--hidden",!e)}}unCheckAllInputsExcept(t){document.querySelectorAll(`input[type="checkbox"][name="${t.name}"]`).forEach((e=>{t.form===e.form&&e!==t&&(e.checked=!1,this.syncConditionalRevealWithInputState(e))}))}unCheckExclusiveInputs(t){document.querySelectorAll(`input[data-behaviour="exclusive"][type="checkbox"][name="${t.name}"]`).forEach((e=>{t.form===e.form&&(e.checked=!1,this.syncConditionalRevealWithInputState(e))}))}handleClick(t){const e=t.target;e instanceof HTMLInputElement&&"checkbox"===e.type&&(e.getAttribute("aria-controls")&&this.syncConditionalRevealWithInputState(e),e.checked&&("exclusive"===e.getAttribute("data-behaviour")?this.unCheckAllInputsExcept(e):this.unCheckExclusiveInputs(e)))}}w.moduleName="govuk-checkboxes";class y extends h{constructor(e,i={}){if(super(),this.$module=void 0,this.config=void 0,!(e instanceof HTMLElement))throw new d({componentName:"Error summary",element:e,identifier:"Root element (`$module`)"});this.$module=e,this.config=t(y.defaults,i,r(e.dataset)),this.config.disableAutoFocus||o(this.$module),this.$module.addEventListener("click",(t=>this.handleClick(t)))}handleClick(t){const e=t.target;e&&this.focusTarget(e)&&t.preventDefault()}focusTarget(t){if(!(t instanceof HTMLAnchorElement))return!1;const e=i(t.href);if(!e)return!1;const n=document.getElementById(e);if(!n)return!1;const o=this.getAssociatedLegendOrLabel(n);return!!o&&(o.scrollIntoView(),n.focus({preventScroll:!0}),!0)}getAssociatedLegendOrLabel(t){var e;const i=t.closest("fieldset");if(i){const e=i.getElementsByTagName("legend");if(e.length){const i=e[0];if(t instanceof HTMLInputElement&&("checkbox"===t.type||"radio"===t.type))return i;const n=i.getBoundingClientRect().top,o=t.getBoundingClientRect();if(o.height&&window.innerHeight&&o.top+o.height-n<window.innerHeight/2)return i}}return null!=(e=document.querySelector(`label[for='${t.getAttribute("id")}']`))?e:t.closest("label")}}y.moduleName="govuk-error-summary",y.defaults=Object.freeze({disableAutoFocus:!1});class k extends h{constructor(i,n={}){if(super(),this.$module=void 0,this.config=void 0,this.i18n=void 0,this.$button=void 0,this.$skiplinkButton=null,this.$updateSpan=null,this.$indicatorContainer=null,this.$overlay=null,this.keypressCounter=0,this.lastKeyWasModified=!1,this.timeoutTime=5e3,this.keypressTimeoutId=null,this.timeoutMessageId=null,!(i instanceof HTMLElement))throw new d({componentName:"Exit this page",element:i,identifier:"Root element (`$module`)"});const o=i.querySelector(".govuk-exit-this-page__button");if(!(o instanceof HTMLAnchorElement))throw new d({componentName:"Exit this page",element:o,expectedType:"HTMLAnchorElement",identifier:"Button (`.govuk-exit-this-page__button`)"});this.config=t(k.defaults,n,r(i.dataset)),this.i18n=new m(e(this.config,"i18n")),this.$module=i,this.$button=o;const s=document.querySelector(".govuk-js-exit-this-page-skiplink");s instanceof HTMLAnchorElement&&(this.$skiplinkButton=s),this.buildIndicator(),this.initUpdateSpan(),this.initButtonClickHandler(),"govukFrontendExitThisPageKeypress"in document.body.dataset||(document.addEventListener("keyup",this.handleKeypress.bind(this),!0),document.body.dataset.govukFrontendExitThisPageKeypress="true"),window.addEventListener("pageshow",this.resetPage.bind(this))}initUpdateSpan(){this.$updateSpan=document.createElement("span"),this.$updateSpan.setAttribute("role","status"),this.$updateSpan.className="govuk-visually-hidden",this.$module.appendChild(this.$updateSpan)}initButtonClickHandler(){this.$button.addEventListener("click",this.handleClick.bind(this)),this.$skiplinkButton&&this.$skiplinkButton.addEventListener("click",this.handleClick.bind(this))}buildIndicator(){this.$indicatorContainer=document.createElement("div"),this.$indicatorContainer.className="govuk-exit-this-page__indicator",this.$indicatorContainer.setAttribute("aria-hidden","true");for(let t=0;t<3;t++){const t=document.createElement("div");t.className="govuk-exit-this-page__indicator-light",this.$indicatorContainer.appendChild(t)}this.$button.appendChild(this.$indicatorContainer)}updateIndicator(){this.$indicatorContainer&&(this.$indicatorContainer.classList.toggle("govuk-exit-this-page__indicator--visible",this.keypressCounter>0),this.$indicatorContainer.querySelectorAll(".govuk-exit-this-page__indicator-light").forEach(((t,e)=>{t.classList.toggle("govuk-exit-this-page__indicator-light--on",e<this.keypressCounter)})))}exitPage(){this.$updateSpan&&(this.$updateSpan.textContent="",document.body.classList.add("govuk-exit-this-page-hide-content"),this.$overlay=document.createElement("div"),this.$overlay.className="govuk-exit-this-page-overlay",this.$overlay.setAttribute("role","alert"),document.body.appendChild(this.$overlay),this.$overlay.textContent=this.i18n.t("activated"),window.location.href=this.$button.href)}handleClick(t){t.preventDefault(),this.exitPage()}handleKeypress(t){this.$updateSpan&&("Shift"!==t.key&&16!==t.keyCode&&16!==t.which||this.lastKeyWasModified?this.keypressTimeoutId&&this.resetKeypressTimer():(this.keypressCounter+=1,this.updateIndicator(),this.timeoutMessageId&&(window.clearTimeout(this.timeoutMessageId),this.timeoutMessageId=null),this.keypressCounter>=3?(this.keypressCounter=0,this.keypressTimeoutId&&(window.clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=null),this.exitPage()):1===this.keypressCounter?this.$updateSpan.textContent=this.i18n.t("pressTwoMoreTimes"):this.$updateSpan.textContent=this.i18n.t("pressOneMoreTime"),this.setKeypressTimer()),this.lastKeyWasModified=t.shiftKey)}setKeypressTimer(){this.keypressTimeoutId&&window.clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=window.setTimeout(this.resetKeypressTimer.bind(this),this.timeoutTime)}resetKeypressTimer(){if(!this.$updateSpan)return;this.keypressTimeoutId&&(window.clearTimeout(this.keypressTimeoutId),this.keypressTimeoutId=null);const t=this.$updateSpan;this.keypressCounter=0,t.textContent=this.i18n.t("timedOut"),this.timeoutMessageId=window.setTimeout((()=>{t.textContent=""}),this.timeoutTime),this.updateIndicator()}resetPage(){document.body.classList.remove("govuk-exit-this-page-hide-content"),this.$overlay&&(this.$overlay.remove(),this.$overlay=null),this.$updateSpan&&(this.$updateSpan.setAttribute("role","status"),this.$updateSpan.textContent=""),this.updateIndicator(),this.keypressTimeoutId&&window.clearTimeout(this.keypressTimeoutId),this.timeoutMessageId&&window.clearTimeout(this.timeoutMessageId)}}k.moduleName="govuk-exit-this-page",k.defaults=Object.freeze({i18n:{activated:"Loading.",timedOut:"Exit this page expired.",pressTwoMoreTimes:"Shift, press 2 more times to exit.",pressOneMoreTime:"Shift, press 1 more time to exit."}});class $ extends h{constructor(t){if(super(),this.$module=void 0,this.$menuButton=void 0,this.$menu=void 0,this.menuIsOpen=!1,this.mql=null,!t)throw new d({componentName:"Header",element:t,identifier:"Root element (`$module`)"});this.$module=t;const e=t.querySelector(".govuk-js-header-toggle");if(!e)return this;const i=e.getAttribute("aria-controls");if(!i)throw new d({componentName:"Header",identifier:'Navigation button (`<button class="govuk-js-header-toggle">`) attribute (`aria-controls`)'});const n=document.getElementById(i);if(!n)throw new d({componentName:"Header",element:n,identifier:`Navigation (\`<ul id="${i}">\`)`});this.$menu=n,this.$menuButton=e,this.setupResponsiveChecks(),this.$menuButton.addEventListener("click",(()=>this.handleMenuButtonClick()))}setupResponsiveChecks(){const t=n("desktop");if(!t.value)throw new d({componentName:"Header",identifier:`CSS custom property (\`${t.property}\`) on pseudo-class \`:root\``});this.mql=window.matchMedia(`(min-width: ${t.value})`),"addEventListener"in this.mql?this.mql.addEventListener("change",(()=>this.checkMode())):this.mql.addListener((()=>this.checkMode())),this.checkMode()}checkMode(){this.mql&&this.$menu&&this.$menuButton&&(this.mql.matches?(this.$menu.removeAttribute("hidden"),this.$menuButton.setAttribute("hidden","")):(this.$menuButton.removeAttribute("hidden"),this.$menuButton.setAttribute("aria-expanded",this.menuIsOpen.toString()),this.menuIsOpen?this.$menu.removeAttribute("hidden"):this.$menu.setAttribute("hidden","")))}handleMenuButtonClick(){this.menuIsOpen=!this.menuIsOpen,this.checkMode()}}$.moduleName="govuk-header";class C extends h{constructor(e,i={}){if(super(),this.$module=void 0,this.config=void 0,!(e instanceof HTMLElement))throw new d({componentName:"Notification banner",element:e,identifier:"Root element (`$module`)"});this.$module=e,this.config=t(C.defaults,i,r(e.dataset)),"alert"!==this.$module.getAttribute("role")||this.config.disableAutoFocus||o(this.$module)}}C.moduleName="govuk-notification-banner",C.defaults=Object.freeze({disableAutoFocus:!1});class S extends h{constructor(t){if(super(),this.$module=void 0,this.$inputs=void 0,!(t instanceof HTMLElement))throw new d({componentName:"Radios",element:t,identifier:"Root element (`$module`)"});const e=t.querySelectorAll('input[type="radio"]');if(!e.length)throw new d({componentName:"Radios",identifier:'Form inputs (`<input type="radio">`)'});this.$module=t,this.$inputs=e,this.$inputs.forEach((t=>{const e=t.getAttribute("data-aria-controls");if(e){if(!document.getElementById(e))throw new d({componentName:"Radios",identifier:`Conditional reveal (\`id="${e}"\`)`});t.setAttribute("aria-controls",e),t.removeAttribute("data-aria-controls")}})),window.addEventListener("pageshow",(()=>this.syncAllConditionalReveals())),this.syncAllConditionalReveals(),this.$module.addEventListener("click",(t=>this.handleClick(t)))}syncAllConditionalReveals(){this.$inputs.forEach((t=>this.syncConditionalRevealWithInputState(t)))}syncConditionalRevealWithInputState(t){const e=t.getAttribute("aria-controls");if(!e)return;const i=document.getElementById(e);if(null!=i&&i.classList.contains("govuk-radios__conditional")){const e=t.checked;t.setAttribute("aria-expanded",e.toString()),i.classList.toggle("govuk-radios__conditional--hidden",!e)}}handleClick(t){const e=t.target;if(!(e instanceof HTMLInputElement)||"radio"!==e.type)return;const i=document.querySelectorAll('input[type="radio"][aria-controls]'),n=e.form,o=e.name;i.forEach((t=>{const e=t.form===n;t.name===o&&e&&this.syncConditionalRevealWithInputState(t)}))}}S.moduleName="govuk-radios";class A extends h{constructor(t){var e;if(super(),this.$module=void 0,!(t instanceof HTMLAnchorElement))throw new d({componentName:"Skip link",element:t,expectedType:"HTMLAnchorElement",identifier:"Root element (`$module`)"});this.$module=t;const n=this.$module.hash,s=null!=(e=this.$module.getAttribute("href"))?e:"";let a;try{a=new window.URL(this.$module.href)}catch(t){throw new d(`Skip link: Target link (\`href="${s}"\`) is invalid`)}if(a.origin!==window.location.origin||a.pathname!==window.location.pathname)return;const r=i(n);if(!r)throw new d(`Skip link: Target link (\`href="${s}"\`) has no hash fragment`);const c=document.getElementById(r);if(!c)throw new d({componentName:"Skip link",element:c,identifier:`Target content (\`id="${r}"\`)`});this.$module.addEventListener("click",(()=>o(c,{onBeforeFocus(){c.classList.add("govuk-skip-link-focused-element")},onBlur(){c.classList.remove("govuk-skip-link-focused-element")}})))}}A.moduleName="govuk-skip-link";class x extends h{constructor(t){if(super(),this.$module=void 0,this.$tabs=void 0,this.$tabList=void 0,this.$tabListItems=void 0,this.keys={left:37,right:39,up:38,down:40},this.jsHiddenClass="govuk-tabs__panel--hidden",this.changingHash=!1,this.boundTabClick=void 0,this.boundTabKeydown=void 0,this.boundOnHashChange=void 0,this.mql=null,!t)throw new d({componentName:"Tabs",element:t,identifier:"Root element (`$module`)"});const e=t.querySelectorAll("a.govuk-tabs__tab");if(!e.length)throw new d({componentName:"Tabs",identifier:'Links (`<a class="govuk-tabs__tab">`)'});this.$module=t,this.$tabs=e,this.boundTabClick=this.onTabClick.bind(this),this.boundTabKeydown=this.onTabKeydown.bind(this),this.boundOnHashChange=this.onHashChange.bind(this);const i=this.$module.querySelector(".govuk-tabs__list"),n=this.$module.querySelectorAll("li.govuk-tabs__list-item");if(!i)throw new d({componentName:"Tabs",identifier:'List (`<ul class="govuk-tabs__list">`)'});if(!n.length)throw new d({componentName:"Tabs",identifier:'List items (`<li class="govuk-tabs__list-item">`)'});this.$tabList=i,this.$tabListItems=n,this.setupResponsiveChecks()}setupResponsiveChecks(){const t=n("tablet");if(!t.value)throw new d({componentName:"Tabs",identifier:`CSS custom property (\`${t.property}\`) on pseudo-class \`:root\``});this.mql=window.matchMedia(`(min-width: ${t.value})`),"addEventListener"in this.mql?this.mql.addEventListener("change",(()=>this.checkMode())):this.mql.addListener((()=>this.checkMode())),this.checkMode()}checkMode(){var t;null!=(t=this.mql)&&t.matches?this.setup():this.teardown()}setup(){var t;this.$tabList.setAttribute("role","tablist"),this.$tabListItems.forEach((t=>{t.setAttribute("role","presentation")})),this.$tabs.forEach((t=>{this.setAttributes(t),t.addEventListener("click",this.boundTabClick,!0),t.addEventListener("keydown",this.boundTabKeydown,!0),this.hideTab(t)}));const e=null!=(t=this.getTab(window.location.hash))?t:this.$tabs[0];this.showTab(e),window.addEventListener("hashchange",this.boundOnHashChange,!0)}teardown(){this.$tabList.removeAttribute("role"),this.$tabListItems.forEach((t=>{t.removeAttribute("role")})),this.$tabs.forEach((t=>{t.removeEventListener("click",this.boundTabClick,!0),t.removeEventListener("keydown",this.boundTabKeydown,!0),this.unsetAttributes(t)})),window.removeEventListener("hashchange",this.boundOnHashChange,!0)}onHashChange(){const t=window.location.hash,e=this.getTab(t);if(!e)return;if(this.changingHash)return void(this.changingHash=!1);const i=this.getCurrentTab();i&&(this.hideTab(i),this.showTab(e),e.focus())}hideTab(t){this.unhighlightTab(t),this.hidePanel(t)}showTab(t){this.highlightTab(t),this.showPanel(t)}getTab(t){return this.$module.querySelector(`a.govuk-tabs__tab[href="${t}"]`)}setAttributes(t){const e=i(t.href);if(!e)return;t.setAttribute("id",`tab_${e}`),t.setAttribute("role","tab"),t.setAttribute("aria-controls",e),t.setAttribute("aria-selected","false"),t.setAttribute("tabindex","-1");const n=this.getPanel(t);n&&(n.setAttribute("role","tabpanel"),n.setAttribute("aria-labelledby",t.id),n.classList.add(this.jsHiddenClass))}unsetAttributes(t){t.removeAttribute("id"),t.removeAttribute("role"),t.removeAttribute("aria-controls"),t.removeAttribute("aria-selected"),t.removeAttribute("tabindex");const e=this.getPanel(t);e&&(e.removeAttribute("role"),e.removeAttribute("aria-labelledby"),e.classList.remove(this.jsHiddenClass))}onTabClick(t){const e=this.getCurrentTab(),i=t.currentTarget;e&&i instanceof HTMLAnchorElement&&(t.preventDefault(),this.hideTab(e),this.showTab(i),this.createHistoryEntry(i))}createHistoryEntry(t){const e=this.getPanel(t);if(!e)return;const i=e.id;e.id="",this.changingHash=!0,window.location.hash=i,e.id=i}onTabKeydown(t){switch(t.keyCode){case this.keys.left:case this.keys.up:this.activatePreviousTab(),t.preventDefault();break;case this.keys.right:case this.keys.down:this.activateNextTab(),t.preventDefault()}}activateNextTab(){const t=this.getCurrentTab();if(null==t||!t.parentElement)return;const e=t.parentElement.nextElementSibling;if(!e)return;const i=e.querySelector("a.govuk-tabs__tab");i&&(this.hideTab(t),this.showTab(i),i.focus(),this.createHistoryEntry(i))}activatePreviousTab(){const t=this.getCurrentTab();if(null==t||!t.parentElement)return;const e=t.parentElement.previousElementSibling;if(!e)return;const i=e.querySelector("a.govuk-tabs__tab");i&&(this.hideTab(t),this.showTab(i),i.focus(),this.createHistoryEntry(i))}getPanel(t){const e=i(t.href);return e?this.$module.querySelector(`#${e}`):null}showPanel(t){const e=this.getPanel(t);e&&e.classList.remove(this.jsHiddenClass)}hidePanel(t){const e=this.getPanel(t);e&&e.classList.add(this.jsHiddenClass)}unhighlightTab(t){t.parentElement&&(t.setAttribute("aria-selected","false"),t.parentElement.classList.remove("govuk-tabs__list-item--selected"),t.setAttribute("tabindex","-1"))}highlightTab(t){t.parentElement&&(t.setAttribute("aria-selected","true"),t.parentElement.classList.add("govuk-tabs__list-item--selected"),t.setAttribute("tabindex","0"))}getCurrentTab(){return this.$module.querySelector(".govuk-tabs__list-item--selected a.govuk-tabs__tab")}}x.moduleName="govuk-tabs";var E={xs:0,mobile:320,tablet:641,desktop:769};function T(t){return Object.keys(E).reduce((function(e,i){return(t||window.innerWidth)>=E[i]?i:e}))}var L=function(t){return t.innerWidth<=768};function M(t){this.$module=document.querySelector(t),this.$moduleBottomMargin=this.$module.style.marginBottom,this.$mainNav=this.$module.querySelector(".hmrc-account-menu__main"),this.$showNavLinkMobile=this.$module.querySelector(".hmrc-account-menu__link--menu"),this.$currentBreakpoint=T()}function _(t,e,i){this.$module=t,this.window=e,this.document=i}function N(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,n)}return i}function I(t){return I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},I(t)}function H(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,B(n.key),n)}}function O(t,e,i){return(e=B(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function B(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}M.prototype.init=function(){this.setup(),this.$showNavLinkMobile.addEventListener("click",this.eventHandlers.showNavLinkMobileClick.bind(this)),window.addEventListener("resize",function(t,e,i){var n,o=this;return function(){for(var s=arguments.length,a=new Array(s),r=0;r<s;r++)a[r]=arguments[r];var c=o,l=i&&!n;clearTimeout(n),n=setTimeout((function(){n=null,i||t.apply(c,a)}),e),l&&t.apply(c,a)}}(this.reinstantiate.bind(this)))},M.prototype.reinstantiate=function(t){var e=T(t.target.innerWidth);this.$currentBreakpoint!==e&&(this.$currentBreakpoint=e,this.setup())},M.prototype.eventHandlers={showNavLinkMobileClick:function(t){t.preventDefault(),L(window)&&(this.$mainNav.classList.contains("main-nav-is-open")?this.hideMainNavMobile(t.currentTarget):this.showMainNavMobile())}},M.prototype.setup=function(){L(window)?(this.$module.classList.add("is-smaller"),this.$showNavLinkMobile.setAttribute("aria-hidden","false"),this.$showNavLinkMobile.removeAttribute("tabindex"),this.$showNavLinkMobile.classList.remove("js-hidden"),this.hideMainNavMobile(this.$showNavLinkMobile)):(this.$module.classList.remove("is-smaller"),this.$mainNav.classList.remove("main-nav-is-open","js-hidden"),this.$showNavLinkMobile.setAttribute("aria-hidden","true"),this.$showNavLinkMobile.setAttribute("tabindex","-1"),this.$showNavLinkMobile.classList.add("js-hidden"))},M.prototype.showMainNavMobile=function(){this.$mainNav.classList.remove("js-hidden"),this.$mainNav.classList.add("main-nav-is-open"),this.$mainNav.setAttribute("aria-expanded","true"),this.$showNavLinkMobile.setAttribute("aria-expanded","true"),this.$showNavLinkMobile.classList.add("hmrc-account-home--account--is-open")},M.prototype.hideMainNavMobile=function(t){this.$mainNav.classList.remove("main-nav-is-open"),this.$mainNav.setAttribute("aria-expanded","false"),t.classList.contains("hmrc-account-menu__link--menu")&&(this.$mainNav.classList.add("js-hidden"),this.$showNavLinkMobile.setAttribute("aria-expanded","false"),this.$showNavLinkMobile.classList.remove("hmrc-account-home--account--is-open"))},_.prototype.init=function(){var t=this;if(this.window.history){var e=this.document.referrer;""===e||-1===e.indexOf(this.window.location.host)?this.$module.classList.add("hmrc-hidden-backlink"):(this.window.history.replaceState&&"function"==typeof this.window.history.replaceState&&this.window.history.replaceState(null,null,this.window.location.href),this.$module.addEventListener("click",(function(e){e.preventDefault(),t.window.history.back&&"function"==typeof t.window.history.back&&t.window.history.back()})))}};var q=console.warn,R={generateDomElementFromString:function(t){var e=document.createElement("div");return e.innerHTML=t,e.firstChild},generateDomElementFromStringAndAppendText:function(t,e){var i=R.generateDomElementFromString(t);return i.innerText=e,i},hasClass:function(t,e){return document.querySelector(t).classList.contains(e)},addClass:function(t,e){document.querySelectorAll(t).forEach((function(t){t.classList.add(e)}))},removeClass:function(t,e){document.querySelectorAll(t).forEach((function(t){t.classList.remove(e)}))},removeElement:function(t){var e=t.parentNode;e?e.removeChild(t):q("couldn't find parent for elem",t)},ajaxGet:function(t,e){var i=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");return i.open("GET",t),i.onreadystatechange=function(){i.readyState>3&&200===i.status&&e(i.responseText)},i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.send(),i}};var j={displayDialog:function(t){var e=R.generateDomElementFromString('<div id="hmrc-timeout-dialog" tabindex="-1" role="dialog" aria-modal="true" class="hmrc-timeout-dialog">'),i=R.generateDomElementFromString('<div id="hmrc-timeout-overlay" class="hmrc-timeout-overlay">'),n="string"==typeof t?R.generateDomElementFromString(t):t,o=[],s=[];e.appendChild(n),R.hasClass("html","noScroll")||(R.addClass("html","noScroll"),o.push((function(){R.removeClass("html","noScroll")}))),document.body.appendChild(e),document.body.appendChild(i),o.push((function(){R.removeElement(e),R.removeElement(i)}));var a,r=document.querySelectorAll(["#skiplink-container","body > header","#global-cookie-message","main[role=main]","body > footer","body > .govuk-skip-link",".cbanner-govuk-cookie-banner","body > .govuk-width-container"].join(", ")),c=function(){for(;o.length>0;){o.shift()()}};return r.forEach((function(t){var e=t.getAttribute("aria-hidden");t.setAttribute("aria-hidden","true"),o.push((function(){e?t.setAttribute("aria-hidden",e):t.removeAttribute("aria-hidden")}))})),function(){function t(t){var e=document.getElementById("hmrc-timeout-dialog");e&&(t.target===e||e.contains(t.target)||(t.stopPropagation(),e.focus()))}var i=document.activeElement;e.focus(),document.addEventListener("focus",t,!0),o.push((function(){document.removeEventListener("focus",t),i.focus()}))}(),function(){function t(t){27===t.keyCode&&(s.forEach((function(t){t()})),c())}document.addEventListener("keydown",t),o.push((function(){document.removeEventListener("keydown",t)}))}(),a=function(t){1===(t.touches||t.changedTouches||[]).length&&t.preventDefault()},document.addEventListener("touchmove",a,!0),o.push((function(){document.removeEventListener("touchmove",a,!0)})),{closeDialog:function(){c()},setAriaLabelledBy:function(t){t?e.setAttribute("aria-labelledby",t):e.removeAttribute("aria-labelledby")},addCloseHandler:function(t){s.push(t)}}}};function P(){}function F(){}function D(t,e){var i,n={},o={},s=[],a=e;var r=function(){o.synchroniseTabs&&a.onActivity((function(t){var e=t.timestamp;f(),u(e)}))},c=function(t){var e=[];if(["timeout","countdown","keepAliveUrl","signOutUrl"].forEach((function(i){t[i]||e.push("data-".concat(i.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()))})),e.length>0)throw new Error("Missing config item(s): [".concat(e.join(", "),"]"))},l=function t(e,i){var n=function(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?N(Object(i),!0).forEach((function(e){O(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):N(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}({},e);return Object.keys(i).forEach((function(o){"object"===I(n[o])&&(n[o]=t(e[o],i[o])),void 0!==n[o]&&""!==n[o]||(n[o]=i[o])})),n},u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m(),e=t+1e3*o.timeout,n=m()-t,a=o.timeout-o.countdown,r=window.setTimeout((function(){d(e)}),1e3*a-n);s.push((function(){window.clearTimeout(r),i&&window.clearTimeout(i)}))},d=function(t){var e=R.generateDomElementFromString("<div>");if(o.title){var n=R.generateDomElementFromStringAndAppendText('<h1 id="hmrc-timeout-heading" class="govuk-heading-m push--top">',o.title);e.appendChild(n)}var a=R.generateDomElementFromString('<span id="hmrc-timeout-countdown" class="hmrc-timeout-dialog__countdown">'),r=R.generateDomElementFromString('<p id="hmrc-timeout-message" class="govuk-visually-hidden screenreader-content" aria-live="assertive">'),c=R.generateDomElementFromStringAndAppendText('<p class="govuk-body hmrc-timeout-dialog__message" aria-hidden="true">',o.message);c.appendChild(document.createTextNode(" ")),c.appendChild(a),c.appendChild(document.createTextNode(".")),o.messageSuffix&&c.appendChild(document.createTextNode(" ".concat(o.messageSuffix)));var l,u,d=R.generateDomElementFromStringAndAppendText('<button id="hmrc-timeout-keep-signin-btn" class="govuk-button">',o.keepAliveButtonText);if(e.appendChild(c),e.appendChild(r),e.appendChild(d),d.addEventListener("click",h),e.appendChild(document.createTextNode(" ")),!o.hideSignOutButton){var f=R.generateDomElementFromStringAndAppendText('<a id="hmrc-timeout-sign-out-link" class="govuk-link hmrc-timeout-dialog__link">',o.signOutButtonText);f.addEventListener("click",p),f.setAttribute("href",o.signOutUrl),e.appendChild((l=f,(u=document.createElement("div")).classList.add("hmrc-timeout-dialog__link-wrapper"),u.appendChild(l),u))}var v=j.displayDialog(e);s.push((function(){v.closeDialog()})),v.addCloseHandler(h),v.setAriaLabelledBy("hmrc-timeout-heading hmrc-timeout-message");var b=function(){return t-m()},w=function(t){var e,i;return t<60?i="".concat(t," ").concat(o.properties[1!==t?"seconds":"second"]):(e=Math.ceil(t/60),i="".concat(e," ").concat(o.properties[1===e?"minute":"minutes"])),i},y=function(t){return t>60?t:t<20?20:20*Math.ceil(t/20)},k=function(t,e){t.innerText!==e&&(t.innerText=e)},$=function(t){var e=w(t),i=function(t){var e=w(y(t)),i=[o.message," ",e,"."];return o.messageSuffix&&(i.push(" "),i.push(o.messageSuffix)),i.join("")}(t);k(a,e),k(r,i)};!function t(){var e,n,o=Math.max(Math.round(b()/1e3),0);$(o),0===o?g():i=window.setTimeout(t,(e=b(),(n=1e3*Math.floor(b()/1e3))<=6e4?e-n||1e3:e-(n-(n%6e4||6e4))))}()},h=function(){f(),u(),R.ajaxGet(o.keepAliveUrl,(function(){})),a.logActivity()},m=function(){return Date.now()},p=function(){F.redirectToUrl(o.signOutUrl)},g=function(){F.redirectToUrl(o.timeoutUrl)},f=function(){for(;s.length>0;){s.shift()()}};return{init:function(){var e=P;function i(e){return(t.attributes.getNamedItem(e)||{}).value}var s="cy"===e.string(i("data-language"))?{title:"Rydych ar fin cael eich allgofnodi",message:"Er eich diogelwch, byddwn yn eich allgofnodi cyn pen",keepAliveButtonText:"Parhau i fod wedi’ch mewngofnodi",signOutButtonText:"Allgofnodi",properties:{minutes:"funud",minute:"funud",seconds:"eiliad",second:"eiliad"}}:{title:"You’re about to be signed out",message:"For your security, we will sign you out in",keepAliveButtonText:"Stay signed in",signOutButtonText:"Sign out",properties:{minutes:"minutes",minute:"minute",seconds:"seconds",second:"second"}};(n={timeout:e.int(i("data-timeout")),countdown:e.int(i("data-countdown")),keepAliveUrl:e.string(i("data-keep-alive-url")),signOutUrl:e.string(i("data-sign-out-url")),timeoutUrl:e.string(i("data-timeout-url")),title:e.string(i("data-title")),message:e.string(i("data-message")),messageSuffix:e.string(i("data-message-suffix")),keepAliveButtonText:e.string(i("data-keep-alive-button-text")),signOutButtonText:e.string(i("data-sign-out-button-text")),synchroniseTabs:e.boolean(i("data-synchronise-tabs")||!1),hideSignOutButton:e.boolean(i("data-hide-sign-out-button")||!1)}).timeoutUrl=n.timeoutUrl||n.signOutUrl,c(n),o=l(n,s),u(),r()},cleanup:f}}P.int=function(t){var e=parseInt(t,10);return Number.isNaN(e)?void 0:e},P.string=function(t){return"string"==typeof t?t:void 0},P.boolean=function(t){return"true"===String(t).toLowerCase()},F.redirectToUrl=function(t){window.location.href=t},D.dialog=j,D.redirectHelper=F,D.utils=R;function U(t){this.$module=t,this.$closeLink=this.$module.querySelector(".hmrc-user-research-banner__close"),this.cookieName="mdtpurr",this.cookieExpiryDays=28}U.prototype.init=function(){null==function(t){for(var e="".concat(t,"="),i=document.cookie.split(";"),n=0,o=i.length;n<o;n+=1){for(var s=i[n];" "===s.charAt(0);)s=s.substring(1,s.length);if(0===s.indexOf(e))return decodeURIComponent(s.substring(e.length))}return null}(this.cookieName)&&(this.$module.classList.add("hmrc-user-research-banner--show"),this.$closeLink.addEventListener("click",this.eventHandlers.noThanksClick.bind(this)))},U.prototype.eventHandlers={noThanksClick:function(t){t.preventDefault(),function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n="".concat(t,"=").concat(e,"; path=/");if(i.days){var o=new Date;o.setTime(o.getTime()+24*i.days*60*60*1e3),n="".concat(n,"; expires=").concat(o.toGMTString())}"https:"===window.location.protocol&&(n+="; Secure"),document.cookie=n}(this.cookieName,"suppress_for_all_services",{days:this.cookieExpiryDays}),this.$module.classList.remove("hmrc-user-research-banner--show")}};var K=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.activityChannel=e&&new e("session-activity")}var e,i,n;return e=t,(i=[{key:"logActivity",value:function(){if(this.activityChannel){var t={timestamp:Date.now()};this.activityChannel.postMessage(t)}}},{key:"onActivity",value:function(t){this.activityChannel&&(this.activityChannel.onmessage=function(e){t(e.data)})}}])&&H(e.prototype,i),n&&H(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function V(t,e){this.$module=t,this.window=e}V.prototype.init=function(){var t=this;this.$module.addEventListener("click",(function(e){e.preventDefault(),t.window.print()}))};var W={initAll:function(){var t='[data-module="hmrc-account-menu"]';document.querySelector(t)&&new M(t).init(),document.querySelectorAll('a[data-module="hmrc-print-link"]').forEach((function(t){new V(t,window).init()}));var e=new K(window.BroadcastChannel);e.logActivity();var i=document.querySelector('meta[name="hmrc-timeout-dialog"]');i&&new D(i,e).init();var n=document.querySelector('[data-module="hmrc-user-research-banner"]');n&&new U(n).init(),document.querySelectorAll('[data-module="hmrc-back-link"]').forEach((function(t){new _(t,window,document).init()}))},AccountMenu:M,TimeoutDialog:D,UserResearchBanner:U,BackLinkHelper:_};!function(t){var e;if(t=void 0!==t?t:{},!s())return void console.log(new l);const i=[[p,t.accordion],[f,t.button],[b,t.characterCount],[w],[y,t.errorSummary],[k,t.exitThisPage],[$],[C,t.notificationBanner],[S],[A],[x]],n=null!=(e=t.scope)?e:document;i.forEach((([t,e])=>{n.querySelectorAll(`[data-module="${t.moduleName}"]`).forEach((i=>{try{"defaults"in t?new t(i,e):new t(i)}catch(t){console.log(t)}}))}))}(),W.initAll()}();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=maps/hmrc-frontend-6.3.0.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/accessible-autocomplete/dist/accessible-autocomplete.min.css","accessible-autocomplete.scss","../node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss","../node_modules/govuk-frontend/dist/govuk/settings/_typography-font.scss","../node_modules/govuk-frontend/dist/govuk/tools/_px-to-rem.scss","../node_modules/govuk-frontend/dist/govuk/vendor/_sass-mq.scss","../node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss"],"names":[],"mappings":"AAAA,uBAAuB,iBAAiB,CAAC,yCAAyC,uBAAuB,CAAC,wBAAwB,CAAC,eAAe,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,6BAA6B,CAAC,eAAe,CAAC,UAAU,CAAC,qBAAqB,8BAA4B,CAAC,iBAAiB,CAAC,oBAAoB,aAAa,CAAC,iBAAiB,CAAC,8BAA8B,WAAW,CAAC,8BAA8B,sBAAsB,CAAC,gBAAgB,CAAC,kCAA0B,CAA1B,0BAA0B,CAAC,sCAAsC,wBAAwB,CAAC,cAAc,CAAC,mCAAmC,UAAU,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,oBAAoB,qBAAqB,CAAC,wBAAwB,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,sBAAsB,CAAC,6BAA6B,aAAa,CAAC,4BAA4B,YAAY,CAAC,6BAA6B,gDAAwC,CAAxC,wCAAwC,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,4BAA4B,iBAAiB,CAAC,sBAAkD,mBAAkB,CAAlB,+BAAkB,CAAlB,oBAAkB,CAAlB,oBAAkB,CAAC,cAAc,CAAC,aAAa,CAAC,iBAAiB,CAAC,wBAAwB,mBAAmB,CAAC,oCAAoC,kBAAkB,CAAC,mCAAmC,qBAAqB,CAAC,2BAA2B,wBAAwB,CAAC,2DAA2D,wBAAwB,CAAC,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,yDAAyD,oBAAoB,sBAAsB,CAAC,sBAAsB,sBAAsB,CAAC,eAAe,CAAC,2DAA2D,wBAAwB,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,8BAA8B,CAAE,CAAA,kCAAkC,wBAAwB,CAAC,aAAa,CAAC,kBAAkB,CAAC,+DAA+D,cAAc,CAAC,gBAAgB,CAAC,0CAA0C,WAAW,CAAC,yBAAyB,+DAA+D,cAAc,CAAC,mBAAmB,CAAE,CCO5wE,gECQE,0CCFoD,CDGpD,kCAAmC,CACnC,iCAAkC,CAkClC,eCR6B,CDmLzB,cE5MyC,CF6MzC,gBAlIqC,CGuInC,aJ7NR,gECmBI,sBCHgC,CFZnC,CIyNO,6BJ7NR,gECgOQ,mBErNuC,CFsNvC,mBA3ImC,CDlF1C,CIyNO,aJ7NR,gEC2NQ,cIvGa,CJwGb,gBIvGe,CLjHtB","file":"../accessible-autocomplete-6.3.0.css","sourcesContent":[".autocomplete__wrapper{position:relative}.autocomplete__hint,.autocomplete__input{-webkit-appearance:none;border:2px solid #0b0c0c;border-radius:0;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;margin-bottom:0;width:100%}.autocomplete__input{background-color:transparent;position:relative}.autocomplete__hint{color:#b1b4b6;position:absolute}.autocomplete__input--default{padding:5px}.autocomplete__input--focused{outline:3px solid #fd0;outline-offset:0;box-shadow:inset 0 0 0 2px}.autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:100%;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:rgba(0,0,0,.256863) 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}@media (-ms-high-contrast:active),(forced-colors:active){.autocomplete__menu{border-color:FieldText}.autocomplete__option{background-color:Field;color:FieldText}.autocomplete__option--focused,.autocomplete__option:hover{forced-color-adjust:none;background-color:SelectedItem;border-color:SelectedItem;color:SelectedItemText;outline-color:SelectedItemText}}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:16px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width:641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:19px;line-height:1.31579}}","$govuk-include-default-font-face: false;\n\n@import \"../../govuk-frontend/dist/govuk/settings/all\";\n@import \"../../govuk-frontend/dist/govuk/tools/all\";\n@import \"../../govuk-frontend/dist/govuk/helpers/all\";\n@import \"../../accessible-autocomplete/dist/accessible-autocomplete.min\";\n\n.autocomplete__wrapper,\n.autocomplete__input,\n.autocomplete__hint {\n @include govuk-font($size: 19);\n}\n","////\n/// @group helpers/typography\n////\n\n@import \"../tools/px-to-rem\";\n\n/// 'Common typography' helper\n///\n/// Sets the font family and associated properties, such as font smoothing. Also\n/// overrides the font for print.\n///\n/// @param {List} $font-family [$govuk-font-family] Font family to use\n/// @access public\n\n@mixin govuk-typography-common($font-family: $govuk-font-family) {\n font-family: $font-family;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n // If the user is using the default GDS Transport font we need to include\n // the font-face declarations.\n @if $govuk-include-default-font-face {\n @include _govuk-font-face-gds-transport;\n }\n\n @include govuk-media-query($media-type: print) {\n font-family: $govuk-font-family-print;\n }\n}\n\n/// Text colour helper\n///\n/// Sets the text colour, including a suitable override for print.\n///\n/// @access public\n\n@mixin govuk-text-colour {\n color: $govuk-text-colour;\n\n @include govuk-media-query($media-type: print) {\n color: $govuk-print-text-colour;\n }\n}\n\n/// Regular font weight helper\n///\n/// @param {Boolean} $important [false] - Whether to mark declarations as\n/// `!important`. Generally Used to create override classes.\n/// @access public\n\n@mixin govuk-typography-weight-regular($important: false) {\n font-weight: $govuk-font-weight-regular if($important, !important, null);\n}\n\n/// Bold font weight helper\n///\n/// @param {Boolean} $important [false] - Whether to mark declarations as\n/// `!important`. Generally Used to create override classes.\n/// @access public\n\n@mixin govuk-typography-weight-bold($important: false) {\n font-weight: $govuk-font-weight-bold if($important, !important, null);\n}\n\n/// Tabular number helper\n///\n/// Switches numerical glyphs (0–9) to use alternative forms with a\n/// monospaced bounding box. This ensures that columns of numbers, such\n/// as those in tables, remain horizontally aligned with one another.\n/// This also has the useful side effect of making numbers more legible\n/// in some situations, such as reference codes, as the numbers are more\n/// distinct and visually separated from one another.\n///\n/// @param {Boolean} $important [false] - Whether to mark declarations as\n/// `!important`. Generally Used to create override classes.\n/// @access public\n\n@mixin govuk-font-tabular-numbers($important: false) {\n font-variant-numeric: tabular-nums if($important, !important, null);\n}\n\n/// Convert line-heights specified in pixels into a relative value, unless\n/// they are already unit-less (and thus already treated as relative values)\n/// or the units do not match the units used for the font size.\n///\n/// @param {Number} $line-height Line height\n/// @param {Number} $font-size Font size\n/// @return {Number} The line height as either a relative value or unmodified\n///\n/// @access private\n\n@function _govuk-line-height($line-height, $font-size) {\n @if not unitless($line-height) and unit($line-height) == unit($font-size) {\n $line-height: $line-height / $font-size;\n }\n\n @return $line-height;\n}\n\n/// Font size and line height helper\n///\n/// @param {Number} $size - Point from the type scale (the size as it would\n/// appear on tablet and above)\n/// @param {Number} $override-line-height [false] - Non responsive custom line\n/// height. Omit to use the line height from the font map.\n/// @param {Boolean} $important [false] - Whether to mark declarations as\n/// `!important`.\n///\n/// @throw if `$size` is not a valid point from the type scale\n///\n/// @access public\n///\n/// @alias govuk-font-size\n/// @deprecated Use `govuk-font-size` instead\n\n@mixin govuk-typography-responsive($size, $override-line-height: false, $important: false) {\n @include _warning(\n \"govuk-typography-responsive\",\n \"govuk-typography-responsive is deprecated. Use govuk-font-size instead.\"\n );\n @include govuk-font-size($size, $override-line-height, $important);\n}\n\n/// Font size and line height helper\n///\n/// Takes a point from the responsive 'font map' as an argument (the size as it\n/// would appear on tablet and above), and uses it to create font-size and\n/// line-height declarations for different breakpoints, and print.\n///\n/// Example font map:\n///\n/// ```scss\n/// 19: (\n/// null: (\n/// font-size: 16px,\n/// line-height: 20px\n/// ),\n/// tablet: (\n/// font-size: 19px,\n/// line-height: 25px\n/// ),\n/// print: (\n/// font-size: 14pt,\n/// line-height: 1.15\n/// )\n/// );\n/// ```\n///\n/// @param {Number | String} $size - Point from the type scale (the size as\n/// it would appear on tablet and above)\n/// @param {Number} $line-height [false] - Non responsive custom line\n/// height. Omit to use the line height from the font map.\n/// @param {Boolean} $important [false] - Whether to mark declarations as\n/// `!important`.\n///\n/// @throw if `$size` is not a valid point from the type scale\n///\n/// @access public\n\n@mixin govuk-font-size($size, $line-height: false, $important: false) {\n // Flag font sizes that start with underscores so we can suppress warnings on\n // deprecated sizes used internally, for example `govuk-font($size: \"_14\")`\n $size-internal-use-only: str-slice(#{$size}, 1, 1) == \"_\";\n\n // Remove underscore from font sizes flagged for internal use\n @if $size-internal-use-only {\n $size: str-slice(#{$size}, 2);\n }\n\n // Check for a font map exactly matching the given size\n $font-map: map-get($govuk-typography-scale, $size);\n\n // No match? Try with string type (e.g. $size: \"16\" not 16)\n @if not $font-map {\n @each $font-size in map-keys($govuk-typography-scale) {\n @if not $font-map and #{$font-size} == #{$size} {\n $font-map: map-get($govuk-typography-scale, $font-size);\n }\n }\n }\n\n // Still no match? Throw error\n @if not $font-map {\n @error \"Unknown font size `#{$size}` - expected a point from the type scale.\";\n }\n\n // Check for a deprecation within the type scale\n $deprecation: map-get($font-map, \"deprecation\");\n\n @if $deprecation {\n // Warn on deprecated font sizes unless flagged for internal use\n @if not $size-internal-use-only {\n @include _warning(map-get($deprecation, \"key\"), map-get($deprecation, \"message\"));\n }\n\n // remove the deprecation map keys so they do not break the breakpoint loop\n $font-map: map-remove($font-map, \"deprecation\");\n }\n\n @each $breakpoint, $breakpoint-map in $font-map {\n $font-size: map-get($breakpoint-map, \"font-size\");\n $font-size-rem: govuk-px-to-rem($font-size);\n\n // $calculated-line-height is a separate variable from $line-height,\n // as otherwise the value would get redefined with each loop and\n // eventually break _govuk-line-height.\n //\n // We continue to call the param $line-height to stay consistent with the\n // naming with govuk-font.\n $calculated-line-height: _govuk-line-height(\n $line-height: if($line-height, $line-height, map-get($breakpoint-map, \"line-height\")),\n $font-size: $font-size\n );\n\n // Mark rules as !important if $important is true - this will result in\n // these variables becoming strings, so this needs to happen *after* they\n // are used in calculations\n $font-size: $font-size if($important, !important, null);\n $font-size-rem: $font-size-rem if($important, !important, null);\n $calculated-line-height: $calculated-line-height if($important, !important, null);\n\n @if not $breakpoint {\n font-size: $font-size-rem;\n line-height: $calculated-line-height;\n } @else if $breakpoint == \"print\" {\n @include govuk-media-query($media-type: print) {\n font-size: $font-size;\n line-height: $calculated-line-height;\n }\n } @else {\n @include govuk-media-query($from: $breakpoint) {\n font-size: $font-size-rem;\n line-height: $calculated-line-height;\n }\n }\n }\n}\n\n/// Font helper\n///\n/// @param {Number | Boolean | String} $size Point from the type scale (the\n/// size as it would appear on tablet and above). Use `false` to avoid setting\n/// a size.\n/// @param {String} $weight [regular] - Weight: `bold` or `regular`\n/// @param {Boolean} $tabular [false] - Whether to use tabular numbers or not\n/// @param {Number} $line-height [false] - Line-height, if overriding the\n/// default\n///\n/// @throw if `$size` is not a valid point from the type scale (or false)\n///\n/// @access public\n\n@mixin govuk-font($size, $weight: regular, $tabular: false, $line-height: false) {\n @include govuk-typography-common;\n\n @if $tabular {\n @include govuk-font-tabular-numbers;\n }\n\n @if $weight == regular {\n @include govuk-typography-weight-regular;\n } @else if $weight == bold {\n @include govuk-typography-weight-bold;\n }\n\n @if $size {\n @include govuk-font-size($size, $line-height);\n }\n}\n\n/*# sourceMappingURL=_typography.scss.map */\n","////\n/// @group settings/typography\n////\n\n// =========================================================\n// Font families\n// =========================================================\n\n/// Font families to use for all typography on screen media\n///\n/// @type List\n/// @access public\n\n$govuk-font-family: \"GDS Transport\", arial, sans-serif !default;\n\n/// Font families to use for print media\n///\n/// We recommend that you use system fonts when printing. This will avoid issues\n/// with some printer drivers and operating systems.\n///\n/// @type List\n/// @access public\n\n$govuk-font-family-print: sans-serif !default;\n\n/// Include the default @font-face declarations\n///\n/// Defaults to true if \"GDS Transport\" appears in the $govuk-font-family\n/// setting.\n///\n/// @type Boolean\n/// @access public\n\n$govuk-include-default-font-face: if(index($govuk-font-family, \"GDS Transport\"), true, false) !default;\n\n// =========================================================\n// Font weights\n// =========================================================\n\n/// Font weight for regular typography\n///\n/// @type Number\n/// @access public\n$govuk-font-weight-regular: 400 !default;\n\n/// Font weight for bold typography\n///\n/// @type Number\n/// @access public\n$govuk-font-weight-bold: 700 !default;\n\n/*# sourceMappingURL=_typography-font.scss.map */\n","////\n/// @group tools/unit-conversion\n////\n\n/// Convert pixels to rem\n///\n/// The $govuk-root-font-size (defined in settings/_typography-responsive.scss)\n/// must be configured to match the font-size of your root (html) element\n///\n/// @param {Number} $value - Length in pixels\n/// @return {Number} Length in rems\n/// @access public\n\n@function govuk-px-to-rem($value) {\n @if unitless($value) {\n $value: $value * 1px;\n }\n\n @return $value / $govuk-root-font-size * 1rem;\n}\n\n/*# sourceMappingURL=_px-to-rem.scss.map */\n","// mq() v4.0.2\n// sass-mq/sass-mq\n\n@charset \"UTF-8\"; // Fixes an issue where Ruby locale is not set properly\n // See https://github.com/sass-mq/sass-mq/pull/10\n\n/// Base font size on the `<body>` element\n/// @type Number (unit)\n$mq-base-font-size: 16px !default;\n\n/// Responsive mode\n///\n/// Set to `false` to enable support for browsers that do not support @media queries,\n/// (IE <= 8, Firefox <= 3, Opera <= 9)\n///\n/// You could create a stylesheet served exclusively to older browsers,\n/// where @media queries are rasterized\n///\n/// @example scss\n/// // old-ie.scss\n/// $mq-responsive: false;\n/// @import 'main'; // @media queries in this file will be rasterized up to $mq-static-breakpoint\n/// // larger breakpoints will be ignored\n///\n/// @type Boolean\n/// @link https://github.com/sass-mq/sass-mq#responsive-mode-off Disabled responsive mode documentation\n$mq-responsive: true !default;\n\n/// Breakpoint list\n///\n/// Name your breakpoints in a way that creates a ubiquitous language\n/// across team members. It will improve communication between\n/// stakeholders, designers, developers, and testers.\n///\n/// @type Map\n/// @link https://github.com/sass-mq/sass-mq#seeing-the-currently-active-breakpoint Full documentation and examples\n$mq-breakpoints: (\n mobile: 320px,\n tablet: 740px,\n desktop: 980px,\n wide: 1300px\n) !default;\n\n/// Static breakpoint (for fixed-width layouts)\n///\n/// Define the breakpoint from $mq-breakpoints that should\n/// be used as the target width for the fixed-width layout\n/// (i.e. when $mq-responsive is set to 'false') in a old-ie.scss\n///\n/// @example scss\n/// // tablet-only.scss\n/// //\n/// // Ignore all styles above tablet breakpoint,\n/// // and fix the styles (e.g. layout) at tablet width\n/// $mq-responsive: false;\n/// $mq-static-breakpoint: tablet;\n/// @import 'main'; // @media queries in this file will be rasterized up to tablet\n/// // larger breakpoints will be ignored\n///\n/// @type String\n/// @link https://github.com/sass-mq/sass-mq#adding-custom-breakpoints Full documentation and examples\n$mq-static-breakpoint: desktop !default;\n\n/// Show breakpoints in the top right corner\n///\n/// If you want to display the currently active breakpoint in the top\n/// right corner of your site during development, add the breakpoints\n/// to this list, ordered by width, e.g. (mobile, tablet, desktop).\n///\n/// @type map\n$mq-show-breakpoints: () !default;\n\n/// Customize the media type (e.g. `@media screen` or `@media print`)\n/// By default sass-mq uses an \"all\" media type (`@media all and …`)\n///\n/// @type String\n/// @link https://github.com/sass-mq/sass-mq#changing-media-type Full documentation and examples\n$mq-media-type: all !default;\n\n/// Convert pixels to ems\n///\n/// @param {Number} $px - value to convert\n/// @param {Number} $base-font-size ($mq-base-font-size) - `<body>` font size\n///\n/// @example scss\n/// $font-size-in-ems: mq-px2em(16px);\n/// p { font-size: mq-px2em(16px); }\n///\n/// @requires $mq-base-font-size\n/// @returns {Number}\n@function mq-px2em($px, $base-font-size: $mq-base-font-size) {\n @if unitless($px) {\n @warn \"Assuming #{$px} to be in pixels, attempting to convert it into pixels.\";\n @return mq-px2em($px * 1px, $base-font-size);\n } @else if unit($px) == em {\n @return $px;\n }\n @return ($px / $base-font-size) * 1em;\n}\n\n/// Get a breakpoint's width\n///\n/// @param {String} $name - Name of the breakpoint. One of $mq-breakpoints\n///\n/// @example scss\n/// $tablet-width: mq-get-breakpoint-width(tablet);\n/// @media (min-width: mq-get-breakpoint-width(desktop)) {}\n///\n/// @requires {Variable} $mq-breakpoints\n///\n/// @returns {Number} Value in pixels\n@function mq-get-breakpoint-width($name, $breakpoints: $mq-breakpoints) {\n @if map-has-key($breakpoints, $name) {\n @return map-get($breakpoints, $name);\n } @else {\n @warn \"Breakpoint #{$name} wasn't found in $breakpoints.\";\n }\n}\n\n/// Media Query mixin\n///\n/// @param {String | Boolean} $from (false) - One of $mq-breakpoints\n/// @param {String | Boolean} $until (false) - One of $mq-breakpoints\n/// @param {String | Boolean} $and (false) - Additional media query parameters\n/// @param {String} $media-type ($mq-media-type) - Media type: screen, print…\n///\n/// @ignore Undocumented API, for advanced use only:\n/// @ignore @param {Map} $breakpoints ($mq-breakpoints)\n/// @ignore @param {String} $static-breakpoint ($mq-static-breakpoint)\n///\n/// @content styling rules, wrapped into a @media query when $responsive is true\n///\n/// @requires {Variable} $mq-media-type\n/// @requires {Variable} $mq-breakpoints\n/// @requires {Variable} $mq-static-breakpoint\n/// @requires {function} mq-px2em\n/// @requires {function} mq-get-breakpoint-width\n///\n/// @link https://github.com/sass-mq/sass-mq#responsive-mode-on-default Full documentation and examples\n///\n/// @example scss\n/// .element {\n/// @include mq($from: mobile) {\n/// color: red;\n/// }\n/// @include mq($until: tablet) {\n/// color: blue;\n/// }\n/// @include mq(mobile, tablet) {\n/// color: green;\n/// }\n/// @include mq($from: tablet, $and: '(orientation: landscape)') {\n/// color: teal;\n/// }\n/// @include mq(950px) {\n/// color: hotpink;\n/// }\n/// @include mq(tablet, $media-type: screen) {\n/// color: hotpink;\n/// }\n/// // Advanced use:\n/// $my-breakpoints: (L: 900px, XL: 1200px);\n/// @include mq(L, $breakpoints: $my-breakpoints, $static-breakpoint: L) {\n/// color: hotpink;\n/// }\n/// }\n@mixin mq(\n $from: false,\n $until: false,\n $and: false,\n $media-type: $mq-media-type,\n $breakpoints: $mq-breakpoints,\n $responsive: $mq-responsive,\n $static-breakpoint: $mq-static-breakpoint\n) {\n $min-width: 0;\n $max-width: 0;\n $media-query: '';\n\n // From: this breakpoint (inclusive)\n @if $from {\n @if type-of($from) == number {\n $min-width: mq-px2em($from);\n } @else {\n $min-width: mq-px2em(mq-get-breakpoint-width($from, $breakpoints));\n }\n }\n\n // Until: that breakpoint (exclusive)\n @if $until {\n @if type-of($until) == number {\n $max-width: mq-px2em($until);\n } @else {\n $max-width: mq-px2em(mq-get-breakpoint-width($until, $breakpoints)) - .01em;\n }\n }\n\n // Responsive support is disabled, rasterize the output outside @media blocks\n // The browser will rely on the cascade itself.\n @if $responsive == false {\n $static-breakpoint-width: mq-get-breakpoint-width($static-breakpoint, $breakpoints);\n $target-width: mq-px2em($static-breakpoint-width);\n\n // Output only rules that start at or span our target width\n @if (\n $and == false\n and $min-width <= $target-width\n and (\n $until == false or $max-width >= $target-width\n )\n and $media-type != 'print'\n ) {\n @content;\n }\n }\n\n // Responsive support is enabled, output rules inside @media queries\n @else {\n @if $min-width != 0 { $media-query: '#{$media-query} and (min-width: #{$min-width})'; }\n @if $max-width != 0 { $media-query: '#{$media-query} and (max-width: #{$max-width})'; }\n @if $and { $media-query: '#{$media-query} and #{$and}'; }\n\n // Remove unnecessary media query prefix 'all and '\n @if ($media-type == 'all' and $media-query != '') {\n $media-type: '';\n $media-query: str-slice(unquote($media-query), 6);\n }\n\n @media #{$media-type + $media-query} {\n @content;\n }\n }\n}\n\n/// Quick sort\n///\n/// @author Sam Richards\n/// @access private\n/// @param {List} $list - List to sort\n/// @returns {List} Sorted List\n@function _mq-quick-sort($list) {\n $less: ();\n $equal: ();\n $large: ();\n\n @if length($list) > 1 {\n $seed: nth($list, ceil(length($list) / 2));\n\n @each $item in $list {\n @if ($item == $seed) {\n $equal: append($equal, $item);\n } @else if ($item < $seed) {\n $less: append($less, $item);\n } @else if ($item > $seed) {\n $large: append($large, $item);\n }\n }\n\n @return join(join(_mq-quick-sort($less), $equal), _mq-quick-sort($large));\n }\n\n @return $list;\n}\n\n/// Sort a map by values (works with numbers only)\n///\n/// @access private\n/// @param {Map} $map - Map to sort\n/// @returns {Map} Map sorted by value\n@function _mq-map-sort-by-value($map) {\n $map-sorted: ();\n $map-keys: map-keys($map);\n $map-values: map-values($map);\n $map-values-sorted: _mq-quick-sort($map-values);\n\n // Reorder key/value pairs based on key values\n @each $value in $map-values-sorted {\n $index: index($map-values, $value);\n $key: nth($map-keys, $index);\n $map-sorted: map-merge($map-sorted, ($key: $value));\n\n // Unset the value in $map-values to prevent the loop\n // from finding the same index twice\n $map-values: set-nth($map-values, $index, 0);\n }\n\n @return $map-sorted;\n}\n\n/// Add a breakpoint\n///\n/// @param {String} $name - Name of the breakpoint\n/// @param {Number} $width - Width of the breakpoint\n///\n/// @requires {Variable} $mq-breakpoints\n///\n/// @example scss\n/// @include mq-add-breakpoint(tvscreen, 1920px);\n/// @include mq(tvscreen) {}\n@mixin mq-add-breakpoint($name, $width) {\n $new-breakpoint: ($name: $width);\n $mq-breakpoints: map-merge($mq-breakpoints, $new-breakpoint) !global;\n $mq-breakpoints: _mq-map-sort-by-value($mq-breakpoints) !global;\n}\n\n/// Show the active breakpoint in the top right corner of the viewport\n/// @link https://github.com/sass-mq/sass-mq#seeing-the-currently-active-breakpoint\n///\n/// @param {List} $show-breakpoints ($mq-show-breakpoints) - List of breakpoints to show in the top right corner\n/// @param {Map} $breakpoints ($mq-breakpoints) - Breakpoint names and sizes\n///\n/// @requires {Variable} $mq-breakpoints\n/// @requires {Variable} $mq-show-breakpoints\n///\n/// @example scss\n/// // Show breakpoints using global settings\n/// @include mq-show-breakpoints;\n///\n/// // Show breakpoints using custom settings\n/// @include mq-show-breakpoints((L, XL), (S: 300px, L: 800px, XL: 1200px));\n@mixin mq-show-breakpoints($show-breakpoints: $mq-show-breakpoints, $breakpoints: $mq-breakpoints) {\n body::before {\n background-color: #FCF8E3;\n border-bottom: 1px solid #FBEED5;\n border-left: 1px solid #FBEED5;\n color: #C09853;\n font: small-caption;\n padding: 3px 6px;\n pointer-events: none;\n position: fixed;\n right: 0;\n top: 0;\n z-index: 100;\n\n // Loop through the breakpoints that should be shown\n @each $show-breakpoint in $show-breakpoints {\n $width: mq-get-breakpoint-width($show-breakpoint, $breakpoints);\n @include mq($show-breakpoint, $breakpoints: $breakpoints) {\n content: \"#{$show-breakpoint} ≥ #{$width} (#{mq-px2em($width)})\";\n }\n }\n }\n}\n\n@if length($mq-show-breakpoints) > 0 {\n @include mq-show-breakpoints;\n}\n\n/*# sourceMappingURL=_sass-mq.scss.map */\n","////\n/// @group settings/typography\n////\n\n/// Root font size\n///\n/// This is used to calculate rem sizes for the typography, and should match the\n/// _effective_ font-size of your root (or html) element.\n///\n/// Ideally you should not be setting the font-size on the html or root element\n/// in order to allow it to scale with user-preference, in which case this\n/// should be set to 16px.\n///\n/// @type Number\n/// @access public\n\n$govuk-root-font-size: 16px !default;\n\n/// Feature flag for new typography scale\n///\n/// When set to true, $govuk-typography-scale will use the new font map instead\n/// of the current/old one as well as apply changes in components to account\n/// for the updated scale.\n///\n/// Should be removed in 6.0.\n///\n/// @type Boolean\n/// @access public\n\n$govuk-new-typography-scale: false !default;\n\n/// The font map for the old typography scale\n///\n/// @type Map\n///\n/// @prop {Number} $point.$breakpoint.font-size - Font size for `$point` at `$breakpoint`\n/// @prop {Number} $point.$breakpoint.line-height - Line height for `$point` at `$breakpoint`\n/// @prop {Number} $point.print.font-size - Font size for `$point` when printing\n/// @prop {Number} $point.print.line-height - Line height for `$point` when printing\n///\n/// @access private\n\n$_govuk-typography-scale-legacy: (\n 80: (\n null: (\n font-size: 53px,\n line-height: 55px\n ),\n tablet: (\n font-size: 80px,\n line-height: 80px\n ),\n print: (\n font-size: 53pt,\n line-height: 1.1\n )\n ),\n 48: (\n null: (\n font-size: 32px,\n line-height: 35px\n ),\n tablet: (\n font-size: 48px,\n line-height: 50px\n ),\n print: (\n font-size: 32pt,\n line-height: 1.15\n )\n ),\n 36: (\n null: (\n font-size: 24px,\n line-height: 25px\n ),\n tablet: (\n font-size: 36px,\n line-height: 40px\n ),\n print: (\n font-size: 24pt,\n line-height: 1.05\n )\n ),\n 27: (\n null: (\n font-size: 18px,\n line-height: 20px\n ),\n tablet: (\n font-size: 27px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 24: (\n null: (\n font-size: 18px,\n line-height: 20px\n ),\n tablet: (\n font-size: 24px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 19: (\n null: (\n font-size: 16px,\n line-height: 20px\n ),\n tablet: (\n font-size: 19px,\n line-height: 25px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.15\n )\n ),\n 16: (\n null: (\n font-size: 14px,\n line-height: 16px\n ),\n tablet: (\n font-size: 16px,\n line-height: 20px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.2\n )\n ),\n 14: (\n null: (\n font-size: 12px,\n line-height: 15px\n ),\n tablet: (\n font-size: 14px,\n line-height: 20px\n ),\n print: (\n font-size: 12pt,\n line-height: 1.2\n ),\n deprecation: (\n key: \"govuk-typography-scale-14\",\n message: \"14 on the type scale is deprecated and will be removed as \" +\n \"a possible option in the next major version.\"\n )\n )\n);\n\n/// The font map for the new typography scale\n///\n/// @type Map\n///\n/// @prop {Number} $point.$breakpoint.font-size - Font size for `$point` at `$breakpoint`\n/// @prop {Number} $point.$breakpoint.line-height - Line height for `$point` at `$breakpoint`\n/// @prop {Number} $point.print.font-size - Font size for `$point` when printing\n/// @prop {Number} $point.print.line-height - Line height for `$point` when printing\n///\n/// @access private\n\n$_govuk-typography-scale-modern: (\n 80: (\n null: (\n font-size: 53px,\n line-height: 55px\n ),\n tablet: (\n font-size: 80px,\n line-height: 80px\n ),\n print: (\n font-size: 53pt,\n line-height: 1.1\n )\n ),\n 48: (\n null: (\n font-size: 32px,\n line-height: 35px\n ),\n tablet: (\n font-size: 48px,\n line-height: 50px\n ),\n print: (\n font-size: 32pt,\n line-height: 1.15\n )\n ),\n 36: (\n null: (\n font-size: 27px,\n line-height: 30px\n ),\n tablet: (\n font-size: 36px,\n line-height: 40px\n ),\n print: (\n font-size: 24pt,\n line-height: 1.05\n )\n ),\n 27: (\n // Made same as 24 on mobile (consider deprecating this size)\n null:\n (\n font-size: 21px,\n line-height: 25px\n ),\n tablet: (\n font-size: 27px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 24: (\n // Bump up mobile size from 18/20 to 21/25\n null:\n (\n font-size: 21px,\n line-height: 25px\n ),\n tablet: (\n font-size: 24px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 19: (\n // Stay at 19/25 at all sizes\n null:\n (\n font-size: 19px,\n line-height: 25px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.15\n )\n ),\n 16: (\n // Stay at 16/20 at all sizes\n null:\n (\n font-size: 16px,\n line-height: 20px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.2\n )\n ),\n 14: (\n // Stay at 14/20 at all sizes (consider deprecating this size)\n null:\n (\n font-size: 14px,\n line-height: 20px\n ),\n print: (\n font-size: 12pt,\n line-height: 1.2\n ),\n deprecation: (\n key: \"govuk-typography-scale-14\",\n message: \"14 on the type scale is deprecated and will be removed as \" +\n \"a possible option in the next major version.\"\n )\n )\n);\n\n/// Responsive typography font map\n///\n/// This is used to generate responsive typography that adapts according to the\n/// breakpoints.\n///\n/// Font size and font weight can be defined for each breakpoint. You can define\n/// different behaviour on tablet and desktop. The 'null' breakpoint is for\n/// mobile.\n///\n/// Line-heights will automatically be converted from pixel measurements into\n/// relative values. For example, with a font-size of 16px and a line-height of\n/// 24px, the line-height will be converted to 1.5 before output.\n///\n/// You can also specify a separate font size and line height for print media.\n///\n/// @type Map\n///\n/// @prop {Number} $point.$breakpoint.font-size - Font size for `$point` at `$breakpoint`\n/// @prop {Number} $point.$breakpoint.line-height - Line height for `$point` at `$breakpoint`\n/// @prop {Number} $point.print.font-size - Font size for `$point` when printing\n/// @prop {Number} $point.print.line-height - Line height for `$point` when printing\n///\n/// @access public\n\n$govuk-typography-scale: if(\n $govuk-new-typography-scale,\n $_govuk-typography-scale-modern,\n $_govuk-typography-scale-legacy\n) !default;\n\n/*# sourceMappingURL=_typography-responsive.scss.map */\n"]}
|