@ministryofjustice/frontend 5.1.5 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/moj/all.bundle.js +68 -2
  2. package/moj/all.bundle.js.map +1 -1
  3. package/moj/all.bundle.mjs +68 -3
  4. package/moj/all.bundle.mjs.map +1 -1
  5. package/moj/all.mjs +3 -2
  6. package/moj/all.mjs.map +1 -1
  7. package/moj/common/moj-frontend-version.mjs +1 -1
  8. package/moj/components/_all.scss +2 -0
  9. package/moj/components/_all.scss.map +1 -1
  10. package/moj/components/domain-specific/probation/_all.scss +4 -0
  11. package/moj/components/domain-specific/probation/_all.scss.map +1 -0
  12. package/moj/components/domain-specific/probation/footer/README.md +22 -0
  13. package/moj/components/domain-specific/probation/footer/_footer.scss +52 -0
  14. package/moj/components/domain-specific/probation/footer/_footer.scss.map +1 -0
  15. package/moj/components/domain-specific/probation/footer/macro.njk +3 -0
  16. package/moj/components/domain-specific/probation/footer/template.njk +23 -0
  17. package/moj/components/domain-specific/probation/header/README.md +28 -0
  18. package/moj/components/domain-specific/probation/header/_header.scss +336 -0
  19. package/moj/components/domain-specific/probation/header/_header.scss.map +1 -0
  20. package/moj/components/domain-specific/probation/header/header.bundle.js +75 -0
  21. package/moj/components/domain-specific/probation/header/header.bundle.js.map +1 -0
  22. package/moj/components/domain-specific/probation/header/header.bundle.mjs +189 -0
  23. package/moj/components/domain-specific/probation/header/header.bundle.mjs.map +1 -0
  24. package/moj/components/domain-specific/probation/header/header.mjs +69 -0
  25. package/moj/components/domain-specific/probation/header/header.mjs.map +1 -0
  26. package/moj/components/domain-specific/probation/header/macro.njk +3 -0
  27. package/moj/components/domain-specific/probation/header/template.njk +109 -0
  28. package/moj/core/_moj-frontend-properties.scss +1 -1
  29. package/moj/moj-frontend.min.css +1 -1
  30. package/moj/moj-frontend.min.css.map +1 -1
  31. package/moj/moj-frontend.min.js +1 -1
  32. package/moj/moj-frontend.min.js.map +1 -1
  33. package/package.json +1 -1
@@ -312,7 +312,7 @@ function createAll(Component, config, createAllOptions) {
312
312
  *
313
313
  * {@link https://github.com/ministryofjustice/moj-frontend/releases}
314
314
  */
315
- const version = '5.1.5';
315
+ const version = '5.2.0';
316
316
 
317
317
  class AddAnother extends Component {
318
318
  /**
@@ -1810,6 +1810,71 @@ class DSCalendarDay {
1810
1810
  * @import { Schema } from 'govuk-frontend/dist/govuk/common/configuration.mjs'
1811
1811
  */
1812
1812
 
1813
+ class PdsHeader extends Component {
1814
+ /**
1815
+ * @param {Element | null} $root - HTML element to use for PDS header
1816
+ */
1817
+ constructor($root) {
1818
+ super($root);
1819
+ this.initHeader();
1820
+ }
1821
+ initHeader() {
1822
+ this.$tabOpenClass = 'probation-common-header__toggle-open';
1823
+ const $userToggle = this.$root.querySelector('.probation-common-header__user-menu-toggle');
1824
+ const $userMenu = this.$root.querySelector('#probation-common-header-user-menu');
1825
+ if (!$userToggle || !$userMenu || !($userToggle instanceof HTMLElement) || !($userMenu instanceof HTMLElement)) {
1826
+ return 0;
1827
+ }
1828
+ this.hideFallbackLinks();
1829
+ $userToggle.removeAttribute('hidden');
1830
+ this.closeTabs([[$userToggle, $userMenu]]);
1831
+ $userToggle.addEventListener('click', _event => {
1832
+ this.toggleMenu($userToggle, $userMenu);
1833
+ });
1834
+ }
1835
+
1836
+ /**
1837
+ * @param {[any, any][]} tabTuples
1838
+ */
1839
+ closeTabs(tabTuples) {
1840
+ tabTuples.forEach(([toggle, menu]) => {
1841
+ if (menu && toggle) {
1842
+ menu.setAttribute('hidden', 'hidden');
1843
+ toggle.classList.remove(this.$tabOpenClass);
1844
+ toggle.parentElement.classList.remove('item-open');
1845
+ toggle.setAttribute('aria-expanded', 'false');
1846
+ if (toggle.dataset.textForShow) toggle.setAttribute('aria-label', toggle.dataset.textForShow);
1847
+ }
1848
+ });
1849
+ }
1850
+
1851
+ /**
1852
+ * @param {HTMLElement} toggle
1853
+ * @param {HTMLElement} menu
1854
+ */
1855
+ toggleMenu(toggle, menu) {
1856
+ const isOpen = !menu.getAttribute('hidden');
1857
+ if (isOpen) {
1858
+ this.closeTabs([[toggle, menu]]);
1859
+ } else if (menu && toggle) {
1860
+ menu.removeAttribute('hidden');
1861
+ toggle.classList.add(this.$tabOpenClass);
1862
+ toggle.parentElement.classList.add('item-open');
1863
+ toggle.setAttribute('aria-expanded', 'true');
1864
+ if (toggle.dataset.textForHide) toggle.setAttribute('aria-label', toggle.dataset.textForHide);
1865
+ }
1866
+ }
1867
+ hideFallbackLinks() {
1868
+ const $userLink = this.$root.querySelector('.probation-common-header__user-menu-link');
1869
+ if ($userLink) $userLink.setAttribute('hidden', 'hidden');
1870
+ }
1871
+
1872
+ /**
1873
+ * Name for the component used when initialising using data-module attributes.
1874
+ */
1875
+ }
1876
+ PdsHeader.moduleName = 'pds-header';
1877
+
1813
1878
  /**
1814
1879
  * @augments {ConfigurableComponent<FilterToggleButtonConfig>}
1815
1880
  */
@@ -3345,7 +3410,7 @@ SortableTable.schema = Object.freeze(/** @type {const} */{
3345
3410
  * @param {Config} [config]
3346
3411
  */
3347
3412
  function initAll(config) {
3348
- for (const Component of [AddAnother, Alert, ButtonMenu, DatePicker, MultiSelect, PasswordReveal, RichTextEditor, SearchToggle, SortableTable]) {
3413
+ for (const Component of [AddAnother, Alert, ButtonMenu, DatePicker, MultiSelect, PasswordReveal, RichTextEditor, SearchToggle, SortableTable, PdsHeader]) {
3349
3414
  createAll(Component, undefined, config);
3350
3415
  }
3351
3416
  }
@@ -3358,5 +3423,5 @@ function initAll(config) {
3358
3423
  * @import * as GOVUKFrontend from 'govuk-frontend'
3359
3424
  */
3360
3425
 
3361
- export { AddAnother, Alert, ButtonMenu, DatePicker, FilterToggleButton, FormValidator, MultiFileUpload, MultiSelect, PasswordReveal, RichTextEditor, SearchToggle, SortableTable, initAll, version };
3426
+ export { AddAnother, Alert, ButtonMenu, DatePicker, FilterToggleButton, FormValidator, MultiFileUpload, MultiSelect, PasswordReveal, PdsHeader, RichTextEditor, SearchToggle, SortableTable, initAll, version };
3362
3427
  //# sourceMappingURL=all.bundle.mjs.map