@nationalarchives/frontend 0.8.1 → 0.10.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.
Files changed (28) hide show
  1. package/govuk-prototype-kit.config.json +5 -0
  2. package/nationalarchives/all+analytics.js +1 -1
  3. package/nationalarchives/all+analytics.js.map +1 -1
  4. package/nationalarchives/all.css +1 -1
  5. package/nationalarchives/all.css.map +1 -1
  6. package/nationalarchives/all.js +1 -1
  7. package/nationalarchives/all.js.map +1 -1
  8. package/nationalarchives/analytics.js +1 -1
  9. package/nationalarchives/analytics.js.map +1 -1
  10. package/nationalarchives/components/cookie-banner/cookie-banner.js +1 -1
  11. package/nationalarchives/components/cookie-banner/cookie-banner.js.map +1 -1
  12. package/nationalarchives/components/cookie-banner/cookie-banner.mjs +9 -13
  13. package/nationalarchives/components/cookie-banner/fixtures.json +10 -19
  14. package/nationalarchives/components/cookie-banner/macro-options.json +0 -6
  15. package/nationalarchives/components/cookie-banner/template.njk +1 -1
  16. package/nationalarchives/components/footer/footer.js +1 -1
  17. package/nationalarchives/components/footer/footer.js.map +1 -1
  18. package/nationalarchives/components/text-input/text-input.js +1 -1
  19. package/nationalarchives/components/text-input/text-input.js.map +1 -1
  20. package/nationalarchives/components/text-input/text-input.mjs +2 -2
  21. package/nationalarchives/lib/cookies.mjs +10 -11
  22. package/nationalarchives/prototype-kit.css +1 -1
  23. package/nationalarchives/prototype-kit.css.map +1 -1
  24. package/nationalarchives/templates/error-page-not-found.njk +20 -0
  25. package/nationalarchives/templates/fixtures.json +11 -5
  26. package/nationalarchives/templates/layouts/_prototype-kit.njk +1 -1
  27. package/nationalarchives/utilities/_reset.scss +15 -0
  28. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"components/footer/footer.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"TNAFrontend\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","window.TNAFrontendCookies = window.TNAFrontendCookies || null;\nwindow.TNAFrontendCookieEvents = window.TNAFrontendCookieEvents || null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n\n constructor() {\n if (window.TNAFrontendCookieEvents) {\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n once(event, callback) {\n if (!Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event] = [];\n }\n this.oneTimeEvents[event] = [...this.oneTimeEvents[event], callback];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n for (let i = this.oneTimeEvents[event].length - 1; i >= 0; i--) {\n const eventToTrigger = this.oneTimeEvents[event][i];\n eventToTrigger.call(this, data);\n this.oneTimeEvents[event].splice(i, 1);\n }\n }\n }\n}\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n extraPolicies = [];\n /** @protected */\n domain = \"\";\n /** @protected */\n path = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n\n /**\n * Create a cookie handler.\n * @param {String} [options.extraPolicies=[]] - The extra cookie policies to manage in addition to essential, settings, usage and marketing.\n * @param {String} [options.domain=\"\"] - The domain to register the cookie with.\n * @param {String} [options.path=\"\"] - The domain to register the cookie with.\n * @param {String} [options.secure=true] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey=\"cookies_policy\"] - The name of the cookie.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n * @param {String} [options.defaultAge=31536000] - The default age of non-session cookies.\n */\n constructor(options = {}) {\n const {\n extraPolicies = [],\n domain = null,\n path = null,\n secure = true,\n policiesKey = \"cookies_policy\",\n newInstance = false,\n defaultAge = 31536000, // 365 days\n } = options;\n if (newInstance) {\n this.destroyInstance();\n } else if (window.TNAFrontendCookies) {\n return window.TNAFrontendCookies;\n }\n this.extraPolicies = extraPolicies;\n if (domain === null) {\n this.domain = document.documentElement.dataset.tnaCookiesDomain || \"\";\n } else {\n this.domain = domain;\n }\n if (path === null) {\n this.path = document.documentElement.dataset.tnaCookiesPath || \"/\";\n } else {\n this.path = path;\n }\n this.secure = secure;\n this.policiesKey = policiesKey;\n this.defaultAge = defaultAge;\n this.events = new CookieEventHandler();\n this.init();\n window.TNAFrontendCookies = this;\n }\n\n /** @protected */\n init() {\n this.savePolicies({\n ...Object.fromEntries(\n this.extraPolicies.map((k) => [k.toLowerCase(), false]),\n ),\n usage: false,\n settings: false,\n marketing: false,\n ...this.policies,\n essential: true,\n });\n }\n\n destroyInstance() {\n window.TNAFrontendCookies = null;\n }\n\n /** @protected */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((x) => x)\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n if (parts[0]) {\n deserialised[parts[0]] = parts[1];\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n } catch (e) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) == value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean}\n */\n get(key) {\n return this.exists(key) ? decodeURIComponent(this.all[key]) : null;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number} [options.maxAge=this.defaultAge] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.domain] - The domain to register the cookie with.\n * @param {String} [options.path=this.path] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.session=false] - Set a session cookie.\n */\n set(key, value, options = {}) {\n const {\n maxAge = this.defaultAge,\n sameSite = \"Lax\",\n domain = this.domain,\n path = this.path,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)};${\n domain ? ` domain=${domain}; ` : \"\"\n } samesite=${sameSite}; path=${path}${!session ? `; max-age=${maxAge}` : \"\"}${\n secure ? \"; secure\" : \"\"\n }`;\n document.cookie = cookie;\n this.events.trigger(\"setCookie\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = null) {\n const options = { maxAge: -1, path, domain: domain || undefined };\n this.set(key, \"\", options);\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = null) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.events.trigger(\"deleteAllCookies\", { path, domain });\n }\n\n /**\n * Accept a policy.\n * @param {String} policy - The name of the policy.\n */\n acceptPolicy(policy) {\n this.setPolicy(policy, true);\n this.events.trigger(\"acceptPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: true });\n }\n\n /**\n * Reject a policy.\n * @param {String} policy - The name of the policy.\n */\n rejectPolicy(policy) {\n this.setPolicy(policy, false);\n this.events.trigger(\"rejectPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: false });\n }\n\n /**\n * Set a policy.\n * @param {String} policy - The name of the policy.\n * @param {Boolean} accepted - Whether the policy is accepted or not.\n */\n setPolicy(policy, accepted) {\n if (policy === \"essential\") {\n return;\n }\n this.savePolicies({\n ...this.policies,\n [policy]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePolicy\", { [policy]: accepted });\n }\n\n /**\n * Accept all the cookie policies.\n */\n acceptAllPolicies() {\n const allPolicies = Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), true]),\n );\n this.savePolicies(allPolicies);\n this.events.trigger(\"acceptAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Reject all the cookie policies.\n */\n rejectAllPolicies() {\n const allPolicies = {\n ...Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePolicies(allPolicies);\n this.events.trigger(\"rejectAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Commit policy preferences to the browser.\n * @param {object} policies - The policies to commit.\n */\n savePolicies(policies) {\n this.set(this.policiesKey, JSON.stringify(policies), {\n maxAge: 60 * 60 * 24 * 365,\n });\n }\n\n /**\n * Get the acceptance status of a policy.\n * @param {String} policy - The name of the policy.\n * @returns {Boolean}\n */\n isPolicyAccepted(policy) {\n return Object.hasOwn(this.policies, policy)\n ? this.policies[policy] === true\n : null;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.events.once(event, callback);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import Cookies from \"../../lib/cookies.mjs\";\n\nexport class Footer {\n constructor($module) {\n this.$module = $module;\n this.$themeSelector =\n $module && $module.querySelector(\".tna-footer__theme-selector\");\n this.$tnaTemplate = document.querySelector(\".tna-template\");\n\n if (!this.$module || !this.$themeSelector || !this.$tnaTemplate) {\n return;\n }\n\n this.$themeSelectorButtons = this.$themeSelector.querySelectorAll(\n \"button.tna-footer__theme-selector-button[value]\",\n );\n\n Array.from(this.$themeSelectorButtons).forEach(($themeSelectorButton) => {\n $themeSelectorButton.addEventListener(\"click\", (e) => {\n const $button = e.target;\n this.setTheme($button.value);\n this.selectThemeSelectorButton($button);\n });\n });\n\n this.cookies = new Cookies();\n if (this.cookies.isPolicyAccepted(\"settings\")) {\n this.showThemeSelector();\n }\n this.cookies.on(\"changePolicy\", (data) => {\n if (Object.hasOwn(data, \"settings\")) {\n if (data.settings === true) {\n this.showThemeSelector();\n } else {\n this.cookies.delete(\"theme\");\n this.hideThemeSelector();\n }\n }\n });\n }\n\n showThemeSelector() {\n this.$themeSelector.removeAttribute(\"hidden\");\n if (this.cookies.exists(\"theme\")) {\n const $currentThemeButton = Array.from(this.$themeSelectorButtons).find(\n ($button) => $button.value === this.cookies.get(\"theme\"),\n );\n if ($currentThemeButton) {\n this.selectThemeSelectorButton($currentThemeButton);\n }\n }\n }\n\n hideThemeSelector() {\n this.$themeSelector.setAttribute(\"hidden\", \"\");\n }\n\n setTheme(theme) {\n if (theme === \"light\") {\n this.$tnaTemplate.classList.remove(\n \"tna-template--system-theme\",\n \"tna-template--dark-theme\",\n );\n } else if (theme === \"dark\") {\n this.$tnaTemplate.classList.remove(\"tna-template--system-theme\");\n this.$tnaTemplate.classList.add(`tna-template--dark-theme`);\n } else if (theme === \"system\") {\n this.$tnaTemplate.classList.remove(\"tna-template--dark-theme\");\n this.$tnaTemplate.classList.add(`tna-template--system-theme`);\n } else {\n return;\n }\n this.cookies.set(\"theme\", theme);\n }\n\n selectThemeSelectorButton($selectedButton) {\n Array.from(this.$themeSelectorButtons).forEach(($button) => {\n if ($button.value === $selectedButton.value) {\n $button.classList.remove(\"tna-button--plain\");\n $button.setAttribute(\"aria-current\", true);\n } else {\n $button.classList.add(\"tna-button--plain\");\n $button.removeAttribute(\"aria-current\");\n }\n });\n }\n}\n"],"names":["root","factory","exports","module","define","amd","self","window","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","_createClass","_classCallCheck","_defineProperty","this","key","value","event","callback","Object","hasOwn","events","concat","_toConsumableArray","oneTimeEvents","_this","data","arguments","length","undefined","forEach","eventToTrigger","call","i","splice","Cookies","options","_options$extraPolicie","extraPolicies","_options$domain","domain","_options$path","path","_options$secure","secure","_options$policiesKey","policiesKey","_options$newInstance","newInstance","_options$defaultAge","defaultAge","destroyInstance","document","documentElement","dataset","tnaCookiesDomain","tnaCookiesPath","init","savePolicies","_objectSpread","fromEntries","map","k","toLowerCase","usage","settings","marketing","policies","essential","get","deserialised","cookie","split","filter","x","parts","trim","JSON","parse","e","all","exists","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain2","_options$path2","_options$secure2","_options$session","session","encodeURIComponent","trigger","set","_this2","keys","policy","setPolicy","accepted","allPolicies","stringify","on","once","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","Footer","$module","$themeSelector","querySelector","$tnaTemplate","$themeSelectorButtons","querySelectorAll","Array","from","$themeSelectorButton","addEventListener","$button","target","setTheme","selectThemeSelectorButton","cookies","isPolicyAccepted","showThemeSelector","hideThemeSelector","removeAttribute","$currentThemeButton","find","setAttribute","theme","classList","remove","add","$selectedButton"],"sourceRoot":""}
