@ministryofjustice/frontend 4.0.1 → 5.0.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 +19 -4
- package/moj/_base.scss +2 -0
- package/moj/_base.scss.map +1 -0
- package/moj/all.bundle.js +2523 -0
- package/moj/all.bundle.js.map +1 -0
- package/moj/all.bundle.mjs +2502 -0
- package/moj/all.bundle.mjs.map +1 -0
- package/moj/all.mjs +59 -69
- package/moj/all.mjs.map +1 -1
- package/moj/all.scss +2 -0
- package/moj/all.scss.map +1 -0
- package/moj/components/_all.scss +2 -0
- package/moj/components/_all.scss.map +1 -0
- package/moj/components/action-bar/_action-bar.scss +2 -0
- package/moj/components/action-bar/_action-bar.scss.map +1 -0
- package/moj/components/add-another/_add-another.scss +2 -0
- package/moj/components/add-another/_add-another.scss.map +1 -0
- package/moj/components/add-another/add-another.bundle.js +128 -0
- package/moj/components/add-another/add-another.bundle.js.map +1 -0
- package/moj/components/add-another/add-another.bundle.mjs +120 -0
- package/moj/components/add-another/add-another.bundle.mjs.map +1 -0
- package/moj/components/add-another/add-another.mjs +112 -99
- package/moj/components/add-another/add-another.mjs.map +1 -1
- package/moj/components/alert/_alert.scss +4 -0
- package/moj/components/alert/_alert.scss.map +1 -0
- package/moj/components/alert/alert.bundle.js +330 -0
- package/moj/components/alert/alert.bundle.js.map +1 -0
- package/moj/components/alert/alert.bundle.mjs +322 -0
- package/moj/components/alert/alert.bundle.mjs.map +1 -0
- package/moj/components/alert/alert.mjs +181 -217
- package/moj/components/alert/alert.mjs.map +1 -1
- package/moj/components/alert/{alert.spec.helper.js → alert.spec.helper.bundle.js} +1 -1
- package/moj/components/alert/alert.spec.helper.bundle.js.map +1 -0
- package/moj/components/alert/alert.spec.helper.bundle.mjs +67 -0
- package/moj/components/alert/alert.spec.helper.bundle.mjs.map +1 -0
- package/moj/components/alert/alert.spec.helper.mjs.map +1 -1
- package/moj/components/badge/_badge.scss +2 -0
- package/moj/components/badge/_badge.scss.map +1 -0
- package/moj/components/banner/_banner.scss +2 -0
- package/moj/components/banner/_banner.scss.map +1 -0
- package/moj/components/button-menu/README.md +10 -6
- package/moj/components/button-menu/_button-menu.scss +4 -1
- package/moj/components/button-menu/_button-menu.scss.map +1 -0
- package/moj/components/button-menu/button-menu.bundle.js +299 -0
- package/moj/components/button-menu/button-menu.bundle.js.map +1 -0
- package/moj/components/button-menu/{button-menu.js → button-menu.bundle.mjs} +74 -121
- package/moj/components/button-menu/button-menu.bundle.mjs.map +1 -0
- package/moj/components/button-menu/button-menu.mjs +246 -285
- package/moj/components/button-menu/button-menu.mjs.map +1 -1
- package/moj/components/cookie-banner/_cookie-banner.scss +2 -0
- package/moj/components/cookie-banner/_cookie-banner.scss.map +1 -0
- package/moj/components/currency-input/_currency-input.scss +2 -0
- package/moj/components/currency-input/_currency-input.scss.map +1 -0
- package/moj/components/date-picker/_date-picker.scss +2 -0
- package/moj/components/date-picker/_date-picker.scss.map +1 -0
- package/moj/components/date-picker/date-picker.bundle.js +784 -0
- package/moj/components/date-picker/date-picker.bundle.js.map +1 -0
- package/moj/components/date-picker/{date-picker.js → date-picker.bundle.mjs} +245 -439
- package/moj/components/date-picker/date-picker.bundle.mjs.map +1 -0
- package/moj/components/date-picker/date-picker.mjs +654 -840
- package/moj/components/date-picker/date-picker.mjs.map +1 -1
- package/moj/components/filter/_filter.scss +2 -0
- package/moj/components/filter/_filter.scss.map +1 -0
- package/moj/components/filter-toggle-button/filter-toggle-button.bundle.js +96 -0
- package/moj/components/filter-toggle-button/filter-toggle-button.bundle.js.map +1 -0
- package/moj/components/filter-toggle-button/filter-toggle-button.bundle.mjs +88 -0
- package/moj/components/filter-toggle-button/filter-toggle-button.bundle.mjs.map +1 -0
- package/moj/components/filter-toggle-button/filter-toggle-button.mjs +78 -84
- package/moj/components/filter-toggle-button/filter-toggle-button.mjs.map +1 -1
- package/moj/components/form-validator/form-validator.bundle.js +198 -0
- package/moj/components/form-validator/form-validator.bundle.js.map +1 -0
- package/moj/components/form-validator/form-validator.bundle.mjs +190 -0
- package/moj/components/form-validator/form-validator.bundle.mjs.map +1 -0
- package/moj/components/form-validator/form-validator.mjs +149 -152
- package/moj/components/form-validator/form-validator.mjs.map +1 -1
- package/moj/components/header/_header.scss +2 -0
- package/moj/components/header/_header.scss.map +1 -0
- package/moj/components/identity-bar/_identity-bar.scss +2 -0
- package/moj/components/identity-bar/_identity-bar.scss.map +1 -0
- package/moj/components/interruption-card/_interruption-card.scss +2 -0
- package/moj/components/interruption-card/_interruption-card.scss.map +1 -0
- package/moj/components/messages/_messages.scss +2 -0
- package/moj/components/messages/_messages.scss.map +1 -0
- package/moj/components/multi-file-upload/_multi-file-upload.scss +2 -0
- package/moj/components/multi-file-upload/_multi-file-upload.scss.map +1 -0
- package/moj/components/multi-file-upload/multi-file-upload.bundle.js +223 -0
- package/moj/components/multi-file-upload/multi-file-upload.bundle.js.map +1 -0
- package/moj/components/multi-file-upload/multi-file-upload.bundle.mjs +215 -0
- package/moj/components/multi-file-upload/multi-file-upload.bundle.mjs.map +1 -0
- package/moj/components/multi-file-upload/multi-file-upload.mjs +193 -209
- package/moj/components/multi-file-upload/multi-file-upload.mjs.map +1 -1
- package/moj/components/multi-select/_multi-select.scss +2 -0
- package/moj/components/multi-select/_multi-select.scss.map +1 -0
- package/moj/components/multi-select/multi-select.bundle.js +78 -0
- package/moj/components/multi-select/multi-select.bundle.js.map +1 -0
- package/moj/components/multi-select/multi-select.bundle.mjs +70 -0
- package/moj/components/multi-select/multi-select.bundle.mjs.map +1 -0
- package/moj/components/multi-select/multi-select.mjs +59 -67
- package/moj/components/multi-select/multi-select.mjs.map +1 -1
- package/moj/components/notification-badge/_notification-badge.scss +2 -0
- package/moj/components/notification-badge/_notification-badge.scss.map +1 -0
- package/moj/components/organisation-switcher/_organisation-switcher.scss +2 -0
- package/moj/components/organisation-switcher/_organisation-switcher.scss.map +1 -0
- package/moj/components/page-header-actions/_page-header-actions.scss +2 -0
- package/moj/components/page-header-actions/_page-header-actions.scss.map +1 -0
- package/moj/components/pagination/_pagination.scss +2 -2
- package/moj/components/pagination/_pagination.scss.map +1 -0
- package/moj/components/password-reveal/_password-reveal.scss +2 -0
- package/moj/components/password-reveal/_password-reveal.scss.map +1 -0
- package/moj/components/password-reveal/password-reveal.bundle.js +49 -0
- package/moj/components/password-reveal/password-reveal.bundle.js.map +1 -0
- package/moj/components/password-reveal/password-reveal.bundle.mjs +41 -0
- package/moj/components/password-reveal/password-reveal.bundle.mjs.map +1 -0
- package/moj/components/password-reveal/password-reveal.mjs +36 -31
- package/moj/components/password-reveal/password-reveal.mjs.map +1 -1
- package/moj/components/primary-navigation/_primary-navigation.scss +2 -0
- package/moj/components/primary-navigation/_primary-navigation.scss.map +1 -0
- package/moj/components/progress-bar/_progress-bar.scss +2 -0
- package/moj/components/progress-bar/_progress-bar.scss.map +1 -0
- package/moj/components/rich-text-editor/README.md +15 -9
- package/moj/components/rich-text-editor/_rich-text-editor.scss +2 -0
- package/moj/components/rich-text-editor/_rich-text-editor.scss.map +1 -0
- package/moj/components/rich-text-editor/rich-text-editor.bundle.js +145 -0
- package/moj/components/rich-text-editor/rich-text-editor.bundle.js.map +1 -0
- package/moj/components/rich-text-editor/rich-text-editor.bundle.mjs +137 -0
- package/moj/components/rich-text-editor/rich-text-editor.bundle.mjs.map +1 -0
- package/moj/components/rich-text-editor/rich-text-editor.mjs +124 -145
- package/moj/components/rich-text-editor/rich-text-editor.mjs.map +1 -1
- package/moj/components/search/_search.scss +2 -0
- package/moj/components/search/_search.scss.map +1 -0
- package/moj/components/search-toggle/{search-toggle.scss → _search-toggle.scss} +2 -0
- package/moj/components/search-toggle/_search-toggle.scss.map +1 -0
- package/moj/components/search-toggle/search-toggle.bundle.js +54 -0
- package/moj/components/search-toggle/search-toggle.bundle.js.map +1 -0
- package/moj/components/search-toggle/search-toggle.bundle.mjs +46 -0
- package/moj/components/search-toggle/search-toggle.bundle.mjs.map +1 -0
- package/moj/components/search-toggle/search-toggle.mjs +40 -49
- package/moj/components/search-toggle/search-toggle.mjs.map +1 -1
- package/moj/components/side-navigation/_side-navigation.scss +2 -0
- package/moj/components/side-navigation/_side-navigation.scss.map +1 -0
- package/moj/components/sortable-table/_sortable-table.scss +2 -2
- package/moj/components/sortable-table/_sortable-table.scss.map +1 -0
- package/moj/components/sortable-table/sortable-table.bundle.js +134 -0
- package/moj/components/sortable-table/sortable-table.bundle.js.map +1 -0
- package/moj/components/sortable-table/sortable-table.bundle.mjs +126 -0
- package/moj/components/sortable-table/sortable-table.bundle.mjs.map +1 -0
- package/moj/components/sortable-table/sortable-table.mjs +117 -130
- package/moj/components/sortable-table/sortable-table.mjs.map +1 -1
- package/moj/components/sub-navigation/_sub-navigation.scss +2 -0
- package/moj/components/sub-navigation/_sub-navigation.scss.map +1 -0
- package/moj/components/tag/_tag.scss +2 -0
- package/moj/components/tag/_tag.scss.map +1 -0
- package/moj/components/task-list/_task-list.scss +2 -0
- package/moj/components/task-list/_task-list.scss.map +1 -0
- package/moj/components/ticket-panel/_ticket-panel.scss +2 -0
- package/moj/components/ticket-panel/_ticket-panel.scss.map +1 -0
- package/moj/components/timeline/_timeline.scss +2 -0
- package/moj/components/timeline/_timeline.scss.map +1 -0
- package/moj/filters/all.js +44 -22
- package/moj/helpers/_all.scss +2 -0
- package/moj/helpers/_all.scss.map +1 -0
- package/moj/helpers/_hidden.scss +2 -0
- package/moj/helpers/_hidden.scss.map +1 -0
- package/moj/helpers/_links.scss +2 -0
- package/moj/helpers/_links.scss.map +1 -0
- package/moj/{helpers.js → helpers.bundle.js} +37 -42
- package/moj/helpers.bundle.js.map +1 -0
- package/moj/helpers.bundle.mjs +179 -0
- package/moj/helpers.bundle.mjs.map +1 -0
- package/moj/helpers.mjs +52 -28
- package/moj/helpers.mjs.map +1 -1
- package/moj/init.js +11 -2
- package/moj/moj-frontend.min.css +1 -1
- package/moj/moj-frontend.min.css.map +1 -1
- package/moj/moj-frontend.min.js +1 -1
- package/moj/moj-frontend.min.js.map +1 -1
- package/moj/objects/_all.scss +2 -0
- package/moj/objects/_all.scss.map +1 -0
- package/moj/objects/_button-group.scss +2 -0
- package/moj/objects/_button-group.scss.map +1 -0
- package/moj/objects/_filter-layout.scss +2 -0
- package/moj/objects/_filter-layout.scss.map +1 -0
- package/moj/objects/_scrollable-pane.scss +2 -0
- package/moj/objects/_scrollable-pane.scss.map +1 -0
- package/moj/objects/_width-container.scss +2 -0
- package/moj/objects/_width-container.scss.map +1 -0
- package/moj/settings/_all.scss +2 -0
- package/moj/settings/_all.scss.map +1 -0
- package/moj/settings/_assets.scss +2 -0
- package/moj/settings/_assets.scss.map +1 -0
- package/moj/settings/_colours.scss +2 -0
- package/moj/settings/_colours.scss.map +1 -0
- package/moj/settings/_measurements.scss +2 -0
- package/moj/settings/_measurements.scss.map +1 -0
- package/moj/settings/_typography.scss +2 -0
- package/moj/settings/_typography.scss.map +1 -0
- package/moj/template.njk +13 -0
- package/moj/utilities/_all.scss +2 -0
- package/moj/utilities/_all.scss.map +1 -0
- package/moj/utilities/_hidden.scss +2 -0
- package/moj/utilities/_hidden.scss.map +1 -0
- package/moj/utilities/_width-container.scss +2 -0
- package/moj/utilities/_width-container.scss.map +1 -0
- package/moj/vendor/govuk-frontend/_base.scss +2 -0
- package/moj/vendor/govuk-frontend/_base.scss.map +1 -0
- package/moj/vendor/govuk-frontend/_index.scss +2 -0
- package/moj/vendor/govuk-frontend/_index.scss.map +1 -0
- package/moj/{version.js → version.bundle.js} +1 -1
- package/moj/version.bundle.js.map +1 -0
- package/moj/version.bundle.mjs +4 -0
- package/moj/version.bundle.mjs.map +1 -0
- package/moj/version.mjs.map +1 -1
- package/package.json +5 -6
- package/moj/all.jquery.min.js +0 -1
- package/moj/all.jquery.min.js.map +0 -1
- package/moj/all.js +0 -2662
- package/moj/all.js.map +0 -1
- package/moj/components/add-another/add-another.js +0 -115
- package/moj/components/add-another/add-another.js.map +0 -1
- package/moj/components/alert/alert.js +0 -356
- package/moj/components/alert/alert.js.map +0 -1
- package/moj/components/alert/alert.spec.helper.js.map +0 -1
- package/moj/components/button-menu/button-menu.js.map +0 -1
- package/moj/components/date-picker/date-picker.js.map +0 -1
- package/moj/components/filter-toggle-button/filter-toggle-button.js +0 -102
- package/moj/components/filter-toggle-button/filter-toggle-button.js.map +0 -1
- package/moj/components/form-validator/form-validator.js +0 -205
- package/moj/components/form-validator/form-validator.js.map +0 -1
- package/moj/components/multi-file-upload/multi-file-upload.js +0 -241
- package/moj/components/multi-file-upload/multi-file-upload.js.map +0 -1
- package/moj/components/multi-select/multi-select.js +0 -86
- package/moj/components/multi-select/multi-select.js.map +0 -1
- package/moj/components/password-reveal/password-reveal.js +0 -44
- package/moj/components/password-reveal/password-reveal.js.map +0 -1
- package/moj/components/rich-text-editor/rich-text-editor.js +0 -166
- package/moj/components/rich-text-editor/rich-text-editor.js.map +0 -1
- package/moj/components/search-toggle/search-toggle.js +0 -63
- package/moj/components/search-toggle/search-toggle.js.map +0 -1
- package/moj/components/sortable-table/sortable-table.js +0 -147
- package/moj/components/sortable-table/sortable-table.js.map +0 -1
- package/moj/helpers.js.map +0 -1
- package/moj/vendor/html5shiv.js +0 -326
- package/moj/vendor/jquery.js +0 -9300
- package/moj/version.js.map +0 -1
package/moj/all.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"all.js","sources":["../../src/moj/components/add-another/add-another.mjs","../../src/moj/helpers.mjs","../../src/moj/components/alert/alert.mjs","../../src/moj/components/button-menu/button-menu.mjs","../../src/moj/components/date-picker/date-picker.mjs","../../src/moj/components/filter-toggle-button/filter-toggle-button.mjs","../../src/moj/components/multi-file-upload/multi-file-upload.mjs","../../src/moj/components/multi-select/multi-select.mjs","../../src/moj/components/password-reveal/password-reveal.mjs","../../src/moj/components/rich-text-editor/rich-text-editor.mjs","../../src/moj/components/search-toggle/search-toggle.mjs","../../src/moj/components/sortable-table/sortable-table.mjs","../../src/moj/version.mjs","../../src/moj/all.mjs"],"sourcesContent":["import $ from 'jquery'\n\nexport function AddAnother(container) {\n this.container = $(container)\n\n if (this.container.data('moj-add-another-initialised')) {\n return\n }\n\n this.container.data('moj-add-another-initialised', true)\n\n this.container.on(\n 'click',\n '.moj-add-another__remove-button',\n $.proxy(this, 'onRemoveButtonClick')\n )\n this.container.on(\n 'click',\n '.moj-add-another__add-button',\n $.proxy(this, 'onAddButtonClick')\n )\n this.container\n .find('.moj-add-another__add-button, moj-add-another__remove-button')\n .prop('type', 'button')\n}\n\nAddAnother.prototype.onAddButtonClick = function (e) {\n const item = this.getNewItem()\n this.updateAttributes(this.getItems().length, item)\n this.resetItem(item)\n const firstItem = this.getItems().first()\n if (!this.hasRemoveButton(firstItem)) {\n this.createRemoveButton(firstItem)\n }\n this.getItems().last().after(item)\n item.find('input, textarea, select').first().focus()\n}\n\nAddAnother.prototype.hasRemoveButton = function (item) {\n return item.find('.moj-add-another__remove-button').length\n}\n\nAddAnother.prototype.getItems = function () {\n return this.container.find('.moj-add-another__item')\n}\n\nAddAnother.prototype.getNewItem = function () {\n const item = this.getItems().first().clone()\n if (!this.hasRemoveButton(item)) {\n this.createRemoveButton(item)\n }\n return item\n}\n\nAddAnother.prototype.updateAttributes = function (index, item) {\n item.find('[data-name]').each(function (i, el) {\n const originalId = el.id\n\n el.name = $(el)\n .attr('data-name')\n .replace(/%index%/, index)\n el.id = $(el)\n .attr('data-id')\n .replace(/%index%/, index)\n\n const label =\n $(el).siblings('label')[0] ||\n $(el).parents('label')[0] ||\n item.find(`[for=\"${originalId}\"]`)[0]\n label.htmlFor = el.id\n })\n}\n\nAddAnother.prototype.createRemoveButton = function (item) {\n item.append(\n '<button type=\"button\" class=\"govuk-button govuk-button--secondary moj-add-another__remove-button\">Remove</button>'\n )\n}\n\nAddAnother.prototype.resetItem = function (item) {\n item.find('[data-name], [data-id]').each(function (index, el) {\n if (el.type === 'checkbox' || el.type === 'radio') {\n el.checked = false\n } else {\n el.value = ''\n }\n })\n}\n\nAddAnother.prototype.onRemoveButtonClick = function (e) {\n $(e.currentTarget).parents('.moj-add-another__item').remove()\n const items = this.getItems()\n if (items.length === 1) {\n items.find('.moj-add-another__remove-button').remove()\n }\n items.each(\n $.proxy(function (index, el) {\n this.updateAttributes(index, $(el))\n }, this)\n )\n this.focusHeading()\n}\n\nAddAnother.prototype.focusHeading = function () {\n this.container.find('.moj-add-another__heading').get(0).focus()\n}\n","export function removeAttributeValue(el, attr, value) {\n let re, m\n if (el.getAttribute(attr)) {\n if (el.getAttribute(attr) === value) {\n el.removeAttribute(attr)\n } else {\n re = new RegExp(`(^|\\\\s)${value}(\\\\s|$)`)\n m = el.getAttribute(attr).match(re)\n if (m && m.length === 3) {\n el.setAttribute(\n attr,\n el.getAttribute(attr).replace(re, m[1] && m[2] ? ' ' : '')\n )\n }\n }\n }\n}\n\nexport function addAttributeValue(el, attr, value) {\n let re\n if (!el.getAttribute(attr)) {\n el.setAttribute(attr, value)\n } else {\n re = new RegExp(`(^|\\\\s)${value}(\\\\s|$)`)\n if (!re.test(el.getAttribute(attr))) {\n el.setAttribute(attr, `${el.getAttribute(attr)} ${value}`)\n }\n }\n}\n\nexport function dragAndDropSupported() {\n const div = document.createElement('div')\n return typeof div.ondrop !== 'undefined'\n}\n\nexport function formDataSupported() {\n return typeof FormData === 'function'\n}\n\nexport function fileApiSupported() {\n const input = document.createElement('input')\n input.type = 'file'\n return typeof input.files !== 'undefined'\n}\n\nexport function nodeListForEach(nodes, callback) {\n if (window.NodeList.prototype.forEach) {\n return nodes.forEach(callback)\n }\n for (let i = 0; i < nodes.length; i++) {\n callback.call(window, nodes[i], i, nodes)\n }\n}\n\n/**\n * Find an elements next sibling\n *\n * Utility function to find an elements next sibling matching the provided\n * selector.\n *\n * @param {HTMLElement} $element - Element to find siblings for\n * @param {string} selector - selector for required sibling\n */\nexport function getNextSibling($element, selector) {\n if (!$element) return\n // Get the next sibling element\n let $sibling = $element.nextElementSibling\n\n // If there's no selector, return the first sibling\n if (!selector) return $sibling\n\n // If the sibling matches our selector, use it\n // If not, jump to the next sibling and continue the loop\n while ($sibling) {\n if ($sibling.matches(selector)) return $sibling\n $sibling = $sibling.nextElementSibling\n }\n}\n\n/**\n * Find an elements preceding sibling\n *\n * Utility function to find an elements previous sibling matching the provided\n * selector.\n *\n * @param {HTMLElement} $element - Element to find siblings for\n * @param {string} selector - selector for required sibling\n */\nexport function getPreviousSibling($element, selector) {\n if (!$element) return\n // Get the previous sibling element\n let $sibling = $element.previousElementSibling\n\n // If there's no selector, return the first sibling\n if (!selector) return $sibling\n\n // If the sibling matches our selector, use it\n // If not, jump to the next sibling and continue the loop\n while ($sibling) {\n if ($sibling.matches(selector)) return $sibling\n $sibling = $sibling.previousElementSibling\n }\n}\n\nexport function findNearestMatchingElement($element, selector) {\n // If no element or selector is provided, return null\n if (!$element) return\n if (!selector) return\n\n // Start with the current element\n let $currentElement = $element\n\n while ($currentElement) {\n // First check the current element\n if ($currentElement.matches(selector)) {\n return $currentElement\n }\n\n // Check all previous siblings\n let $sibling = $currentElement.previousElementSibling\n while ($sibling) {\n // Check if the sibling itself is a heading\n if ($sibling.matches(selector)) {\n return $sibling\n }\n $sibling = $sibling.previousElementSibling\n }\n\n // If no match found in siblings, move up to parent\n $currentElement = $currentElement.parentElement\n }\n}\n\n/**\n * Move focus to element\n *\n * Sets tabindex to -1 to make the element programmatically focusable,\n * but removes it on blur as the element doesn't need to be focused again.\n *\n * @param {HTMLElement} $element - HTML element\n * @param {object} [options] - Handler options\n * @param {function(this: HTMLElement): void} [options.onBeforeFocus] - Callback before focus\n * @param {function(this: HTMLElement): void} [options.onBlur] - Callback on blur\n */\nexport function setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute('tabindex')\n\n if (!isFocusable) {\n $element.setAttribute('tabindex', '-1')\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener('blur', onBlur, { once: true })\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n if (options.onBlur) {\n options.onBlur.call($element)\n }\n\n if (!isFocusable) {\n $element.removeAttribute('tabindex')\n }\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener('focus', onFocus, { once: true })\n\n // Focus element\n if (options.onBeforeFocus) {\n options.onBeforeFocus.call($element)\n }\n $element.focus()\n}\n","import {\n findNearestMatchingElement,\n getPreviousSibling,\n setFocus\n} from '../../helpers.mjs'\n\n/**\n * @typedef {object} AlertConfig\n * @property {boolean} [dismissible=false] - Can the alert be dismissed by the user\n * @property {string} [dismissText=Dismiss] - the label text for the dismiss button\n * @property {boolean} [disableAutoFocus=false] - whether the alert will be autofocused\n * @property {string} [focusOnDismissSelector] - CSS Selector for element to be focused on dismiss\n */\n\n/**\n * @param {HTMLElement} $module - the Alert element\n * @param {AlertConfig} config - configuration options\n * @class\n */\nexport function Alert($module, config = {}) {\n if (!$module) {\n return this\n }\n\n const schema = Object.freeze({\n properties: {\n dismissible: { type: 'boolean' },\n dismissText: { type: 'string' },\n disableAutoFocus: { type: 'boolean' },\n focusOnDismissSelector: { type: 'string' }\n }\n })\n\n const defaults = {\n dismissible: false,\n dismissText: 'Dismiss',\n disableAutoFocus: false\n }\n\n // data attributes override JS config, which overrides defaults\n this.config = this.mergeConfigs(\n defaults,\n config,\n this.parseDataset(schema, $module.dataset)\n )\n\n this.$module = $module\n}\n\nAlert.prototype.init = function () {\n /**\n * Focus the alert\n *\n * If `role=\"alert\"` is set, focus the element to help some assistive\n * technologies prioritise announcing it.\n *\n * You can turn off the auto-focus functionality by setting\n * `data-disable-auto-focus=\"true\"` in the component HTML. You might wish to\n * do this based on user research findings, or to avoid a clash with another\n * element which should be focused when the page loads.\n */\n if (\n this.$module.getAttribute('role') === 'alert' &&\n !this.config.disableAutoFocus\n ) {\n setFocus(this.$module)\n }\n\n this.$dismissButton = this.$module.querySelector('.moj-alert__dismiss')\n\n if (this.config.dismissible && this.$dismissButton) {\n this.$dismissButton.innerHTML = this.config.dismissText\n this.$dismissButton.removeAttribute('hidden')\n\n this.$module.addEventListener('click', (event) => {\n if (this.$dismissButton.contains(event.target)) {\n this.dimiss()\n }\n })\n }\n}\n\n/**\n * Handle dismissing the alert\n */\nAlert.prototype.dimiss = function () {\n let $elementToRecieveFocus\n\n // If a selector has been provided, attempt to find that element\n if (this.config.focusOnDismissSelector) {\n $elementToRecieveFocus = document.querySelector(\n this.config.focusOnDismissSelector\n )\n }\n\n // Is the next sibling another alert\n if (!$elementToRecieveFocus) {\n const $nextSibling = this.$module.nextElementSibling\n if ($nextSibling && $nextSibling.matches('.moj-alert')) {\n $elementToRecieveFocus = $nextSibling\n }\n }\n\n // Else try to find any preceding sibling alert or heading\n if (!$elementToRecieveFocus) {\n $elementToRecieveFocus = getPreviousSibling(\n this.$module,\n '.moj-alert, h1, h2, h3, h4, h5, h6'\n )\n }\n\n // Else find the closest ancestor heading, or fallback to main, or last resort\n // use the body element\n if (!$elementToRecieveFocus) {\n $elementToRecieveFocus = findNearestMatchingElement(\n this.$module,\n 'h1, h2, h3, h4, h5, h6, main, body'\n )\n }\n\n // If we have an element, place focus on it\n if ($elementToRecieveFocus) {\n setFocus($elementToRecieveFocus)\n }\n\n // Remove the alert\n this.$module.remove()\n}\n\n/**\n * Normalise string\n *\n * 'If it looks like a duck, and it quacks like a duck…' 🦆\n *\n * If the passed value looks like a boolean or a number, convert it to a boolean\n * or number.\n *\n * Designed to be used to convert config passed via data attributes (which are\n * always strings) into something sensible.\n *\n * @internal\n * @param {DOMStringMap[string]} value - The value to normalise\n * @param {SchemaProperty} [property] - Component schema property\n * @returns {string | boolean | number | undefined} Normalised data\n */\nAlert.prototype.normaliseString = function (value, property) {\n const trimmedValue = value ? value.trim() : ''\n\n let output\n let outputType\n if (property && property.type) {\n outputType = property.type\n }\n\n // No schema type set? Determine automatically\n if (!outputType) {\n if (['true', 'false'].includes(trimmedValue)) {\n outputType = 'boolean'\n }\n\n // Empty / whitespace-only strings are considered finite so we need to check\n // the length of the trimmed string as well\n if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {\n outputType = 'number'\n }\n }\n\n switch (outputType) {\n case 'boolean':\n output = trimmedValue === 'true'\n break\n\n case 'number':\n output = Number(trimmedValue)\n break\n\n default:\n output = value\n }\n\n return output\n}\n\n/**\n * Parse dataset\n *\n * Loop over an object and normalise each value using {@link normaliseString},\n * optionally expanding nested `i18n.field`\n *\n * @param {Schema} schema - component schema\n * @param {DOMStringMap} dataset - HTML element dataset\n * @returns {object} Normalised dataset\n */\nAlert.prototype.parseDataset = function (schema, dataset) {\n const parsed = {}\n\n for (const [field, property] of Object.entries(schema.properties)) {\n if (field in dataset) {\n if (dataset[field]) {\n parsed[field] = this.normaliseString(dataset[field], property)\n }\n }\n }\n\n return parsed\n}\n\n/**\n * Config merging function\n *\n * Takes any number of objects and combines them together, with\n * greatest priority on the LAST item passed in.\n *\n * @param {...{ [key: string]: unknown }} configObjects - Config objects to merge\n * @returns {{ [key: string]: unknown }} A merged config object\n */\nAlert.prototype.mergeConfigs = function (...configObjects) {\n const formattedConfigObject = {}\n\n // Loop through each of the passed objects\n for (const configObject of configObjects) {\n for (const key of Object.keys(configObject)) {\n const option = formattedConfigObject[key]\n const override = configObject[key]\n\n // Push their keys one-by-one into formattedConfigObject. Any duplicate\n // keys with object values will be merged, otherwise the new value will\n // override the existing value.\n if (typeof option === 'object' && typeof override === 'object') {\n // @ts-expect-error Index signature for type 'string' is missing\n formattedConfigObject[key] = this.mergeConfigs(option, override)\n } else {\n formattedConfigObject[key] = override\n }\n }\n }\n\n return formattedConfigObject\n}\n\n/**\n * Schema for component config\n *\n * @typedef {object} Schema\n * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties\n */\n\n/**\n * Schema property for component config\n *\n * @typedef {object} SchemaProperty\n * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type\n */\n","/**\n * @typedef {object} ButtonMenuConfig\n * @property {string} [buttonText=Actions] - Label for the toggle button\n * @property {\"left\" | \"right\"} [alignMenu=left] - the alignment of the menu\n * @property {string} [buttonClasses=govuk-button--secondary] - css classes applied to the toggle button\n */\n\n/**\n * @param {HTMLElement} $module\n * @param {ButtonMenuConfig} config\n * @class\n */\nexport function ButtonMenu($module, config = {}) {\n if (!$module) {\n return this\n }\n\n const schema = Object.freeze({\n properties: {\n buttonText: { type: 'string' },\n buttonClasses: { type: 'string' },\n alignMenu: { type: 'string' }\n }\n })\n\n const defaults = {\n buttonText: 'Actions',\n alignMenu: 'left',\n buttonClasses: ''\n }\n // data attributes override JS config, which overrides defaults\n this.config = this.mergeConfigs(\n defaults,\n config,\n this.parseDataset(schema, $module.dataset)\n )\n\n this.$module = $module\n}\n\nButtonMenu.prototype.init = function () {\n // If only one button is provided, don't initiate a menu and toggle button\n // if classes have been provided for the toggleButton, apply them to the single item\n if (this.$module.children.length === 1) {\n const button = this.$module.children[0]\n button.classList.forEach((className) => {\n if (className.startsWith('govuk-button-')) {\n button.classList.remove(className)\n }\n button.classList.remove('moj-button-menu__item')\n })\n if (this.config.buttonClasses) {\n button.classList.add(...this.config.buttonClasses.split(' '))\n }\n }\n // Otherwise intialise a button menu\n if (this.$module.children.length > 1) {\n this.initMenu()\n }\n}\n\nButtonMenu.prototype.initMenu = function () {\n this.$menu = this.createMenu()\n this.$module.insertAdjacentHTML('afterbegin', this.toggleTemplate())\n this.setupMenuItems()\n\n this.$menuToggle = this.$module.querySelector(':scope > button')\n this.items = this.$menu.querySelectorAll('a, button')\n\n this.$menuToggle.addEventListener('click', (event) => {\n this.toggleMenu(event)\n })\n\n this.$module.addEventListener('keydown', (event) => {\n this.handleKeyDown(event)\n })\n\n document.addEventListener('click', (event) => {\n if (!this.$module.contains(event.target)) {\n this.closeMenu(false)\n }\n })\n}\n\nButtonMenu.prototype.createMenu = function () {\n const $menu = document.createElement('ul')\n $menu.setAttribute('role', 'list')\n $menu.hidden = true\n $menu.classList.add('moj-button-menu__wrapper')\n if (this.config.alignMenu === 'right') {\n $menu.classList.add('moj-button-menu__wrapper--right')\n }\n\n this.$module.appendChild($menu)\n while (this.$module.firstChild !== $menu) {\n $menu.appendChild(this.$module.firstChild)\n }\n\n return $menu\n}\n\nButtonMenu.prototype.setupMenuItems = function () {\n Array.from(this.$menu.children).forEach((item) => {\n // wrap item in li tag\n const listItem = document.createElement('li')\n this.$menu.insertBefore(listItem, item)\n listItem.appendChild(item)\n\n item.setAttribute('tabindex', -1)\n\n if (item.tagName === 'BUTTON') {\n item.setAttribute('type', 'button')\n }\n\n item.classList.forEach((className) => {\n if (className.startsWith('govuk-button')) {\n item.classList.remove(className)\n }\n })\n\n // add a slight delay after click before closing the menu, makes it *feel* better\n item.addEventListener('click', (event) => {\n setTimeout(() => {\n this.closeMenu(false)\n }, 50)\n })\n })\n}\n\nButtonMenu.prototype.toggleTemplate = function () {\n return `\n <button type=\"button\" class=\"govuk-button moj-button-menu__toggle-button ${this.config.buttonClasses || ''}\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <span>\n ${this.config.buttonText}\n <svg width=\"11\" height=\"5\" viewBox=\"0 0 11 5\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.5 0L11 5L0 5L5.5 0Z\" fill=\"currentColor\"/>\n </svg>\n </span>\n </button>`\n}\n\n/**\n * @returns {boolean}\n */\nButtonMenu.prototype.isOpen = function () {\n return this.$menuToggle.getAttribute('aria-expanded') === 'true'\n}\n\nButtonMenu.prototype.toggleMenu = function (event) {\n event.preventDefault()\n\n // If menu is triggered with mouse don't move focus to first item\n const keyboardEvent = event.detail === 0\n const focusIndex = keyboardEvent ? 0 : -1\n\n if (this.isOpen()) {\n this.closeMenu()\n } else {\n this.openMenu(focusIndex)\n }\n}\n\n/**\n * Opens the menu and optionally sets the focus to the item with given index\n *\n * @param {number} focusIndex - The index of the item to focus\n */\nButtonMenu.prototype.openMenu = function (focusIndex = 0) {\n this.$menu.hidden = false\n this.$menuToggle.setAttribute('aria-expanded', 'true')\n if (focusIndex !== -1) {\n this.focusItem(focusIndex)\n }\n}\n\n/**\n * Closes the menu and optionally returns focus back to menuToggle\n *\n * @param {boolean} moveFocus - whether to return focus to the toggle button\n */\nButtonMenu.prototype.closeMenu = function (moveFocus = true) {\n this.$menu.hidden = true\n this.$menuToggle.setAttribute('aria-expanded', 'false')\n if (moveFocus) {\n this.$menuToggle.focus()\n }\n}\n\n/**\n * Focuses the menu item at the specified index\n *\n * @param {number} index - the index of the item to focus\n */\nButtonMenu.prototype.focusItem = function (index) {\n if (index >= this.items.length) index = 0\n if (index < 0) index = this.items.length - 1\n\n const menuItem = this.items.item(index)\n if (menuItem) {\n menuItem.focus()\n }\n}\n\nButtonMenu.prototype.currentFocusIndex = function () {\n const activeElement = document.activeElement\n const menuItems = Array.from(this.items)\n\n return menuItems.indexOf(activeElement)\n}\n\nButtonMenu.prototype.handleKeyDown = function (event) {\n if (event.target === this.$menuToggle) {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.openMenu()\n break\n case 'ArrowUp':\n event.preventDefault()\n this.openMenu(this.items.length - 1)\n break\n }\n }\n\n if (this.$menu.contains(event.target) && this.isOpen()) {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n if (this.currentFocusIndex() !== -1) {\n this.focusItem(this.currentFocusIndex() + 1)\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n if (this.currentFocusIndex() !== -1) {\n this.focusItem(this.currentFocusIndex() - 1)\n }\n break\n case 'Home':\n event.preventDefault()\n this.focusItem(0)\n break\n case 'End':\n event.preventDefault()\n this.focusItem(this.items.length - 1)\n break\n }\n }\n\n if (event.key === 'Escape' && this.isOpen()) {\n this.closeMenu()\n }\n if (event.key === 'Tab' && this.isOpen()) {\n this.closeMenu(false)\n }\n}\n\n/**\n * Parse dataset\n *\n * Loop over an object and normalise each value using {@link normaliseString},\n * optionally expanding nested `i18n.field`\n *\n * @param {Schema} schema - component schema\n * @param {DOMStringMap} dataset - HTML element dataset\n * @returns {object} Normalised dataset\n */\nButtonMenu.prototype.parseDataset = function (schema, dataset) {\n const parsed = {}\n\n for (const [field, ,] of Object.entries(schema.properties)) {\n if (field in dataset) {\n if (dataset[field]) {\n parsed[field] = dataset[field]\n }\n }\n }\n\n return parsed\n}\n\n/**\n * Config merging function\n *\n * Takes any number of objects and combines them together, with\n * greatest priority on the LAST item passed in.\n *\n * @param {...{ [key: string]: unknown }} configObjects - Config objects to merge\n * @returns {{ [key: string]: unknown }} A merged config object\n */\nButtonMenu.prototype.mergeConfigs = function (...configObjects) {\n const formattedConfigObject = {}\n\n // Loop through each of the passed objects\n for (const configObject of configObjects) {\n for (const key of Object.keys(configObject)) {\n const option = formattedConfigObject[key]\n const override = configObject[key]\n\n // Push their keys one-by-one into formattedConfigObject. Any duplicate\n // keys with object values will be merged, otherwise the new value will\n // override the existing value.\n if (typeof option === 'object' && typeof override === 'object') {\n // @ts-expect-error Index signature for type 'string' is missing\n formattedConfigObject[key] = this.mergeConfigs(option, override)\n } else {\n formattedConfigObject[key] = override\n }\n }\n }\n\n return formattedConfigObject\n}\n\n/**\n * Schema for component config\n *\n * @typedef {object} Schema\n * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties\n */\n\n/**\n * Schema property for component config\n *\n * @typedef {object} SchemaProperty\n * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type\n */\n","/**\n * Date picker config\n *\n * @typedef {object} DatePickerConfig\n * @property {string} [excludedDates] - Dates that cannot be selected\n * @property {string} [excludedDays] - Days that cannot be selected\n * @property {boolean} [leadingZeroes] - Whether to add leading zeroes when populating the field\n * @property {string} [minDate] - The earliest available date\n * @property {string} [maxDate] - The latest available date\n * @property {string} [weekStartDay] - First day of the week in calendar view\n */\n\n/**\n * @param {HTMLElement} $module - HTML element\n * @param {DatePickerConfig} config - config object\n * @class\n */\nexport function DatePicker($module, config = {}) {\n if (!$module) {\n return this\n }\n\n const schema = Object.freeze({\n properties: {\n excludedDates: { type: 'string' },\n excludedDays: { type: 'string' },\n leadingZeros: { type: 'string' },\n maxDate: { type: 'string' },\n minDate: { type: 'string' },\n weekStartDay: { type: 'string' }\n }\n })\n\n const defaults = {\n leadingZeros: false,\n weekStartDay: 'monday'\n }\n\n // data attributes override JS config, which overrides defaults\n this.config = this.mergeConfigs(\n defaults,\n config,\n this.parseDataset(schema, $module.dataset)\n )\n\n this.dayLabels = [\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n 'Sunday'\n ]\n\n this.monthLabels = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ]\n\n this.currentDate = new Date()\n this.currentDate.setHours(0, 0, 0, 0)\n this.calendarDays = []\n this.excludedDates = []\n this.excludedDays = []\n\n this.buttonClass = 'moj-datepicker__button'\n this.selectedDayButtonClass = 'moj-datepicker__button--selected'\n this.currentDayButtonClass = 'moj-datepicker__button--current'\n this.todayButtonClass = 'moj-datepicker__button--today'\n\n this.$module = $module\n this.$input = $module.querySelector('.moj-js-datepicker-input')\n}\n\nDatePicker.prototype.init = function () {\n // Check that required elements are present\n if (!this.$input) {\n return\n }\n if (this.$module.dataset.initialized) {\n return\n }\n\n this.setOptions()\n this.initControls()\n this.$module.setAttribute('data-initialized', 'true')\n}\n\nDatePicker.prototype.initControls = function () {\n this.id = `datepicker-${this.$input.id}`\n\n this.$dialog = this.createDialog()\n this.createCalendarHeaders()\n\n const $componentWrapper = document.createElement('div')\n const $inputWrapper = document.createElement('div')\n $componentWrapper.classList.add('moj-datepicker__wrapper')\n $inputWrapper.classList.add('govuk-input__wrapper')\n\n this.$input.parentNode.insertBefore($componentWrapper, this.$input)\n $componentWrapper.appendChild($inputWrapper)\n $inputWrapper.appendChild(this.$input)\n\n $inputWrapper.insertAdjacentHTML('beforeend', this.toggleTemplate())\n $componentWrapper.insertAdjacentElement('beforeend', this.$dialog)\n\n this.$calendarButton = this.$module.querySelector('.moj-js-datepicker-toggle')\n this.$dialogTitle = this.$dialog.querySelector(\n '.moj-js-datepicker-month-year'\n )\n\n this.createCalendar()\n\n this.$prevMonthButton = this.$dialog.querySelector(\n '.moj-js-datepicker-prev-month'\n )\n this.$prevYearButton = this.$dialog.querySelector(\n '.moj-js-datepicker-prev-year'\n )\n this.$nextMonthButton = this.$dialog.querySelector(\n '.moj-js-datepicker-next-month'\n )\n this.$nextYearButton = this.$dialog.querySelector(\n '.moj-js-datepicker-next-year'\n )\n this.$cancelButton = this.$dialog.querySelector('.moj-js-datepicker-cancel')\n this.$okButton = this.$dialog.querySelector('.moj-js-datepicker-ok')\n\n // add event listeners\n this.$prevMonthButton.addEventListener('click', (event) =>\n this.focusPreviousMonth(event, false)\n )\n this.$prevYearButton.addEventListener('click', (event) =>\n this.focusPreviousYear(event, false)\n )\n this.$nextMonthButton.addEventListener('click', (event) =>\n this.focusNextMonth(event, false)\n )\n this.$nextYearButton.addEventListener('click', (event) =>\n this.focusNextYear(event, false)\n )\n this.$cancelButton.addEventListener('click', (event) => {\n event.preventDefault()\n this.closeDialog(event)\n })\n this.$okButton.addEventListener('click', () => {\n this.selectDate(this.currentDate)\n })\n\n const dialogButtons = this.$dialog.querySelectorAll(\n 'button:not([disabled=\"true\"])'\n )\n // eslint-disable-next-line prefer-destructuring\n this.$firstButtonInDialog = dialogButtons[0]\n this.$lastButtonInDialog = dialogButtons[dialogButtons.length - 1]\n this.$firstButtonInDialog.addEventListener('keydown', (event) =>\n this.firstButtonKeydown(event)\n )\n this.$lastButtonInDialog.addEventListener('keydown', (event) =>\n this.lastButtonKeydown(event)\n )\n\n this.$calendarButton.addEventListener('click', (event) =>\n this.toggleDialog(event)\n )\n\n this.$dialog.addEventListener('keydown', (event) => {\n if (event.key === 'Escape') {\n this.closeDialog()\n event.preventDefault()\n event.stopPropagation()\n }\n })\n\n document.body.addEventListener('mouseup', (event) =>\n this.backgroundClick(event)\n )\n\n // populates calendar with initial dates, avoids Wave errors about null buttons\n this.updateCalendar()\n}\n\nDatePicker.prototype.createDialog = function () {\n const titleId = `datepicker-title-${this.$input.id}`\n const $dialog = document.createElement('div')\n\n $dialog.id = this.id\n $dialog.setAttribute('class', 'moj-datepicker__dialog')\n $dialog.setAttribute('role', 'dialog')\n $dialog.setAttribute('aria-modal', 'true')\n $dialog.setAttribute('aria-labelledby', titleId)\n $dialog.innerHTML = this.dialogTemplate(titleId)\n $dialog.hidden = true\n\n return $dialog\n}\n\nDatePicker.prototype.createCalendar = function () {\n const $tbody = this.$dialog.querySelector('tbody')\n let dayCount = 0\n for (let i = 0; i < 6; i++) {\n // create row\n const $row = $tbody.insertRow(i)\n\n for (let j = 0; j < 7; j++) {\n // create cell (day)\n const $cell = document.createElement('td')\n const $dateButton = document.createElement('button')\n\n $cell.appendChild($dateButton)\n $row.appendChild($cell)\n\n const calendarDay = new DSCalendarDay($dateButton, dayCount, i, j, this)\n calendarDay.init()\n this.calendarDays.push(calendarDay)\n dayCount++\n }\n }\n}\n\nDatePicker.prototype.toggleTemplate = function () {\n return `<button class=\"moj-datepicker__toggle moj-js-datepicker-toggle\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"${this.id}\" aria-expanded=\"false\">\n <span class=\"govuk-visually-hidden\">Choose date</span>\n <svg width=\"32\" height=\"24\" focusable=\"false\" class=\"moj-datepicker-icon\" aria-hidden=\"true\" role=\"img\" viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.1333 2.93333H5.86668V4.4C5.86668 5.21002 5.21003 5.86667 4.40002 5.86667C3.59 5.86667 2.93335 5.21002 2.93335 4.4V2.93333H2C0.895431 2.93333 0 3.82877 0 4.93334V19.2667C0 20.3712 0.89543 21.2667 2 21.2667H20C21.1046 21.2667 22 20.3712 22 19.2667V4.93333C22 3.82876 21.1046 2.93333 20 2.93333H19.0667V4.4C19.0667 5.21002 18.41 5.86667 17.6 5.86667C16.79 5.86667 16.1333 5.21002 16.1333 4.4V2.93333ZM20.5333 8.06667H1.46665V18.8C1.46665 19.3523 1.91436 19.8 2.46665 19.8H19.5333C20.0856 19.8 20.5333 19.3523 20.5333 18.8V8.06667Z\"\n ></path>\n <rect x=\"3.66669\" width=\"1.46667\" height=\"5.13333\" rx=\"0.733333\" fill=\"currentColor\"></rect>\n <rect x=\"16.8667\" width=\"1.46667\" height=\"5.13333\" rx=\"0.733333\" fill=\"currentColor\"></rect>\n </svg>\n </button>`\n}\n\n/**\n * HTML template for calendar dialog\n *\n * @param {string} [titleId] - Id attribute for dialog title\n * @returns {string}\n */\nDatePicker.prototype.dialogTemplate = function (titleId) {\n return `<div class=\"moj-datepicker__dialog-header\">\n <div class=\"moj-datepicker__dialog-navbuttons\">\n <button class=\"moj-datepicker__button moj-js-datepicker-prev-year\">\n <span class=\"govuk-visually-hidden\">Previous year</span>\n <svg width=\"44\" height=\"40\" viewBox=\"0 0 44 40\" fill=\"none\" fill=\"none\" focusable=\"false\" aria-hidden=\"true\" role=\"img\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M23.1643 20L28.9572 14.2071L27.5429 12.7929L20.3358 20L27.5429 27.2071L28.9572 25.7929L23.1643 20Z\" fill=\"currentColor\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17.1643 20L22.9572 14.2071L21.5429 12.7929L14.3358 20L21.5429 27.2071L22.9572 25.7929L17.1643 20Z\" fill=\"currentColor\"/>\n </svg>\n </button>\n\n <button class=\"moj-datepicker__button moj-js-datepicker-prev-month\">\n <span class=\"govuk-visually-hidden\">Previous month</span>\n <svg width=\"44\" height=\"40\" viewBox=\"0 0 44 40\" fill=\"none\" focusable=\"false\" aria-hidden=\"true\" role=\"img\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20.5729 20L25.7865 14.2071L24.5137 12.7929L18.0273 20L24.5137 27.2071L25.7865 25.7929L20.5729 20Z\" fill=\"currentColor\"/>\n </svg>\n </button>\n </div>\n\n <h2 id=\"${titleId}\" class=\"moj-datepicker__dialog-title moj-js-datepicker-month-year\" aria-live=\"polite\">June 2020</h2>\n\n <div class=\"moj-datepicker__dialog-navbuttons\">\n <button class=\"moj-datepicker__button moj-js-datepicker-next-month\">\n <span class=\"govuk-visually-hidden\">Next month</span>\n <svg width=\"44\" height=\"40\" viewBox=\"0 0 44 40\" fill=\"none\" focusable=\"false\" aria-hidden=\"true\" role=\"img\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M23.4271 20L18.2135 14.2071L19.4863 12.7929L25.9727 20L19.4863 27.2071L18.2135 25.7929L23.4271 20Z\" fill=\"currentColor\"/>\n </svg>\n </button>\n\n <button class=\"moj-datepicker__button moj-js-datepicker-next-year\">\n <span class=\"govuk-visually-hidden\">Next year</span>\n <svg width=\"44\" height=\"40\" viewBox=\"0 0 44 40\" fill=\"none\" fill=\"none\" focusable=\"false\" aria-hidden=\"true\" role=\"img\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20.8357 20L15.0428 14.2071L16.4571 12.7929L23.6642 20L16.4571 27.2071L15.0428 25.7929L20.8357 20Z\" fill=\"currentColor\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M26.8357 20L21.0428 14.2071L22.4571 12.7929L29.6642 20L22.4571 27.2071L21.0428 25.7929L26.8357 20Z\" fill=\"currentColor\"/>\n </svg>\n </button>\n </div>\n </div>\n\n <table class=\"moj-datepicker__calendar moj-js-datepicker-grid\" role=\"grid\" aria-labelledby=\"${titleId}\">\n <thead>\n <tr></tr>\n </thead>\n\n <tbody></tbody>\n </table>\n\n <div class=\"govuk-button-group\">\n <button type=\"button\" class=\"govuk-button moj-js-datepicker-ok\">Select</button>\n <button type=\"button\" class=\"govuk-button govuk-button--secondary moj-js-datepicker-cancel\">Close</button>\n </div>`\n}\n\nDatePicker.prototype.createCalendarHeaders = function () {\n this.dayLabels.forEach((day) => {\n const html = `<th scope=\"col\"><span aria-hidden=\"true\">${day.substring(0, 3)}</span><span class=\"govuk-visually-hidden\">${day}</span></th>`\n const $headerRow = this.$dialog.querySelector('thead > tr')\n $headerRow.insertAdjacentHTML('beforeend', html)\n })\n}\n\n/**\n * Pads given number with leading zeros\n *\n * @param {number} value - The value to be padded\n * @param {number} length - The length in characters of the output\n * @returns {string}\n */\nDatePicker.prototype.leadingZeros = function (value, length = 2) {\n let ret = value.toString()\n\n while (ret.length < length) {\n ret = `0${ret}`\n }\n\n return ret\n}\n\nDatePicker.prototype.setOptions = function () {\n this.setMinAndMaxDatesOnCalendar()\n this.setExcludedDates()\n this.setExcludedDays()\n this.setLeadingZeros()\n this.setWeekStartDay()\n}\n\nDatePicker.prototype.setMinAndMaxDatesOnCalendar = function () {\n if (this.config.minDate) {\n this.minDate = this.formattedDateFromString(this.config.minDate, null)\n if (this.minDate && this.currentDate < this.minDate) {\n this.currentDate = this.minDate\n }\n }\n\n if (this.config.maxDate) {\n this.maxDate = this.formattedDateFromString(this.config.maxDate, null)\n if (this.maxDate && this.currentDate > this.maxDate) {\n this.currentDate = this.maxDate\n }\n }\n}\n\nDatePicker.prototype.setExcludedDates = function () {\n if (this.config.excludedDates) {\n this.excludedDates = this.config.excludedDates\n .replace(/\\s+/, ' ')\n .split(' ')\n .map((item) => {\n return item.includes('-')\n ? this.parseDateRangeString(item)\n : this.formattedDateFromString(item)\n })\n .flat()\n .filter((item) => item)\n }\n}\n\n/*\n * Parses a daterange string into an array of dates\n * @param {String} datestring - A daterange string in the format \"dd/mm/yyyy-dd/mm/yyyy\"\n * @returns {Date[]}\n */\nDatePicker.prototype.parseDateRangeString = function (datestring) {\n const dates = []\n const [startDate, endDate] = datestring\n .split('-')\n .map((d) => this.formattedDateFromString(d, null))\n\n if (startDate && endDate) {\n const date = new Date(startDate.getTime())\n /* eslint-disable no-unmodified-loop-condition */\n while (date <= endDate) {\n dates.push(new Date(date))\n date.setDate(date.getDate() + 1)\n }\n /* eslint-enable no-unmodified-loop-condition */\n }\n return dates\n}\n\nDatePicker.prototype.setExcludedDays = function () {\n if (this.config.excludedDays) {\n // lowercase and arrange dayLabels to put indexOf sunday == 0 for comparison\n // with getDay() function\n const weekDays = this.dayLabels.map((item) => item.toLowerCase())\n if (this.config.weekStartDay === 'monday') {\n weekDays.unshift(weekDays.pop())\n }\n\n this.excludedDays = this.config.excludedDays\n .replace(/\\s+/, ' ')\n .toLowerCase()\n .split(' ')\n .map((item) => weekDays.indexOf(item))\n .filter((item) => item !== -1)\n }\n}\n\nDatePicker.prototype.setLeadingZeros = function () {\n if (typeof this.config.leadingZeros !== 'boolean') {\n if (this.config.leadingZeros.toLowerCase() === 'true') {\n this.config.leadingZeros = true\n return\n }\n if (this.config.leadingZeros.toLowerCase() === 'false') {\n this.config.leadingZeros = false\n }\n }\n}\n\nDatePicker.prototype.setWeekStartDay = function () {\n const weekStartDayParam = this.config.weekStartDay\n if (weekStartDayParam && weekStartDayParam.toLowerCase() === 'sunday') {\n this.config.weekStartDay = 'sunday'\n // Rotate dayLabels array to put Sunday as the first item\n this.dayLabels.unshift(this.dayLabels.pop())\n } else {\n this.config.weekStartDay = 'monday'\n }\n}\n\n/**\n * Determine if a date is selecteable\n *\n * @param {Date} date - the date to check\n * @returns {boolean}\n */\nDatePicker.prototype.isExcludedDate = function (date) {\n // This comparison does not work correctly - it will exclude the mindate itself\n // see: https://github.com/ministryofjustice/moj-frontend/issues/923\n if (this.minDate && this.minDate > date) {\n return true\n }\n\n // This comparison works as expected - the maxdate will not be excluded\n if (this.maxDate && this.maxDate < date) {\n return true\n }\n\n for (const excludedDate of this.excludedDates) {\n if (date.toDateString() === excludedDate.toDateString()) {\n return true\n }\n }\n\n if (this.excludedDays.includes(date.getDay())) {\n return true\n }\n\n return false\n}\n\n/**\n * Get a Date object from a string\n *\n * @param {string} dateString - string in the format d/m/yyyy dd/mm/yyyy\n * @param {Date} fallback - date object to return if formatting fails\n * @returns {Date}\n */\nDatePicker.prototype.formattedDateFromString = function (\n dateString,\n fallback = new Date()\n) {\n let formattedDate = null\n // Accepts d/m/yyyy and dd/mm/yyyy\n const dateFormatPattern = /(\\d{1,2})([-/,. ])(\\d{1,2})\\2(\\d{4})/\n\n if (!dateFormatPattern.test(dateString)) return fallback\n\n const match = dateString.match(dateFormatPattern)\n const day = match[1]\n const month = match[3]\n const year = match[4]\n\n formattedDate = new Date(`${year}-${month}-${day}`)\n if (formattedDate instanceof Date && !isNaN(formattedDate)) {\n return formattedDate\n }\n return fallback\n}\n\n/**\n * Get a formatted date string from a Date object\n *\n * @param {Date} date - date to format to a string\n * @returns {string}\n */\nDatePicker.prototype.formattedDateFromDate = function (date) {\n if (this.config.leadingZeros) {\n return `${this.leadingZeros(date.getDate())}/${this.leadingZeros(date.getMonth() + 1)}/${date.getFullYear()}`\n }\n\n return `${date.getDate()}/${date.getMonth() + 1}/${date.getFullYear()}`\n}\n\n/**\n * Get a human readable date in the format Monday 2 March 2024\n *\n * @param {Date} date - date to format\n * @returns {string}\n */\nDatePicker.prototype.formattedDateHuman = function (date) {\n return `${this.dayLabels[(date.getDay() + 6) % 7]} ${date.getDate()} ${this.monthLabels[date.getMonth()]} ${date.getFullYear()}`\n}\n\nDatePicker.prototype.backgroundClick = function (event) {\n if (\n this.isOpen() &&\n !this.$dialog.contains(event.target) &&\n !this.$input.contains(event.target) &&\n !this.$calendarButton.contains(event.target)\n ) {\n event.preventDefault()\n this.closeDialog()\n }\n}\n\nDatePicker.prototype.firstButtonKeydown = function (event) {\n if (event.key === 'Tab' && event.shiftKey) {\n this.$lastButtonInDialog.focus()\n event.preventDefault()\n }\n}\n\nDatePicker.prototype.lastButtonKeydown = function (event) {\n if (event.key === 'Tab' && !event.shiftKey) {\n this.$firstButtonInDialog.focus()\n event.preventDefault()\n }\n}\n\n// render calendar\nDatePicker.prototype.updateCalendar = function () {\n this.$dialogTitle.innerHTML = `${this.monthLabels[this.currentDate.getMonth()]} ${this.currentDate.getFullYear()}`\n\n const day = this.currentDate\n const firstOfMonth = new Date(day.getFullYear(), day.getMonth(), 1)\n let dayOfWeek\n\n if (this.config.weekStartDay === 'monday') {\n dayOfWeek = firstOfMonth.getDay() === 0 ? 6 : firstOfMonth.getDay() - 1 // Change logic to make Monday first day of week, i.e. 0\n } else {\n dayOfWeek = firstOfMonth.getDay()\n }\n\n firstOfMonth.setDate(firstOfMonth.getDate() - dayOfWeek)\n\n const thisDay = new Date(firstOfMonth)\n\n // loop through our days\n for (let i = 0; i < this.calendarDays.length; i++) {\n const hidden = thisDay.getMonth() !== day.getMonth()\n const disabled = this.isExcludedDate(thisDay)\n\n this.calendarDays[i].update(thisDay, hidden, disabled)\n\n thisDay.setDate(thisDay.getDate() + 1)\n }\n}\n\nDatePicker.prototype.setCurrentDate = function (focus = true) {\n const { currentDate } = this\n this.calendarDays.forEach((calendarDay) => {\n calendarDay.button.classList.add('moj-datepicker__button')\n calendarDay.button.classList.add('moj-datepicker__calendar-day')\n calendarDay.button.setAttribute('tabindex', -1)\n calendarDay.button.classList.remove(this.selectedDayButtonClass)\n const calendarDayDate = calendarDay.date\n calendarDayDate.setHours(0, 0, 0, 0)\n\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n if (\n calendarDayDate.getTime() ===\n currentDate.getTime() /* && !calendarDay.button.disabled */\n ) {\n if (focus) {\n calendarDay.button.setAttribute('tabindex', 0)\n calendarDay.button.focus()\n calendarDay.button.classList.add(this.selectedDayButtonClass)\n }\n }\n\n if (\n this.inputDate &&\n calendarDayDate.getTime() === this.inputDate.getTime()\n ) {\n calendarDay.button.classList.add(this.currentDayButtonClass)\n calendarDay.button.setAttribute('aria-current', 'date')\n } else {\n calendarDay.button.classList.remove(this.currentDayButtonClass)\n calendarDay.button.removeAttribute('aria-current')\n }\n\n if (calendarDayDate.getTime() === today.getTime()) {\n calendarDay.button.classList.add(this.todayButtonClass)\n } else {\n calendarDay.button.classList.remove(this.todayButtonClass)\n }\n })\n\n // if no date is tab-able, make the first non-disabled date tab-able\n if (!focus) {\n const enabledDays = this.calendarDays.filter((calendarDay) => {\n return (\n window.getComputedStyle(calendarDay.button).display === 'block' &&\n !calendarDay.button.disabled\n )\n })\n\n enabledDays[0].button.setAttribute('tabindex', 0)\n\n this.currentDate = enabledDays[0].date\n }\n}\n\nDatePicker.prototype.selectDate = function (date) {\n if (this.isExcludedDate(date)) {\n return\n }\n\n this.$calendarButton.querySelector('span').innerText =\n `Choose date. Selected date is ${this.formattedDateHuman(date)}`\n this.$input.value = this.formattedDateFromDate(date)\n\n const changeEvent = new Event('change', { bubbles: true, cancelable: true })\n this.$input.dispatchEvent(changeEvent)\n\n this.closeDialog()\n}\n\nDatePicker.prototype.isOpen = function () {\n return this.$dialog.classList.contains('moj-datepicker__dialog--open')\n}\n\nDatePicker.prototype.toggleDialog = function (event) {\n event.preventDefault()\n if (this.isOpen()) {\n this.closeDialog()\n } else {\n this.setMinAndMaxDatesOnCalendar()\n this.openDialog()\n }\n}\n\nDatePicker.prototype.openDialog = function () {\n this.$dialog.hidden = false\n this.$dialog.classList.add('moj-datepicker__dialog--open')\n this.$calendarButton.setAttribute('aria-expanded', 'true')\n\n // position the dialog\n // if input is wider than dialog pin it to the right\n if (this.$input.offsetWidth > this.$dialog.offsetWidth) {\n this.$dialog.style.right = `0px`\n }\n this.$dialog.style.top = `${this.$input.offsetHeight + 3}px`\n\n // get the date from the input element\n this.inputDate = this.formattedDateFromString(this.$input.value)\n this.currentDate = this.inputDate\n this.currentDate.setHours(0, 0, 0, 0)\n\n this.updateCalendar()\n this.setCurrentDate()\n}\n\nDatePicker.prototype.closeDialog = function () {\n this.$dialog.hidden = true\n this.$dialog.classList.remove('moj-datepicker__dialog--open')\n this.$calendarButton.setAttribute('aria-expanded', 'false')\n this.$calendarButton.focus()\n}\n\nDatePicker.prototype.goToDate = function (date, focus) {\n const current = this.currentDate\n this.currentDate = date\n\n if (\n current.getMonth() !== this.currentDate.getMonth() ||\n current.getFullYear() !== this.currentDate.getFullYear()\n ) {\n this.updateCalendar()\n }\n\n this.setCurrentDate(focus)\n}\n\n// day navigation\nDatePicker.prototype.focusNextDay = function () {\n const date = new Date(this.currentDate)\n date.setDate(date.getDate() + 1)\n this.goToDate(date)\n}\n\nDatePicker.prototype.focusPreviousDay = function () {\n const date = new Date(this.currentDate)\n date.setDate(date.getDate() - 1)\n this.goToDate(date)\n}\n\n// week navigation\nDatePicker.prototype.focusNextWeek = function () {\n const date = new Date(this.currentDate)\n date.setDate(date.getDate() + 7)\n this.goToDate(date)\n}\n\nDatePicker.prototype.focusPreviousWeek = function () {\n const date = new Date(this.currentDate)\n date.setDate(date.getDate() - 7)\n this.goToDate(date)\n}\n\nDatePicker.prototype.focusFirstDayOfWeek = function () {\n const date = new Date(this.currentDate)\n const firstDayOfWeekIndex = this.config.weekStartDay === 'sunday' ? 0 : 1\n const dayOfWeek = date.getDay()\n const diff =\n dayOfWeek >= firstDayOfWeekIndex\n ? dayOfWeek - firstDayOfWeekIndex\n : 6 - dayOfWeek\n\n date.setDate(date.getDate() - diff)\n date.setHours(0, 0, 0, 0)\n\n this.goToDate(date)\n}\n\nDatePicker.prototype.focusLastDayOfWeek = function () {\n const date = new Date(this.currentDate)\n const lastDayOfWeekIndex = this.config.weekStartDay === 'sunday' ? 6 : 0\n const dayOfWeek = date.getDay()\n const diff =\n dayOfWeek <= lastDayOfWeekIndex\n ? lastDayOfWeekIndex - dayOfWeek\n : 7 - dayOfWeek\n\n date.setDate(date.getDate() + diff)\n date.setHours(0, 0, 0, 0)\n\n this.goToDate(date)\n}\n\n// month navigation\nDatePicker.prototype.focusNextMonth = function (event, focus = true) {\n event.preventDefault()\n const date = new Date(this.currentDate)\n date.setMonth(date.getMonth() + 1, 1)\n this.goToDate(date, focus)\n}\n\nDatePicker.prototype.focusPreviousMonth = function (event, focus = true) {\n event.preventDefault()\n const date = new Date(this.currentDate)\n date.setMonth(date.getMonth() - 1, 1)\n this.goToDate(date, focus)\n}\n\n// year navigation\nDatePicker.prototype.focusNextYear = function (event, focus = true) {\n event.preventDefault()\n const date = new Date(this.currentDate)\n date.setFullYear(date.getFullYear() + 1, date.getMonth(), 1)\n this.goToDate(date, focus)\n}\n\nDatePicker.prototype.focusPreviousYear = function (event, focus = true) {\n event.preventDefault()\n const date = new Date(this.currentDate)\n date.setFullYear(date.getFullYear() - 1, date.getMonth(), 1)\n this.goToDate(date, focus)\n}\n\n/**\n * Parse dataset\n *\n * @param {Schema} schema - Component class\n * @param {DOMStringMap} dataset - HTML element dataset\n * @returns {object} Normalised dataset\n */\nDatePicker.prototype.parseDataset = function (schema, dataset) {\n const parsed = {}\n\n for (const [field, ,] of Object.entries(schema.properties)) {\n if (field in dataset) {\n parsed[field] = dataset[field]\n }\n }\n\n return parsed\n}\n\n/**\n * Config merging function\n *\n * Takes any number of objects and combines them together, with\n * greatest priority on the LAST item passed in.\n *\n * @param {...{ [key: string]: unknown }} configObjects - Config objects to merge\n * @returns {{ [key: string]: unknown }} A merged config object\n */\nDatePicker.prototype.mergeConfigs = function (...configObjects) {\n const formattedConfigObject = {}\n\n // Loop through each of the passed objects\n for (const configObject of configObjects) {\n for (const key of Object.keys(configObject)) {\n const option = formattedConfigObject[key]\n const override = configObject[key]\n\n // Push their keys one-by-one into formattedConfigObject. Any duplicate\n // keys with object values will be merged, otherwise the new value will\n // override the existing value.\n if (typeof option === 'object' && typeof override === 'object') {\n // @ts-expect-error Index signature for type 'string' is missing\n formattedConfigObject[key] = this.mergeConfigs(option, override)\n } else {\n formattedConfigObject[key] = override\n }\n }\n }\n\n return formattedConfigObject\n}\n\n/**\n *\n * @param {HTMLElement} button\n * @param {number} index\n * @param {number} row\n * @param {number} column\n * @param {DatePicker} picker\n * @class\n */\nfunction DSCalendarDay(button, index, row, column, picker) {\n this.index = index\n this.row = row\n this.column = column\n this.button = button\n this.picker = picker\n\n this.date = new Date()\n}\n\nDSCalendarDay.prototype.init = function () {\n this.button.addEventListener('keydown', this.keyPress.bind(this))\n this.button.addEventListener('click', this.click.bind(this))\n}\n\n/**\n * @param {Date} day - the Date for the calendar day\n * @param {boolean} hidden - visibility of the day\n * @param {boolean} disabled - is the day selectable or excluded\n */\nDSCalendarDay.prototype.update = function (day, hidden, disabled) {\n const label = day.getDate()\n let accessibleLabel = this.picker.formattedDateHuman(day)\n\n if (disabled) {\n this.button.setAttribute('aria-disabled', true)\n accessibleLabel = `Excluded date, ${accessibleLabel}`\n } else {\n this.button.removeAttribute('aria-disabled')\n }\n\n if (hidden) {\n this.button.style.display = 'none'\n } else {\n this.button.style.display = 'block'\n }\n this.button.setAttribute(\n 'data-testid',\n this.picker.formattedDateFromDate(day)\n )\n\n this.button.innerHTML = `<span class=\"govuk-visually-hidden\">${accessibleLabel}</span><span aria-hidden=\"true\">${label}</span>`\n this.date = new Date(day)\n}\n\nDSCalendarDay.prototype.click = function (event) {\n this.picker.goToDate(this.date)\n this.picker.selectDate(this.date)\n\n event.stopPropagation()\n event.preventDefault()\n}\n\nDSCalendarDay.prototype.keyPress = function (event) {\n let calendarNavKey = true\n\n switch (event.key) {\n case 'ArrowLeft':\n this.picker.focusPreviousDay()\n break\n case 'ArrowRight':\n this.picker.focusNextDay()\n break\n case 'ArrowUp':\n this.picker.focusPreviousWeek()\n break\n case 'ArrowDown':\n this.picker.focusNextWeek()\n break\n case 'Home':\n this.picker.focusFirstDayOfWeek()\n break\n case 'End':\n this.picker.focusLastDayOfWeek()\n break\n case 'PageUp':\n // eslint-disable-next-line no-unused-expressions\n event.shiftKey\n ? this.picker.focusPreviousYear(event)\n : this.picker.focusPreviousMonth(event)\n break\n case 'PageDown':\n // eslint-disable-next-line no-unused-expressions\n event.shiftKey\n ? this.picker.focusNextYear(event)\n : this.picker.focusNextMonth(event)\n break\n default:\n calendarNavKey = false\n break\n }\n\n if (calendarNavKey) {\n event.preventDefault()\n event.stopPropagation()\n }\n}\n\n/**\n * Schema for component config\n *\n * @typedef {object} Schema\n * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties\n */\n\n/**\n * Schema property for component config\n *\n * @typedef {object} SchemaProperty\n * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type\n */\n","import $ from 'jquery'\n\nexport function FilterToggleButton(options) {\n this.options = options\n this.container = $(this.options.toggleButton.container)\n this.filterContainer = $(this.options.filter.container)\n\n this.createToggleButton()\n this.setupResponsiveChecks()\n this.filterContainer.attr('tabindex', '-1')\n if (this.options.startHidden) {\n this.hideMenu()\n }\n}\n\nFilterToggleButton.prototype.setupResponsiveChecks = function () {\n this.mq = window.matchMedia(this.options.bigModeMediaQuery)\n this.mq.addListener($.proxy(this, 'checkMode'))\n this.checkMode(this.mq)\n}\n\nFilterToggleButton.prototype.createToggleButton = function () {\n this.menuButton = $(\n `<button class=\"govuk-button ${this.options.toggleButton.classes}\" type=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">${this.options.toggleButton.showText}</button>`\n )\n this.menuButton.on('click', $.proxy(this, 'onMenuButtonClick'))\n this.container.append(this.menuButton)\n}\n\nFilterToggleButton.prototype.checkMode = function (mq) {\n if (mq.matches) {\n this.enableBigMode()\n } else {\n this.enableSmallMode()\n }\n}\n\nFilterToggleButton.prototype.enableBigMode = function () {\n this.showMenu()\n this.removeCloseButton()\n}\n\nFilterToggleButton.prototype.enableSmallMode = function () {\n this.hideMenu()\n this.addCloseButton()\n}\n\nFilterToggleButton.prototype.addCloseButton = function () {\n if (this.options.closeButton) {\n this.closeButton = $(\n `<button class=\"moj-filter__close\" type=\"button\">${this.options.closeButton.text}</button>`\n )\n this.closeButton.on('click', $.proxy(this, 'onCloseClick'))\n $(this.options.closeButton.container).append(this.closeButton)\n }\n}\n\nFilterToggleButton.prototype.onCloseClick = function () {\n this.hideMenu()\n this.menuButton.focus()\n}\n\nFilterToggleButton.prototype.removeCloseButton = function () {\n if (this.closeButton) {\n this.closeButton.remove()\n this.closeButton = null\n }\n}\n\nFilterToggleButton.prototype.hideMenu = function () {\n this.menuButton.attr('aria-expanded', 'false')\n this.filterContainer.addClass('moj-js-hidden')\n this.menuButton.text(this.options.toggleButton.showText)\n}\n\nFilterToggleButton.prototype.showMenu = function () {\n this.menuButton.attr('aria-expanded', 'true')\n this.filterContainer.removeClass('moj-js-hidden')\n this.menuButton.text(this.options.toggleButton.hideText)\n}\n\nFilterToggleButton.prototype.onMenuButtonClick = function () {\n this.toggle()\n}\n\nFilterToggleButton.prototype.toggle = function () {\n if (this.menuButton.attr('aria-expanded') === 'false') {\n this.showMenu()\n this.filterContainer.get(0).focus()\n } else {\n this.hideMenu()\n }\n}\n","import $ from 'jquery'\n\nimport {\n dragAndDropSupported,\n fileApiSupported,\n formDataSupported\n} from '../../helpers.mjs'\n\nexport function MultiFileUpload(params) {\n if (!(dragAndDropSupported() && formDataSupported() && fileApiSupported())) {\n return\n }\n\n this.defaultParams = {\n uploadFileEntryHook: $.noop,\n uploadFileExitHook: $.noop,\n uploadFileErrorHook: $.noop,\n fileDeleteHook: $.noop,\n uploadStatusText: 'Uploading files, please wait',\n dropzoneHintText: 'Drag and drop files here or',\n dropzoneButtonText: 'Choose files'\n }\n\n this.params = $.extend({}, this.defaultParams, params)\n this.container = $(this.params.container)\n\n this.container.addClass('moj-multi-file-upload--enhanced')\n\n this.feedbackContainer = this.container.find(\n '.moj-multi-file__uploaded-files'\n )\n this.setupFileInput()\n this.setupDropzone()\n this.setupLabel()\n this.setupStatusBox()\n this.container.on(\n 'click',\n '.moj-multi-file-upload__delete',\n $.proxy(this, 'onFileDeleteClick')\n )\n}\n\nMultiFileUpload.prototype.setupDropzone = function () {\n this.fileInput.wrap('<div class=\"moj-multi-file-upload__dropzone\" />')\n this.dropzone = this.container.find('.moj-multi-file-upload__dropzone')\n this.dropzone.on('dragover', $.proxy(this, 'onDragOver'))\n this.dropzone.on('dragleave', $.proxy(this, 'onDragLeave'))\n this.dropzone.on('drop', $.proxy(this, 'onDrop'))\n}\n\nMultiFileUpload.prototype.setupLabel = function () {\n this.label = $(\n `<label for=\"${this.fileInput[0].id}\" class=\"govuk-button govuk-button--secondary\">${this.params.dropzoneButtonText}</label>`\n )\n this.dropzone.append(\n `<p class=\"govuk-body\">${this.params.dropzoneHintText}</p>`\n )\n this.dropzone.append(this.label)\n}\n\nMultiFileUpload.prototype.setupFileInput = function () {\n this.fileInput = this.container.find('.moj-multi-file-upload__input')\n this.fileInput.on('change', $.proxy(this, 'onFileChange'))\n this.fileInput.on('focus', $.proxy(this, 'onFileFocus'))\n this.fileInput.on('blur', $.proxy(this, 'onFileBlur'))\n}\n\nMultiFileUpload.prototype.setupStatusBox = function () {\n this.status = $(\n '<div aria-live=\"polite\" role=\"status\" class=\"govuk-visually-hidden\" />'\n )\n this.dropzone.append(this.status)\n}\n\nMultiFileUpload.prototype.onDragOver = function (e) {\n e.preventDefault()\n this.dropzone.addClass('moj-multi-file-upload--dragover')\n}\n\nMultiFileUpload.prototype.onDragLeave = function () {\n this.dropzone.removeClass('moj-multi-file-upload--dragover')\n}\n\nMultiFileUpload.prototype.onDrop = function (e) {\n e.preventDefault()\n this.dropzone.removeClass('moj-multi-file-upload--dragover')\n this.feedbackContainer.removeClass('moj-hidden')\n this.status.html(this.params.uploadStatusText)\n this.uploadFiles(e.originalEvent.dataTransfer.files)\n}\n\nMultiFileUpload.prototype.uploadFiles = function (files) {\n for (let i = 0; i < files.length; i++) {\n this.uploadFile(files[i])\n }\n}\n\nMultiFileUpload.prototype.onFileChange = function (e) {\n this.feedbackContainer.removeClass('moj-hidden')\n this.status.html(this.params.uploadStatusText)\n this.uploadFiles(e.currentTarget.files)\n this.fileInput.replaceWith($(e.currentTarget).val('').clone(true))\n this.setupFileInput()\n this.fileInput.get(0).focus()\n}\n\nMultiFileUpload.prototype.onFileFocus = function (e) {\n this.label.addClass('moj-multi-file-upload--focused')\n}\n\nMultiFileUpload.prototype.onFileBlur = function (e) {\n this.label.removeClass('moj-multi-file-upload--focused')\n}\n\nMultiFileUpload.prototype.getSuccessHtml = function (success) {\n return `<span class=\"moj-multi-file-upload__success\"> <svg class=\"moj-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\"><path d=\"M25,6.2L8.7,23.2L0,14.1l4-4.2l4.7,4.9L21,2L25,6.2z\"/></svg>${success.messageHtml}</span>`\n}\n\nMultiFileUpload.prototype.getErrorHtml = function (error) {\n return `<span class=\"moj-multi-file-upload__error\"> <svg class=\"moj-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\"><path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\"/></svg>${error.message}</span>`\n}\n\nMultiFileUpload.prototype.getFileRowHtml = function (file) {\n const html = `\n <div class=\"govuk-summary-list__row moj-multi-file-upload__row\">\n <div class=\"govuk-summary-list__value moj-multi-file-upload__message\">\n <span class=\"moj-multi-file-upload__filename\">${file.name}</span>\n <span class=\"moj-multi-file-upload__progress\">0%</span>\n </div>\n <div class=\"govuk-summary-list__actions moj-multi-file-upload__actions\"></div>\n </div>`\n return html\n}\n\nMultiFileUpload.prototype.getDeleteButtonHtml = function (file) {\n return `<button class=\"moj-multi-file-upload__delete govuk-button govuk-button--secondary govuk-!-margin-bottom-0\" type=\"button\" name=\"delete\" value=\"${file.filename}\">\n Delete <span class=\"govuk-visually-hidden\">${file.originalname}</span>\n </button>`\n}\n\nMultiFileUpload.prototype.uploadFile = function (file) {\n this.params.uploadFileEntryHook(this, file)\n const item = $(this.getFileRowHtml(file))\n const formData = new FormData()\n formData.append('documents', file)\n this.feedbackContainer.find('.moj-multi-file-upload__list').append(item)\n\n $.ajax({\n url: this.params.uploadUrl,\n type: 'post',\n data: formData,\n processData: false,\n contentType: false,\n success: $.proxy(function (response) {\n if (response.error) {\n item\n .find('.moj-multi-file-upload__message')\n .html(this.getErrorHtml(response.error))\n this.status.html(response.error.message)\n } else {\n item\n .find('.moj-multi-file-upload__message')\n .html(this.getSuccessHtml(response.success))\n this.status.html(response.success.messageText)\n }\n item\n .find('.moj-multi-file-upload__actions')\n .append(this.getDeleteButtonHtml(response.file))\n this.params.uploadFileExitHook(this, file, response)\n }, this),\n error: $.proxy(function (jqXHR, textStatus, errorThrown) {\n this.params.uploadFileErrorHook(\n this,\n file,\n jqXHR,\n textStatus,\n errorThrown\n )\n }, this),\n xhr: function () {\n const xhr = new XMLHttpRequest()\n xhr.upload.addEventListener(\n 'progress',\n function (e) {\n if (e.lengthComputable) {\n let percentComplete = e.loaded / e.total\n percentComplete = parseInt(percentComplete * 100, 10)\n item\n .find('.moj-multi-file-upload__progress')\n .text(` ${percentComplete}%`)\n }\n },\n false\n )\n return xhr\n }\n })\n}\n\nMultiFileUpload.prototype.onFileDeleteClick = function (e) {\n e.preventDefault() // if user refreshes page and then deletes\n const button = $(e.currentTarget)\n const data = {}\n data[button[0].name] = button[0].value\n $.ajax({\n url: this.params.deleteUrl,\n type: 'post',\n dataType: 'json',\n data,\n success: $.proxy(function (response) {\n if (response.error) {\n // handle error\n } else {\n button.parents('.moj-multi-file-upload__row').remove()\n if (\n this.feedbackContainer.find('.moj-multi-file-upload__row').length ===\n 0\n ) {\n this.feedbackContainer.addClass('moj-hidden')\n }\n }\n this.params.fileDeleteHook(this, response)\n }, this)\n })\n}\n","import $ from 'jquery'\n\nexport function MultiSelect(options) {\n this.container = $(options.container)\n\n if (this.container.data('moj-multi-select-initialised')) {\n return\n }\n\n this.container.data('moj-multi-select-initialised', true)\n\n const idPrefix = options.id_prefix\n let allId = 'checkboxes-all'\n if (typeof idPrefix !== 'undefined') {\n allId = `${idPrefix}checkboxes-all`\n }\n\n this.toggle = $(this.getToggleHtml(allId))\n this.toggleButton = this.toggle.find('input')\n this.toggleButton.on('click', $.proxy(this, 'onButtonClick'))\n this.container.append(this.toggle)\n this.checkboxes = $(options.checkboxes)\n this.checkboxes.on('click', $.proxy(this, 'onCheckboxClick'))\n this.checked = options.checked || false\n}\n\nMultiSelect.prototype.getToggleHtml = function (allId) {\n let html = ''\n html +=\n '<div class=\"govuk-checkboxes__item govuk-checkboxes--small moj-multi-select__checkbox\">'\n html += ` <input type=\"checkbox\" class=\"govuk-checkboxes__input\" id=\"${allId}\">`\n html += ` <label class=\"govuk-label govuk-checkboxes__label moj-multi-select__toggle-label\" for=\"${allId}\">`\n html += ' <span class=\"govuk-visually-hidden\">Select all</span>'\n html += ' </label>'\n html += '</div>'\n return html\n}\n\nMultiSelect.prototype.onButtonClick = function (e) {\n if (this.checked) {\n this.uncheckAll()\n this.toggleButton[0].checked = false\n } else {\n this.checkAll()\n this.toggleButton[0].checked = true\n }\n}\n\nMultiSelect.prototype.checkAll = function () {\n this.checkboxes.each(\n $.proxy(function (index, el) {\n el.checked = true\n }, this)\n )\n this.checked = true\n}\n\nMultiSelect.prototype.uncheckAll = function () {\n this.checkboxes.each(\n $.proxy(function (index, el) {\n el.checked = false\n }, this)\n )\n this.checked = false\n}\n\nMultiSelect.prototype.onCheckboxClick = function (e) {\n if (!e.target.checked) {\n this.toggleButton[0].checked = false\n this.checked = false\n } else {\n if (this.checkboxes.filter(':checked').length === this.checkboxes.length) {\n this.toggleButton[0].checked = true\n this.checked = true\n }\n }\n}\n","import $ from 'jquery'\n\nexport function PasswordReveal(element) {\n this.el = element\n const $el = $(this.el)\n\n if ($el.data('moj-password-reveal-initialised')) {\n return\n }\n\n $el.data('moj-password-reveal-initialised', true)\n $el.attr('spellcheck', 'false')\n\n $el.wrap('<div class=\"moj-password-reveal\"></div>')\n this.container = $(this.el).parent()\n this.createButton()\n}\n\nPasswordReveal.prototype.createButton = function () {\n this.button = $(\n '<button type=\"button\" class=\"govuk-button govuk-button--secondary moj-password-reveal__button\">Show <span class=\"govuk-visually-hidden\">password</span></button>'\n )\n this.container.append(this.button)\n this.button.on('click', $.proxy(this, 'onButtonClick'))\n}\n\nPasswordReveal.prototype.onButtonClick = function () {\n if (this.el.type === 'password') {\n this.el.type = 'text'\n this.button.html('Hide <span class=\"govuk-visually-hidden\">password</span>')\n } else {\n this.el.type = 'password'\n this.button.html('Show <span class=\"govuk-visually-hidden\">password</span>')\n }\n}\n","import $ from 'jquery'\n\nexport function RichTextEditor(options) {\n if (!('contentEditable' in document.documentElement)) {\n return\n }\n\n this.options = options\n this.options.toolbar = this.options.toolbar || {\n bold: false,\n italic: false,\n underline: false,\n bullets: true,\n numbers: true\n }\n this.textarea = this.options.textarea\n this.container = $(this.textarea).parent()\n\n if (this.container.data('moj-rich-text-editor-initialised')) {\n return\n }\n\n this.container.data('moj-rich-text-editor-initialised', true)\n\n this.createToolbar()\n this.hideDefault()\n this.configureToolbar()\n this.keys = {\n left: 37,\n right: 39,\n up: 38,\n down: 40\n }\n this.container.on(\n 'click',\n '.moj-rich-text-editor__toolbar-button',\n $.proxy(this, 'onButtonClick')\n )\n this.container\n .find('.moj-rich-text-editor__content')\n .on('input', $.proxy(this, 'onEditorInput'))\n this.container.find('label').on('click', $.proxy(this, 'onLabelClick'))\n this.toolbar.on('keydown', $.proxy(this, 'onToolbarKeydown'))\n}\n\nRichTextEditor.prototype.onToolbarKeydown = function (e) {\n let focusableButton\n switch (e.keyCode) {\n case this.keys.right:\n case this.keys.down: {\n focusableButton = this.toolbar.find('button[tabindex=0]')\n const nextButton = focusableButton.next('button')\n if (nextButton[0]) {\n nextButton.focus()\n focusableButton.attr('tabindex', '-1')\n nextButton.attr('tabindex', '0')\n }\n break\n }\n case this.keys.left:\n case this.keys.up: {\n focusableButton = this.toolbar.find('button[tabindex=0]')\n const previousButton = focusableButton.prev('button')\n if (previousButton[0]) {\n previousButton.focus()\n focusableButton.attr('tabindex', '-1')\n previousButton.attr('tabindex', '0')\n }\n break\n }\n }\n}\n\nRichTextEditor.prototype.getToolbarHtml = function () {\n let html = ''\n\n html += '<div class=\"moj-rich-text-editor__toolbar\" role=\"toolbar\">'\n\n if (this.options.toolbar.bold) {\n html +=\n '<button class=\"moj-rich-text-editor__toolbar-button moj-rich-text-editor__toolbar-button--bold\" type=\"button\" data-command=\"bold\"><span class=\"govuk-visually-hidden\">Bold</span></button>'\n }\n\n if (this.options.toolbar.italic) {\n html +=\n '<button class=\"moj-rich-text-editor__toolbar-button moj-rich-text-editor__toolbar-button--italic\" type=\"button\" data-command=\"italic\"><span class=\"govuk-visually-hidden\">Italic</span></button>'\n }\n\n if (this.options.toolbar.underline) {\n html +=\n '<button class=\"moj-rich-text-editor__toolbar-button moj-rich-text-editor__toolbar-button--underline\" type=\"button\" data-command=\"underline\"><span class=\"govuk-visually-hidden\">Underline</span></button>'\n }\n\n if (this.options.toolbar.bullets) {\n html +=\n '<button class=\"moj-rich-text-editor__toolbar-button moj-rich-text-editor__toolbar-button--unordered-list\" type=\"button\" data-command=\"insertUnorderedList\"><span class=\"govuk-visually-hidden\">Unordered list</span></button>'\n }\n\n if (this.options.toolbar.numbers) {\n html +=\n '<button class=\"moj-rich-text-editor__toolbar-button moj-rich-text-editor__toolbar-button--ordered-list\" type=\"button\" data-command=\"insertOrderedList\"><span class=\"govuk-visually-hidden\">Ordered list</span></button>'\n }\n\n html += '</div>'\n return html\n}\n\nRichTextEditor.prototype.getEnhancedHtml = function (val) {\n return `${this.getToolbarHtml()}<div class=\"govuk-textarea moj-rich-text-editor__content\" contenteditable=\"true\" spellcheck=\"false\"></div>`\n}\n\nRichTextEditor.prototype.hideDefault = function () {\n this.textarea = this.container.find('textarea')\n this.textarea.addClass('govuk-visually-hidden')\n this.textarea.attr('aria-hidden', true)\n this.textarea.attr('tabindex', '-1')\n}\n\nRichTextEditor.prototype.createToolbar = function () {\n this.toolbar = document.createElement('div')\n this.toolbar.className = 'moj-rich-text-editor'\n this.toolbar.innerHTML = this.getEnhancedHtml()\n this.container.append(this.toolbar)\n this.toolbar = this.container.find('.moj-rich-text-editor__toolbar')\n this.container\n .find('.moj-rich-text-editor__content')\n .html(this.textarea.val())\n}\n\nRichTextEditor.prototype.configureToolbar = function () {\n this.buttons = this.container.find('.moj-rich-text-editor__toolbar-button')\n this.buttons.prop('tabindex', '-1')\n const firstTab = this.buttons.first()\n firstTab.prop('tabindex', '0')\n}\n\nRichTextEditor.prototype.onButtonClick = function (e) {\n document.execCommand($(e.currentTarget).data('command'), false, null)\n}\n\nRichTextEditor.prototype.getContent = function () {\n return this.container.find('.moj-rich-text-editor__content').html()\n}\n\nRichTextEditor.prototype.onEditorInput = function (e) {\n this.updateTextarea()\n}\n\nRichTextEditor.prototype.updateTextarea = function () {\n document.execCommand('defaultParagraphSeparator', false, 'p')\n this.textarea.val(this.getContent())\n}\n\nRichTextEditor.prototype.onLabelClick = function (e) {\n e.preventDefault()\n this.container.find('.moj-rich-text-editor__content').focus()\n}\n","import $ from 'jquery'\n\nexport function SearchToggle(options) {\n this.options = options\n this.container = $(this.options.search.container)\n this.toggleButtonContainer = $(this.options.toggleButton.container)\n\n if (this.container.data('moj-search-toggle-initialised')) {\n return\n }\n\n this.container.data('moj-search-toggle-initialised', true)\n\n const svg =\n '<svg viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" class=\"moj-search-toggle__button__icon\"><path d=\"M7.433,12.5790048 C6.06762625,12.5808611 4.75763941,12.0392925 3.79217348,11.0738265 C2.82670755,10.1083606 2.28513891,8.79837375 2.28699522,7.433 C2.28513891,6.06762625 2.82670755,4.75763941 3.79217348,3.79217348 C4.75763941,2.82670755 6.06762625,2.28513891 7.433,2.28699522 C8.79837375,2.28513891 10.1083606,2.82670755 11.0738265,3.79217348 C12.0392925,4.75763941 12.5808611,6.06762625 12.5790048,7.433 C12.5808611,8.79837375 12.0392925,10.1083606 11.0738265,11.0738265 C10.1083606,12.0392925 8.79837375,12.5808611 7.433,12.5790048 L7.433,12.5790048 Z M14.293,12.579 L13.391,12.579 L13.071,12.269 C14.2300759,10.9245158 14.8671539,9.20813198 14.866,7.433 C14.866,3.32786745 11.5381325,-1.65045755e-15 7.433,-1.65045755e-15 C3.32786745,-1.65045755e-15 -1.65045755e-15,3.32786745 -1.65045755e-15,7.433 C-1.65045755e-15,11.5381325 3.32786745,14.866 7.433,14.866 C9.208604,14.8671159 10.9253982,14.2296624 12.27,13.07 L12.579,13.39 L12.579,14.294 L18.296,20 L20,18.296 L14.294,12.579 L14.293,12.579 Z\"></path></svg>'\n\n this.toggleButton = $(\n `<button class=\"moj-search-toggle__button\" type=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">\n ${this.options.toggleButton.text} ${svg}\n </button>`\n )\n this.toggleButton.on('click', $.proxy(this, 'onToggleButtonClick'))\n this.toggleButtonContainer.append(this.toggleButton)\n $(document).on('click', this.onDocumentClick.bind(this))\n $(document).on('focusin', this.onDocumentClick.bind(this))\n}\n\nSearchToggle.prototype.showMenu = function () {\n this.toggleButton.attr('aria-expanded', 'true')\n this.container.removeClass('moj-js-hidden')\n this.container.find('input').first().get(0).focus()\n}\n\nSearchToggle.prototype.hideMenu = function () {\n this.container.addClass('moj-js-hidden')\n this.toggleButton.attr('aria-expanded', 'false')\n}\n\nSearchToggle.prototype.onToggleButtonClick = function () {\n if (this.toggleButton.attr('aria-expanded') === 'false') {\n this.showMenu()\n } else {\n this.hideMenu()\n }\n}\n\nSearchToggle.prototype.onDocumentClick = function (e) {\n if (\n !$.contains(this.toggleButtonContainer[0], e.target) &&\n !$.contains(this.container[0], e.target)\n ) {\n this.hideMenu()\n }\n}\n","import $ from 'jquery'\n\nexport function SortableTable(params) {\n this.table = $(params.table)\n\n if (this.table.data('moj-search-toggle-initialised')) {\n return\n }\n\n this.table.data('moj-search-toggle-initialised', true)\n\n this.setupOptions(params)\n this.body = this.table.find('tbody')\n this.createHeadingButtons()\n this.createStatusBox()\n this.initialiseSortedColumn()\n this.table.on('click', 'th button', $.proxy(this, 'onSortButtonClick'))\n}\n\nSortableTable.prototype.setupOptions = function (params) {\n params = params || {}\n this.statusMessage = params.statusMessage || 'Sort by %heading% (%direction%)'\n this.ascendingText = params.ascendingText || 'ascending'\n this.descendingText = params.descendingText || 'descending'\n}\n\nSortableTable.prototype.createHeadingButtons = function () {\n const headings = this.table.find('thead th')\n let heading\n for (let i = 0; i < headings.length; i++) {\n heading = $(headings[i])\n if (heading.attr('aria-sort')) {\n this.createHeadingButton(heading, i)\n }\n }\n}\n\nSortableTable.prototype.createHeadingButton = function (heading, i) {\n const text = heading.text()\n const button = $(`<button type=\"button\" data-index=\"${i}\">${text}</button>`)\n heading.text('')\n heading.append(button)\n}\n\nSortableTable.prototype.createStatusBox = function () {\n this.status = $(\n '<div aria-live=\"polite\" role=\"status\" aria-atomic=\"true\" class=\"govuk-visually-hidden\" />'\n )\n this.table.parent().append(this.status)\n}\n\nSortableTable.prototype.initialiseSortedColumn = function () {\n const rows = this.getTableRowsArray()\n\n this.table\n .find('th')\n .filter('[aria-sort=\"ascending\"], [aria-sort=\"descending\"]')\n .first()\n .each((index, el) => {\n const sortDirection = $(el).attr('aria-sort')\n const columnNumber = $(el).find('button').attr('data-index')\n const sortedRows = this.sort(rows, columnNumber, sortDirection)\n this.addRows(sortedRows)\n })\n}\n\nSortableTable.prototype.onSortButtonClick = function (e) {\n const columnNumber = e.currentTarget.getAttribute('data-index')\n const sortDirection = $(e.currentTarget).parent().attr('aria-sort')\n let newSortDirection\n if (sortDirection === 'none' || sortDirection === 'descending') {\n newSortDirection = 'ascending'\n } else {\n newSortDirection = 'descending'\n }\n const rows = this.getTableRowsArray()\n const sortedRows = this.sort(rows, columnNumber, newSortDirection)\n this.addRows(sortedRows)\n this.removeButtonStates()\n this.updateButtonState($(e.currentTarget), newSortDirection)\n}\n\nSortableTable.prototype.updateButtonState = function (button, direction) {\n button.parent().attr('aria-sort', direction)\n let message = this.statusMessage\n message = message.replace(/%heading%/, button.text())\n message = message.replace(/%direction%/, this[`${direction}Text`])\n this.status.text(message)\n}\n\nSortableTable.prototype.removeButtonStates = function () {\n this.table.find('thead th').attr('aria-sort', 'none')\n}\n\nSortableTable.prototype.addRows = function (rows) {\n for (let i = 0; i < rows.length; i++) {\n this.body.append(rows[i])\n }\n}\n\nSortableTable.prototype.getTableRowsArray = function () {\n const rows = []\n const trs = this.body.find('tr')\n for (let i = 0; i < trs.length; i++) {\n rows.push(trs[i])\n }\n return rows\n}\n\nSortableTable.prototype.sort = function (rows, columnNumber, sortDirection) {\n const newRows = rows.sort(\n function (rowA, rowB) {\n const tdA = $(rowA).find('td,th').eq(columnNumber)\n const tdB = $(rowB).find('td,th').eq(columnNumber)\n\n const valueA =\n sortDirection === 'ascending'\n ? this.getCellValue(tdA)\n : this.getCellValue(tdB)\n const valueB =\n sortDirection === 'ascending'\n ? this.getCellValue(tdB)\n : this.getCellValue(tdA)\n\n if (typeof valueA === 'string' || typeof valueB === 'string')\n return valueA.toString().localeCompare(valueB.toString())\n return valueA - valueB\n }.bind(this)\n )\n return newRows\n}\n\nSortableTable.prototype.getCellValue = function (cell) {\n const val = cell.attr('data-sort-value') || cell.html()\n\n const valAsNumber = Number(val)\n return isNaN(valAsNumber) ? val : valAsNumber\n}\n","export const version = '0.0.0-development'\n","/* eslint-disable no-new */\n\nimport $ from 'jquery'\n\nimport { AddAnother } from './components/add-another/add-another.mjs'\nimport { Alert } from './components/alert/alert.mjs'\nimport { ButtonMenu } from './components/button-menu/button-menu.mjs'\nimport { DatePicker } from './components/date-picker/date-picker.mjs'\nimport { FilterToggleButton } from './components/filter-toggle-button/filter-toggle-button.mjs'\nimport { MultiFileUpload } from './components/multi-file-upload/multi-file-upload.mjs'\nimport { MultiSelect } from './components/multi-select/multi-select.mjs'\nimport { PasswordReveal } from './components/password-reveal/password-reveal.mjs'\nimport { RichTextEditor } from './components/rich-text-editor/rich-text-editor.mjs'\nimport { SearchToggle } from './components/search-toggle/search-toggle.mjs'\nimport { SortableTable } from './components/sortable-table/sortable-table.mjs'\nimport { nodeListForEach } from './helpers.mjs'\nimport { version } from './version.mjs'\n\nfunction initAll(options) {\n // Set the options to an empty object by default if no options are passed.\n options = typeof options !== 'undefined' ? options : {}\n\n // Allow the user to initialise MOJ Frontend in only certain sections of the page\n // Defaults to the entire document if nothing is set.\n const scope = typeof options.scope !== 'undefined' ? options.scope : document\n\n const $addAnothers = scope.querySelectorAll('[data-module=\"moj-add-another\"]')\n\n nodeListForEach($addAnothers, function ($addAnother) {\n new AddAnother($addAnother)\n })\n\n const $multiSelects = scope.querySelectorAll(\n '[data-module=\"moj-multi-select\"]'\n )\n\n nodeListForEach($multiSelects, function ($multiSelect) {\n new MultiSelect({\n container: $multiSelect.querySelector(\n $multiSelect.getAttribute('data-multi-select-checkbox')\n ),\n checkboxes: $multiSelect.querySelectorAll(\n 'tbody .govuk-checkboxes__input'\n ),\n id_prefix: $multiSelect.getAttribute('data-multi-select-idprefix')\n })\n })\n\n const $passwordReveals = scope.querySelectorAll(\n '[data-module=\"moj-password-reveal\"]'\n )\n\n nodeListForEach($passwordReveals, function ($passwordReveal) {\n new PasswordReveal($passwordReveal)\n })\n\n const $richTextEditors = scope.querySelectorAll(\n '[data-module=\"moj-rich-text-editor\"]'\n )\n\n nodeListForEach($richTextEditors, function ($richTextEditor) {\n const options = {\n textarea: $($richTextEditor)\n }\n\n const toolbarAttr = $richTextEditor.getAttribute(\n 'data-moj-rich-text-editor-toolbar'\n )\n\n if (toolbarAttr) {\n const toolbar = toolbarAttr.split(',')\n\n options.toolbar = {}\n\n for (const item in toolbar) {\n options.toolbar[toolbar[item]] = true\n }\n }\n\n new RichTextEditor(options)\n })\n\n const $searchToggles = scope.querySelectorAll(\n '[data-module=\"moj-search-toggle\"]'\n )\n\n nodeListForEach($searchToggles, function ($searchToggle) {\n new SearchToggle({\n toggleButton: {\n container: $($searchToggle.querySelector('.moj-search-toggle__toggle')),\n text: $searchToggle.getAttribute('data-moj-search-toggle-text')\n },\n search: {\n container: $($searchToggle.querySelector('.moj-search'))\n }\n })\n })\n\n const $sortableTables = scope.querySelectorAll(\n '[data-module=\"moj-sortable-table\"]'\n )\n\n nodeListForEach($sortableTables, function ($table) {\n new SortableTable({\n table: $table\n })\n })\n\n const $datepickers = scope.querySelectorAll('[data-module=\"moj-date-picker\"]')\n\n nodeListForEach($datepickers, function ($datepicker) {\n new DatePicker($datepicker, {}).init()\n })\n\n const $buttonMenus = scope.querySelectorAll('[data-module=\"moj-button-menu\"]')\n\n nodeListForEach($buttonMenus, function ($buttonmenu) {\n new ButtonMenu($buttonmenu, {}).init()\n })\n\n const $alerts = scope.querySelectorAll('[data-module=\"moj-alert\"]')\n nodeListForEach($alerts, function ($alert) {\n new Alert($alert, {}).init()\n })\n}\n\nexport {\n initAll,\n version,\n\n // Components\n AddAnother,\n Alert,\n ButtonMenu,\n DatePicker,\n FilterToggleButton,\n MultiFileUpload,\n MultiSelect,\n PasswordReveal,\n RichTextEditor,\n SearchToggle,\n SortableTable\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.MOJFrontend = global.MOJFrontend || {}));
|
|
5
|
-
})(this, (function (exports) { 'use strict';
|
|
6
|
-
|
|
7
|
-
function AddAnother(container) {
|
|
8
|
-
this.container = $(container);
|
|
9
|
-
|
|
10
|
-
if (this.container.data('moj-add-another-initialised')) {
|
|
11
|
-
return
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
this.container.data('moj-add-another-initialised', true);
|
|
15
|
-
|
|
16
|
-
this.container.on(
|
|
17
|
-
'click',
|
|
18
|
-
'.moj-add-another__remove-button',
|
|
19
|
-
$.proxy(this, 'onRemoveButtonClick')
|
|
20
|
-
);
|
|
21
|
-
this.container.on(
|
|
22
|
-
'click',
|
|
23
|
-
'.moj-add-another__add-button',
|
|
24
|
-
$.proxy(this, 'onAddButtonClick')
|
|
25
|
-
);
|
|
26
|
-
this.container
|
|
27
|
-
.find('.moj-add-another__add-button, moj-add-another__remove-button')
|
|
28
|
-
.prop('type', 'button');
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
AddAnother.prototype.onAddButtonClick = function (e) {
|
|
32
|
-
const item = this.getNewItem();
|
|
33
|
-
this.updateAttributes(this.getItems().length, item);
|
|
34
|
-
this.resetItem(item);
|
|
35
|
-
const firstItem = this.getItems().first();
|
|
36
|
-
if (!this.hasRemoveButton(firstItem)) {
|
|
37
|
-
this.createRemoveButton(firstItem);
|
|
38
|
-
}
|
|
39
|
-
this.getItems().last().after(item);
|
|
40
|
-
item.find('input, textarea, select').first().focus();
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
AddAnother.prototype.hasRemoveButton = function (item) {
|
|
44
|
-
return item.find('.moj-add-another__remove-button').length
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
AddAnother.prototype.getItems = function () {
|
|
48
|
-
return this.container.find('.moj-add-another__item')
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
AddAnother.prototype.getNewItem = function () {
|
|
52
|
-
const item = this.getItems().first().clone();
|
|
53
|
-
if (!this.hasRemoveButton(item)) {
|
|
54
|
-
this.createRemoveButton(item);
|
|
55
|
-
}
|
|
56
|
-
return item
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
AddAnother.prototype.updateAttributes = function (index, item) {
|
|
60
|
-
item.find('[data-name]').each(function (i, el) {
|
|
61
|
-
const originalId = el.id;
|
|
62
|
-
|
|
63
|
-
el.name = $(el)
|
|
64
|
-
.attr('data-name')
|
|
65
|
-
.replace(/%index%/, index);
|
|
66
|
-
el.id = $(el)
|
|
67
|
-
.attr('data-id')
|
|
68
|
-
.replace(/%index%/, index);
|
|
69
|
-
|
|
70
|
-
const label =
|
|
71
|
-
$(el).siblings('label')[0] ||
|
|
72
|
-
$(el).parents('label')[0] ||
|
|
73
|
-
item.find(`[for="${originalId}"]`)[0];
|
|
74
|
-
label.htmlFor = el.id;
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
AddAnother.prototype.createRemoveButton = function (item) {
|
|
79
|
-
item.append(
|
|
80
|
-
'<button type="button" class="govuk-button govuk-button--secondary moj-add-another__remove-button">Remove</button>'
|
|
81
|
-
);
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
AddAnother.prototype.resetItem = function (item) {
|
|
85
|
-
item.find('[data-name], [data-id]').each(function (index, el) {
|
|
86
|
-
if (el.type === 'checkbox' || el.type === 'radio') {
|
|
87
|
-
el.checked = false;
|
|
88
|
-
} else {
|
|
89
|
-
el.value = '';
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
AddAnother.prototype.onRemoveButtonClick = function (e) {
|
|
95
|
-
$(e.currentTarget).parents('.moj-add-another__item').remove();
|
|
96
|
-
const items = this.getItems();
|
|
97
|
-
if (items.length === 1) {
|
|
98
|
-
items.find('.moj-add-another__remove-button').remove();
|
|
99
|
-
}
|
|
100
|
-
items.each(
|
|
101
|
-
$.proxy(function (index, el) {
|
|
102
|
-
this.updateAttributes(index, $(el));
|
|
103
|
-
}, this)
|
|
104
|
-
);
|
|
105
|
-
this.focusHeading();
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
AddAnother.prototype.focusHeading = function () {
|
|
109
|
-
this.container.find('.moj-add-another__heading').get(0).focus();
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
exports.AddAnother = AddAnother;
|
|
113
|
-
|
|
114
|
-
}));
|
|
115
|
-
//# sourceMappingURL=add-another.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-another.js","sources":["../../../../src/moj/components/add-another/add-another.mjs"],"sourcesContent":["import $ from 'jquery'\n\nexport function AddAnother(container) {\n this.container = $(container)\n\n if (this.container.data('moj-add-another-initialised')) {\n return\n }\n\n this.container.data('moj-add-another-initialised', true)\n\n this.container.on(\n 'click',\n '.moj-add-another__remove-button',\n $.proxy(this, 'onRemoveButtonClick')\n )\n this.container.on(\n 'click',\n '.moj-add-another__add-button',\n $.proxy(this, 'onAddButtonClick')\n )\n this.container\n .find('.moj-add-another__add-button, moj-add-another__remove-button')\n .prop('type', 'button')\n}\n\nAddAnother.prototype.onAddButtonClick = function (e) {\n const item = this.getNewItem()\n this.updateAttributes(this.getItems().length, item)\n this.resetItem(item)\n const firstItem = this.getItems().first()\n if (!this.hasRemoveButton(firstItem)) {\n this.createRemoveButton(firstItem)\n }\n this.getItems().last().after(item)\n item.find('input, textarea, select').first().focus()\n}\n\nAddAnother.prototype.hasRemoveButton = function (item) {\n return item.find('.moj-add-another__remove-button').length\n}\n\nAddAnother.prototype.getItems = function () {\n return this.container.find('.moj-add-another__item')\n}\n\nAddAnother.prototype.getNewItem = function () {\n const item = this.getItems().first().clone()\n if (!this.hasRemoveButton(item)) {\n this.createRemoveButton(item)\n }\n return item\n}\n\nAddAnother.prototype.updateAttributes = function (index, item) {\n item.find('[data-name]').each(function (i, el) {\n const originalId = el.id\n\n el.name = $(el)\n .attr('data-name')\n .replace(/%index%/, index)\n el.id = $(el)\n .attr('data-id')\n .replace(/%index%/, index)\n\n const label =\n $(el).siblings('label')[0] ||\n $(el).parents('label')[0] ||\n item.find(`[for=\"${originalId}\"]`)[0]\n label.htmlFor = el.id\n })\n}\n\nAddAnother.prototype.createRemoveButton = function (item) {\n item.append(\n '<button type=\"button\" class=\"govuk-button govuk-button--secondary moj-add-another__remove-button\">Remove</button>'\n )\n}\n\nAddAnother.prototype.resetItem = function (item) {\n item.find('[data-name], [data-id]').each(function (index, el) {\n if (el.type === 'checkbox' || el.type === 'radio') {\n el.checked = false\n } else {\n el.value = ''\n }\n })\n}\n\nAddAnother.prototype.onRemoveButtonClick = function (e) {\n $(e.currentTarget).parents('.moj-add-another__item').remove()\n const items = this.getItems()\n if (items.length === 1) {\n items.find('.moj-add-another__remove-button').remove()\n }\n items.each(\n $.proxy(function (index, el) {\n this.updateAttributes(index, $(el))\n }, this)\n )\n this.focusHeading()\n}\n\nAddAnother.prototype.focusHeading = function () {\n this.container.find('.moj-add-another__heading').get(0).focus()\n}\n"],"names":[],"mappings":"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"}
|