digitalmarketplace-frontend
Version:
Digital Marketplace Frontend contains assets and components used in Digital Marketplace projects
1 lines • 8.12 kB
Source Map (JSON)
{"version":3,"file":"settings.mjs","sources":["../../../../src/digitalmarketplace/scripts/cookies/settings.ts"],"sourcesContent":["import { DigitalMarketplaceFrontendComponent } from '../../digitalmarketplace-frontend-component'\nimport { getCookiePreferences, setCookiePreferences } from './manage'\n\nclass CookieSettings implements DigitalMarketplaceFrontendComponent {\n static moduleName = 'dm-cookie-settings'\n $moudle: JQuery<HTMLElement>\n $radioButtonAnalyticsYes: JQuery<HTMLInputElement>\n $radioButtonAnalyticsNo: JQuery<HTMLInputElement>\n $confirmationMessage: JQuery<HTMLElement>\n $previousPageLink: JQuery<HTMLElement>\n $errorSummary: JQuery<HTMLElement>\n $formGroup: JQuery<HTMLElement>\n $warningMessage: JQuery<HTMLElement>\n $cookieBanner: JQuery<HTMLElement>\n\n constructor ($module: JQuery<HTMLElement>) {\n this.$moudle = $module\n this.$radioButtonAnalyticsYes = this.$moudle.find<HTMLInputElement>('input[name=cookies-analytics][value=On]')\n this.$radioButtonAnalyticsNo = this.$moudle.find<HTMLInputElement>('input[name=cookies-analytics][value=Off]')\n this.$confirmationMessage = $('#dm-cookie-settings-confirmation')\n this.$previousPageLink = $('.dm-cookie-settings__prev-page')\n this.$errorSummary = $('#dm-cookie-settings-error')\n this.$formGroup = this.$moudle.find('.govuk-form-group')\n this.$warningMessage = $('#dm-cookie-settings-warning')\n this.$cookieBanner = $('.dm-cookie-banner')\n }\n\n init () {\n this.$moudle.on('submit', (event) => {\n this.submitSettingsForm(event)\n })\n\n // Ensure there aren't two forms for setting cookie preferences on the same page\n this.hideCookieBanner()\n\n this.setInitialFormValues()\n }\n\n setInitialFormValues () {\n const currentCookiePreferences = getCookiePreferences()\n\n if (!currentCookiePreferences.settings_viewed) return\n\n this.hideWarningMessage()\n\n // Populate the form with the existing choice\n let $radioButton: JQuery<HTMLInputElement>\n\n if (currentCookiePreferences.usage) {\n $radioButton = this.$radioButtonAnalyticsYes\n } else {\n $radioButton = this.$radioButtonAnalyticsNo\n }\n\n $radioButton.prop('checked', true)\n }\n\n submitSettingsForm (event: JQuery.SubmitEvent) {\n event.preventDefault()\n\n let usage\n\n for (const formDataItem of this.$moudle.serializeArray()) {\n if (formDataItem.name === 'cookies-analytics') {\n usage = formDataItem.value === 'On'\n\n break\n }\n }\n\n // the cookie choice must be set when form is submitted\n if (usage === undefined) {\n this.showError()\n return\n }\n\n // Set the analytics cookie preferences\n // If 'Off' option not checked, this function will also delete any existing Google Analytics cookies\n setCookiePreferences(usage)\n\n this.hideWarningMessage()\n this.hideError()\n this.showConfirmationMessage()\n }\n\n showConfirmationMessage () {\n const referrer = CookieSettings.getReferrerLink()\n\n document.body.scrollTop = document.documentElement.scrollTop = 0\n\n if (referrer && referrer !== document.location.pathname) {\n this.$previousPageLink.attr('href', referrer)\n this.$previousPageLink.css('display', 'block')\n } else {\n this.$previousPageLink.css('display', 'none')\n }\n\n this.$confirmationMessage.css('display', 'block')\n }\n\n showError () {\n if (this.$errorSummary.length) {\n this.$errorSummary.css('display', 'block')\n document.body.scrollTop = document.documentElement.scrollTop = 0\n }\n this.showErrorMessage()\n }\n\n showErrorMessage () {\n this.$formGroup.addClass('govuk-form-group--error')\n\n const $errorMessageSpan = $(document.createElement('p'))\n $errorMessageSpan.attr('id', 'dm-cookie-settings-error-message')\n $errorMessageSpan.addClass('govuk-error-message')\n $errorMessageSpan.html('<span class=\"govuk-visually-hidden\">Error:</span> Select yes to accept analytics cookies')\n\n $errorMessageSpan.insertBefore('#cookie-settings-1, .govuk-radios--inline')\n }\n\n hideError () {\n this.$errorSummary.css('display', 'none')\n this.hideErrorMessage()\n }\n\n hideErrorMessage () {\n const $errorMessage = this.$moudle.find('#dm-cookie-settings-error-message')\n \n $errorMessage.css('display', 'none')\n this.$formGroup.removeClass('govuk-form-group--error')\n }\n\n hideWarningMessage () {\n this.$warningMessage.css('display', 'none')\n }\n\n hideCookieBanner () {\n this.$cookieBanner.css('display', 'none')\n }\n\n static getReferrerLink () {\n return document.referrer ? new URL(document.referrer).pathname : false\n }\n}\n\nexport { CookieSettings }\n"],"names":[],"mappings":"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"}