1
+ {"version":3,"file":"components/footer/footer.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"TNAFrontend\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","window.TNAFrontendCookies = window.TNAFrontendCookies || null;\nwindow.TNAFrontendCookieEvents = window.TNAFrontendCookieEvents || null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n\n constructor() {\n if (window.TNAFrontendCookieEvents) {\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n once(event, callback) {\n if (!Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event] = [];\n }\n this.oneTimeEvents[event] = [...this.oneTimeEvents[event], callback];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n for (let i = this.oneTimeEvents[event].length - 1; i >= 0; i--) {\n const eventToTrigger = this.oneTimeEvents[event][i];\n eventToTrigger.call(this, data);\n this.oneTimeEvents[event].splice(i, 1);\n }\n }\n }\n}\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n domain = \"\";\n /** @protected */\n path = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n /** @protected */\n completePoliciesOnInit = false;\n\n /**\n * Create a cookie handler.\n * @param {String} [options.domain=\"\"] - The domain to register the cookie with.\n * @param {String} [options.path=\"\"] - The domain to register the cookie with.\n * @param {String} [options.secure=true] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey=\"cookies_policy\"] - The name of the cookie.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n * @param {String} [options.defaultAge=31536000] - The default age of non-session cookies.\n */\n constructor(options = {}) {\n const {\n domain = null,\n path = null,\n secure = true,\n policiesKey = \"cookies_policy\",\n newInstance = false,\n defaultAge = 31536000, // 365 days\n } = options;\n if (newInstance) {\n this.destroyInstance();\n } else if (window.TNAFrontendCookies) {\n return window.TNAFrontendCookies;\n }\n if (domain === null) {\n this.domain = document.documentElement.dataset.tnaCookiesDomain || \"\";\n } else {\n this.domain = domain;\n }\n if (path === null) {\n this.path = document.documentElement.dataset.tnaCookiesPath || \"/\";\n } else {\n this.path = path;\n }\n this.secure = secure;\n this.policiesKey = policiesKey;\n this.defaultAge = defaultAge;\n this.events = new CookieEventHandler();\n this.completePoliciesOnInit =\n Object.keys(this.policies).length === 4 &&\n [\"usage\", \"settings\", \"marketing\", \"essential\"].every(\n (policy) =>\n Object.keys(this.policies).includes(policy) &&\n typeof this.policies[policy] === \"boolean\",\n );\n this.init();\n window.TNAFrontendCookies = this;\n }\n\n /** @protected */\n init() {\n this.savePolicies({\n usage: false,\n settings: false,\n marketing: false,\n ...this.policies,\n essential: true,\n });\n }\n\n destroyInstance() {\n window.TNAFrontendCookies = null;\n }\n\n /** @protected */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((x) => x)\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n if (parts[0]) {\n deserialised[parts[0]] = parts[1];\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n } catch (e) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) == value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean}\n */\n get(key) {\n return this.exists(key) ? decodeURIComponent(this.all[key]) : null;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number} [options.maxAge=this.defaultAge] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.domain] - The domain to register the cookie with.\n * @param {String} [options.path=this.path] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.session=false] - Set a session cookie.\n */\n set(key, value, options = {}) {\n const {\n maxAge = this.defaultAge,\n sameSite = \"Lax\",\n domain = this.domain,\n path = this.path,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)};${\n domain ? ` domain=${domain}; ` : \"\"\n } samesite=${sameSite}; path=${path}${!session ? `; max-age=${maxAge}` : \"\"}${\n secure ? \"; secure\" : \"\"\n }`;\n document.cookie = cookie;\n this.events.trigger(\"setCookie\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = null) {\n const options = { maxAge: -1, path, domain: domain || undefined };\n this.set(key, \"\", options);\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = null) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.events.trigger(\"deleteAllCookies\", { path, domain });\n }\n\n /**\n * Accept a policy.\n * @param {String} policy - The name of the policy.\n */\n acceptPolicy(policy) {\n this.setPolicy(policy, true);\n this.events.trigger(\"acceptPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: true });\n }\n\n /**\n * Reject a policy.\n * @param {String} policy - The name of the policy.\n */\n rejectPolicy(policy) {\n this.setPolicy(policy, false);\n this.events.trigger(\"rejectPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: false });\n }\n\n /**\n * Set a policy.\n * @param {String} policy - The name of the policy.\n * @param {Boolean} accepted - Whether the policy is accepted or not.\n */\n setPolicy(policy, accepted) {\n if (policy === \"essential\") {\n return;\n }\n this.savePolicies({\n ...this.policies,\n [policy]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePolicy\", { [policy]: accepted });\n }\n\n /**\n * Accept all the cookie policies.\n */\n acceptAllPolicies() {\n const allPolicies = Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), true]),\n );\n this.savePolicies(allPolicies);\n this.events.trigger(\"acceptAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Reject all the cookie policies.\n */\n rejectAllPolicies() {\n const allPolicies = {\n ...Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePolicies(allPolicies);\n this.events.trigger(\"rejectAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Commit policy preferences to the browser.\n * @param {object} policies - The policies to commit.\n */\n savePolicies(policies) {\n this.set(this.policiesKey, JSON.stringify(policies));\n }\n\n /**\n * Get the acceptance status of a policy.\n * @param {String} policy - The name of the policy.\n * @returns {Boolean}\n */\n isPolicyAccepted(policy) {\n return Object.hasOwn(this.policies, policy)\n ? this.policies[policy] === true\n : null;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.events.once(event, callback);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import Cookies from \"../../lib/cookies.mjs\";\n\nexport class Footer {\n constructor($module) {\n this.$module = $module;\n this.$themeSelector =\n $module && $module.querySelector(\".tna-footer__theme-selector\");\n this.$tnaTemplate = document.querySelector(\".tna-template\");\n\n if (!this.$module || !this.$themeSelector || !this.$tnaTemplate) {\n return;\n }\n\n this.$themeSelectorButtons = this.$themeSelector.querySelectorAll(\n \"button.tna-footer__theme-selector-button[value]\",\n );\n\n Array.from(this.$themeSelectorButtons).forEach(($themeSelectorButton) => {\n $themeSelectorButton.addEventListener(\"click\", (e) => {\n const $button = e.target;\n this.setTheme($button.value);\n this.selectThemeSelectorButton($button);\n });\n });\n\n this.cookies = new Cookies();\n if (this.cookies.isPolicyAccepted(\"settings\")) {\n this.showThemeSelector();\n }\n this.cookies.on(\"changePolicy\", (data) => {\n if (Object.hasOwn(data, \"settings\")) {\n if (data.settings === true) {\n this.showThemeSelector();\n } else {\n this.cookies.delete(\"theme\");\n this.hideThemeSelector();\n }\n }\n });\n }\n\n showThemeSelector() {\n this.$themeSelector.removeAttribute(\"hidden\");\n if (this.cookies.exists(\"theme\")) {\n const $currentThemeButton = Array.from(this.$themeSelectorButtons).find(\n ($button) => $button.value === this.cookies.get(\"theme\"),\n );\n if ($currentThemeButton) {\n this.selectThemeSelectorButton($currentThemeButton);\n }\n }\n }\n\n hideThemeSelector() {\n this.$themeSelector.setAttribute(\"hidden\", \"\");\n }\n\n setTheme(theme) {\n if (theme === \"light\") {\n this.$tnaTemplate.classList.remove(\n \"tna-template--system-theme\",\n \"tna-template--dark-theme\",\n );\n } else if (theme === \"dark\") {\n this.$tnaTemplate.classList.remove(\"tna-template--system-theme\");\n this.$tnaTemplate.classList.add(`tna-template--dark-theme`);\n } else if (theme === \"system\") {\n this.$tnaTemplate.classList.remove(\"tna-template--dark-theme\");\n this.$tnaTemplate.classList.add(`tna-template--system-theme`);\n } else {\n return;\n }\n this.cookies.set(\"theme\", theme);\n }\n\n selectThemeSelectorButton($selectedButton) {\n Array.from(this.$themeSelectorButtons).forEach(($button) => {\n if ($button.value === $selectedButton.value) {\n $button.classList.remove(\"tna-button--plain\");\n $button.setAttribute(\"aria-current\", true);\n } else {\n $button.classList.add(\"tna-button--plain\");\n $button.removeAttribute(\"aria-current\");\n }\n });\n }\n}\n"],"names":["root","factory","exports","module","define","amd","self","window","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","_createClass","_classCallCheck","_defineProperty","this","key","value","event","callback","Object","hasOwn","events","concat","_toConsumableArray","oneTimeEvents","_this","data","arguments","length","undefined","forEach","eventToTrigger","call","i","splice","Cookies","_this2","options","_options$domain","domain","_options$path","path","_options$secure","secure","_options$policiesKey","policiesKey","_options$newInstance","newInstance","_options$defaultAge","defaultAge","destroyInstance","document","documentElement","dataset","tnaCookiesDomain","tnaCookiesPath","completePoliciesOnInit","keys","policies","every","policy","includes","init","savePolicies","_objectSpread","usage","settings","marketing","essential","get","deserialised","cookie","split","filter","x","parts","trim","JSON","parse","e","all","exists","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain2","_options$path2","_options$secure2","_options$session","session","encodeURIComponent","trigger","set","_this3","setPolicy","accepted","allPolicies","fromEntries","map","k","toLowerCase","stringify","on","once","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","Footer","$module","$themeSelector","querySelector","$tnaTemplate","$themeSelectorButtons","querySelectorAll","Array","from","$themeSelectorButton","addEventListener","$button","target","setTheme","selectThemeSelectorButton","cookies","isPolicyAccepted","showThemeSelector","hideThemeSelector","removeAttribute","$currentThemeButton","find","setAttribute","theme","classList","remove","add","$selectedButton"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("TNAFrontend",[],e):"object"==typeof exports?exports.TNAFrontend=e():t.TNAFrontend=e()}(self,(()=>(()=>{"use strict";var t={d:(e,o)=>{for(var n in o)t.o(o,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:o[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function o(t){return o="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},o(t)}function n(t,e){for(var o=0;o<e.length;o++){var n=e[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,s(n.key),n)}}function s(t){var e=function(t){if("object"!=o(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==o(e)?e:e+""}t.r(e),t.d(e,{TextInput:()=>r});var r=function(){return t=function t(e){var o=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$module=e,this.$input=e&&e.querySelector(".tna-text-input"),this.$module&&this.$input&&"password"===this.$input.getAttribute("type")&&(this.$textInputWrapper=document.createElement("div"),this.$textInputWrapper.classList.add("tna-text-input-wrapper"),this.$textInputPasswordToggle=document.createElement("button"),this.$textInputPasswordToggle.setAttribute("type","button"),this.$textInputPasswordToggle.classList.add("tna-button","tna-button--small","tna-button--icon-only"),this.$textInputPasswordToggle.setAttribute("aria-controls",this.$input.id),this.updateTogglePasswordButtonText(),this.$textInputWrapper.appendChild(this.$input),this.$textInputWrapper.appendChild(this.$textInputPasswordToggle),this.$module.appendChild(this.$textInputWrapper),this.$textInputPasswordToggle.addEventListener("click",(function(){o.togglePasswordType(),o.$input.focus()})))},(e=[{key:"togglePasswordType",value:function(){"password"===this.$input.getAttribute("type")?this.$input.setAttribute("type","text"):this.$input.setAttribute("type","password"),this.updateTogglePasswordButtonText()}},{key:"updateTogglePasswordButtonText",value:function(){"password"===this.$input.getAttribute("type")?(this.$textInputPasswordToggle.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" height="16" aria-hidden="true" focusable="false">\x3c!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--\x3e<path d="M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z"/></svg>Show password',this.$textInputPasswordToggle.setAttribute("title","Show password"),this.$textInputPasswordToggle.setAttribute("aria-title","Show password")):(this.$textInputPasswordToggle.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" height="16" aria-hidden="true" focusable="false">\x3c!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--\x3e<path d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z"/></svg></i>Hide password',this.$textInputPasswordToggle.setAttribute("title","Hide password"),this.$textInputPasswordToggle.setAttribute("aria-title","Hide password"))}}])&&n(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();return e})()));
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("TNAFrontend",[],e):"object"==typeof exports?exports.TNAFrontend=e():t.TNAFrontend=e()}(self,(()=>(()=>{"use strict";var t={d:(e,o)=>{for(var n in o)t.o(o,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:o[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function o(t){return o="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},o(t)}function n(t,e){for(var o=0;o<e.length;o++){var n=e[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,s(n.key),n)}}function s(t){var e=function(t){if("object"!=o(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==o(e)?e:e+""}t.r(e),t.d(e,{TextInput:()=>r});var r=function(){return t=function t(e){var o=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$module=e,this.$input=e&&e.querySelector(".tna-text-input"),this.$module&&this.$input&&"password"===this.$input.getAttribute("type")&&(this.$textInputWrapper=document.createElement("div"),this.$textInputWrapper.classList.add("tna-text-input-wrapper"),this.$textInputPasswordToggle=document.createElement("button"),this.$textInputPasswordToggle.setAttribute("type","button"),this.$textInputPasswordToggle.classList.add("tna-button","tna-button--small","tna-button--icon-only"),this.$textInputPasswordToggle.setAttribute("aria-controls",this.$input.id),this.updateTogglePasswordButtonText(),this.$textInputWrapper.appendChild(this.$input),this.$textInputWrapper.appendChild(this.$textInputPasswordToggle),this.$module.appendChild(this.$textInputWrapper),this.$textInputPasswordToggle.addEventListener("click",(function(){o.togglePasswordType(),o.$input.focus()})))},(e=[{key:"togglePasswordType",value:function(){"password"===this.$input.getAttribute("type")?this.$input.setAttribute("type","text"):this.$input.setAttribute("type","password"),this.updateTogglePasswordButtonText()}},{key:"updateTogglePasswordButtonText",value:function(){"password"===this.$input.getAttribute("type")?(this.$textInputPasswordToggle.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" height="16" aria-hidden="true" focusable="false">\x3c!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--\x3e<path d="M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z"/></svg>Show password',this.$textInputPasswordToggle.setAttribute("title","Show password"),this.$textInputPasswordToggle.setAttribute("aria-label","Show password")):(this.$textInputPasswordToggle.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" height="16" aria-hidden="true" focusable="false">\x3c!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--\x3e<path d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z"/></svg></i>Hide password',this.$textInputPasswordToggle.setAttribute("title","Hide password"),this.$textInputPasswordToggle.setAttribute("aria-label","Hide password"))}}])&&n(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();return e})()));
2
2
  //# sourceMappingURL=text-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components/text-input/text-input.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,cAAe,GAAIH,GACA,iBAAZC,QACdA,QAAqB,YAAID,IAEzBD,EAAkB,YAAIC,GACvB,CATD,CASGK,MAAM,I,mBCRT,IAAIC,EAAsB,CCA1BA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFT,EAAyBL,IACH,oBAAXkB,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeV,EAASkB,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeV,EAAS,aAAc,CAAEoB,OAAO,GAAO,G,usBCLvD,IAAMC,EAAS,WAmCnB,O,EAlCD,SAAAA,EAAYC,GAAS,IAAAC,EAAA,M,4FAAAC,CAAA,KAAAH,GACnBI,KAAKH,QAAUA,EACfG,KAAKC,OAASJ,GAAWA,EAAQK,cAAc,mBAE1CF,KAAKH,SAAYG,KAAKC,QAIc,aAArCD,KAAKC,OAAOE,aAAa,UAC3BH,KAAKI,kBAAoBC,SAASC,cAAc,OAChDN,KAAKI,kBAAkBG,UAAUC,IAAI,0BAErCR,KAAKS,yBAA2BJ,SAASC,cAAc,UACvDN,KAAKS,yBAAyBC,aAAa,OAAQ,UACnDV,KAAKS,yBAAyBF,UAAUC,IACtC,aACA,oBACA,yBAEFR,KAAKS,yBAAyBC,aAC5B,gBACAV,KAAKC,OAAOU,IAEdX,KAAKY,iCAELZ,KAAKI,kBAAkBS,YAAYb,KAAKC,QACxCD,KAAKI,kBAAkBS,YAAYb,KAAKS,0BACxCT,KAAKH,QAAQgB,YAAYb,KAAKI,mBAE9BJ,KAAKS,yBAAyBK,iBAAiB,SAAS,WACtDhB,EAAKiB,qBACLjB,EAAKG,OAAOe,OACd,IAEJ,G,EAAC,EAAAlC,IAAA,qBAAAa,MAED,WAC2C,aAArCK,KAAKC,OAAOE,aAAa,QAC3BH,KAAKC,OAAOS,aAAa,OAAQ,QAEjCV,KAAKC,OAAOS,aAAa,OAAQ,YAEnCV,KAAKY,gCACP,GAAC,CAAA9B,IAAA,iCAAAa,MAED,WAC2C,aAArCK,KAAKC,OAAOE,aAAa,SAC3BH,KAAKS,yBAAyBQ,UAAY,02BAC1CjB,KAAKS,yBAAyBC,aAAa,QAAS,iBACpDV,KAAKS,yBAAyBC,aAAa,aAAc,mBAEzDV,KAAKS,yBAAyBQ,UAAY,mjCAC1CjB,KAAKS,yBAAyBC,aAAa,QAAS,iBACpDV,KAAKS,yBAAyBC,aAAa,aAAc,iBAE7D,M,6EAAC,CAxDmB,G","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/components/text-input/text-input.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"TNAFrontend\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export class TextInput {\n constructor($module) {\n this.$module = $module;\n this.$input = $module && $module.querySelector(\".tna-text-input\");\n\n if (!this.$module || !this.$input) {\n return;\n }\n\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputWrapper = document.createElement(\"div\");\n this.$textInputWrapper.classList.add(\"tna-text-input-wrapper\");\n\n this.$textInputPasswordToggle = document.createElement(\"button\");\n this.$textInputPasswordToggle.setAttribute(\"type\", \"button\");\n this.$textInputPasswordToggle.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n \"tna-button--icon-only\",\n );\n this.$textInputPasswordToggle.setAttribute(\n \"aria-controls\",\n this.$input.id,\n );\n this.updateTogglePasswordButtonText();\n\n this.$textInputWrapper.appendChild(this.$input);\n this.$textInputWrapper.appendChild(this.$textInputPasswordToggle);\n this.$module.appendChild(this.$textInputWrapper);\n\n this.$textInputPasswordToggle.addEventListener(\"click\", () => {\n this.togglePasswordType();\n this.$input.focus();\n });\n }\n }\n\n togglePasswordType() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$input.setAttribute(\"type\", \"text\");\n } else {\n this.$input.setAttribute(\"type\", \"password\");\n }\n this.updateTogglePasswordButtonText();\n }\n\n updateTogglePasswordButtonText() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\" height=\"16\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"/></svg>Show password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Show password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-title\", \"Show password\");\n } else {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\" height=\"16\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"/></svg></i>Hide password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Hide password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-title\", \"Hide password\");\n }\n }\n}\n"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","TextInput","$module","_this","_classCallCheck","this","$input","querySelector","getAttribute","$textInputWrapper","document","createElement","classList","add","$textInputPasswordToggle","setAttribute","id","updateTogglePasswordButtonText","appendChild","addEventListener","togglePasswordType","focus","innerHTML"],"sourceRoot":""}
1
+ {"version":3,"file":"components/text-input/text-input.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,cAAe,GAAIH,GACA,iBAAZC,QACdA,QAAqB,YAAID,IAEzBD,EAAkB,YAAIC,GACvB,CATD,CASGK,MAAM,I,mBCRT,IAAIC,EAAsB,CCA1BA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFT,EAAyBL,IACH,oBAAXkB,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeV,EAASkB,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeV,EAAS,aAAc,CAAEoB,OAAO,GAAO,G,usBCLvD,IAAMC,EAAS,WAmCnB,O,EAlCD,SAAAA,EAAYC,GAAS,IAAAC,EAAA,M,4FAAAC,CAAA,KAAAH,GACnBI,KAAKH,QAAUA,EACfG,KAAKC,OAASJ,GAAWA,EAAQK,cAAc,mBAE1CF,KAAKH,SAAYG,KAAKC,QAIc,aAArCD,KAAKC,OAAOE,aAAa,UAC3BH,KAAKI,kBAAoBC,SAASC,cAAc,OAChDN,KAAKI,kBAAkBG,UAAUC,IAAI,0BAErCR,KAAKS,yBAA2BJ,SAASC,cAAc,UACvDN,KAAKS,yBAAyBC,aAAa,OAAQ,UACnDV,KAAKS,yBAAyBF,UAAUC,IACtC,aACA,oBACA,yBAEFR,KAAKS,yBAAyBC,aAC5B,gBACAV,KAAKC,OAAOU,IAEdX,KAAKY,iCAELZ,KAAKI,kBAAkBS,YAAYb,KAAKC,QACxCD,KAAKI,kBAAkBS,YAAYb,KAAKS,0BACxCT,KAAKH,QAAQgB,YAAYb,KAAKI,mBAE9BJ,KAAKS,yBAAyBK,iBAAiB,SAAS,WACtDhB,EAAKiB,qBACLjB,EAAKG,OAAOe,OACd,IAEJ,G,EAAC,EAAAlC,IAAA,qBAAAa,MAED,WAC2C,aAArCK,KAAKC,OAAOE,aAAa,QAC3BH,KAAKC,OAAOS,aAAa,OAAQ,QAEjCV,KAAKC,OAAOS,aAAa,OAAQ,YAEnCV,KAAKY,gCACP,GAAC,CAAA9B,IAAA,iCAAAa,MAED,WAC2C,aAArCK,KAAKC,OAAOE,aAAa,SAC3BH,KAAKS,yBAAyBQ,UAAY,02BAC1CjB,KAAKS,yBAAyBC,aAAa,QAAS,iBACpDV,KAAKS,yBAAyBC,aAAa,aAAc,mBAEzDV,KAAKS,yBAAyBQ,UAAY,mjCAC1CjB,KAAKS,yBAAyBC,aAAa,QAAS,iBACpDV,KAAKS,yBAAyBC,aAAa,aAAc,iBAE7D,M,6EAAC,CAxDmB,G","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/components/text-input/text-input.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"TNAFrontend\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export class TextInput {\n constructor($module) {\n this.$module = $module;\n this.$input = $module && $module.querySelector(\".tna-text-input\");\n\n if (!this.$module || !this.$input) {\n return;\n }\n\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputWrapper = document.createElement(\"div\");\n this.$textInputWrapper.classList.add(\"tna-text-input-wrapper\");\n\n this.$textInputPasswordToggle = document.createElement(\"button\");\n this.$textInputPasswordToggle.setAttribute(\"type\", \"button\");\n this.$textInputPasswordToggle.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n \"tna-button--icon-only\",\n );\n this.$textInputPasswordToggle.setAttribute(\n \"aria-controls\",\n this.$input.id,\n );\n this.updateTogglePasswordButtonText();\n\n this.$textInputWrapper.appendChild(this.$input);\n this.$textInputWrapper.appendChild(this.$textInputPasswordToggle);\n this.$module.appendChild(this.$textInputWrapper);\n\n this.$textInputPasswordToggle.addEventListener(\"click\", () => {\n this.togglePasswordType();\n this.$input.focus();\n });\n }\n }\n\n togglePasswordType() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$input.setAttribute(\"type\", \"text\");\n } else {\n this.$input.setAttribute(\"type\", \"password\");\n }\n this.updateTogglePasswordButtonText();\n }\n\n updateTogglePasswordButtonText() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\" height=\"16\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"/></svg>Show password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Show password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Show password\");\n } else {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\" height=\"16\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"/></svg></i>Hide password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Hide password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Hide password\");\n }\n }\n}\n"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","TextInput","$module","_this","_classCallCheck","this","$input","querySelector","getAttribute","$textInputWrapper","document","createElement","classList","add","$textInputPasswordToggle","setAttribute","id","updateTogglePasswordButtonText","appendChild","addEventListener","togglePasswordType","focus","innerHTML"],"sourceRoot":""}
@@ -48,11 +48,11 @@ export class TextInput {
48
48
  if (this.$input.getAttribute("type") === "password") {
49
49
  this.$textInputPasswordToggle.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" height="16" aria-hidden="true" focusable="false"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z"/></svg>Show password`;
50
50
  this.$textInputPasswordToggle.setAttribute("title", "Show password");
51
- this.$textInputPasswordToggle.setAttribute("aria-title", "Show password");
51
+ this.$textInputPasswordToggle.setAttribute("aria-label", "Show password");
52
52
  } else {
53
53
  this.$textInputPasswordToggle.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" height="16" aria-hidden="true" focusable="false"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z"/></svg></i>Hide password`;
54
54
  this.$textInputPasswordToggle.setAttribute("title", "Hide password");
55
- this.$textInputPasswordToggle.setAttribute("aria-title", "Hide password");
55
+ this.$textInputPasswordToggle.setAttribute("aria-label", "Hide password");
56
56
  }
57
57
  }
58
58
  }
@@ -55,8 +55,6 @@ export class CookieEventHandler {
55
55
  * @public
56
56
  */
57
57
  export default class Cookies {
58
- /** @protected */
59
- extraPolicies = [];
60
58
  /** @protected */
61
59
  domain = "";
62
60
  /** @protected */
@@ -69,10 +67,11 @@ export default class Cookies {
69
67
  events = null;
70
68
  /** @protected */
71
69
  defaultAge = null;
70
+ /** @protected */
71
+ completePoliciesOnInit = false;
72
72
 
73
73
  /**
74
74
  * Create a cookie handler.
75
- * @param {String} [options.extraPolicies=[]] - The extra cookie policies to manage in addition to essential, settings, usage and marketing.
76
75
  * @param {String} [options.domain=""] - The domain to register the cookie with.
77
76
  * @param {String} [options.path=""] - The domain to register the cookie with.
78
77
  * @param {String} [options.secure=true] - Only set cookie in HTTPS environments.
@@ -82,7 +81,6 @@ export default class Cookies {
82
81
  */
83
82
  constructor(options = {}) {
84
83
  const {
85
- extraPolicies = [],
86
84
  domain = null,
87
85
  path = null,
88
86
  secure = true,
@@ -95,7 +93,6 @@ export default class Cookies {
95
93
  } else if (window.TNAFrontendCookies) {
96
94
  return window.TNAFrontendCookies;
97
95
  }
98
- this.extraPolicies = extraPolicies;
99
96
  if (domain === null) {
100
97
  this.domain = document.documentElement.dataset.tnaCookiesDomain || "";
101
98
  } else {
@@ -110,6 +107,13 @@ export default class Cookies {
110
107
  this.policiesKey = policiesKey;
111
108
  this.defaultAge = defaultAge;
112
109
  this.events = new CookieEventHandler();
110
+ this.completePoliciesOnInit =
111
+ Object.keys(this.policies).length === 4 &&
112
+ ["usage", "settings", "marketing", "essential"].every(
113
+ (policy) =>
114
+ Object.keys(this.policies).includes(policy) &&
115
+ typeof this.policies[policy] === "boolean",
116
+ );
113
117
  this.init();
114
118
  window.TNAFrontendCookies = this;
115
119
  }
@@ -117,9 +121,6 @@ export default class Cookies {
117
121
  /** @protected */
118
122
  init() {
119
123
  this.savePolicies({
120
- ...Object.fromEntries(
121
- this.extraPolicies.map((k) => [k.toLowerCase(), false]),
122
- ),
123
124
  usage: false,
124
125
  settings: false,
125
126
  marketing: false,
@@ -318,9 +319,7 @@ export default class Cookies {
318
319
  * @param {object} policies - The policies to commit.
319
320
  */
320
321
  savePolicies(policies) {
321
- this.set(this.policiesKey, JSON.stringify(policies), {
322
- maxAge: 60 * 60 * 24 * 365,
323
- });
322
+ this.set(this.policiesKey, JSON.stringify(policies));
324
323
  }
325
324
 
326
325
  /**