@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
package/moj/all.mjs CHANGED
@@ -4,6 +4,7 @@ import { AddAnother } from './components/add-another/add-another.mjs';
4
4
  import { Alert } from './components/alert/alert.mjs';
5
5
  import { ButtonMenu } from './components/button-menu/button-menu.mjs';
6
6
  import { DatePicker } from './components/date-picker/date-picker.mjs';
7
+ import { PdsHeader } from './components/domain-specific/probation/header/header.mjs';
7
8
  export { FilterToggleButton } from './components/filter-toggle-button/filter-toggle-button.mjs';
8
9
  export { FormValidator } from './components/form-validator/form-validator.mjs';
9
10
  export { MultiFileUpload } from './components/multi-file-upload/multi-file-upload.mjs';
@@ -17,7 +18,7 @@ import { SortableTable } from './components/sortable-table/sortable-table.mjs';
17
18
  * @param {Config} [config]
18
19
  */
19
20
  function initAll(config) {
20
- for (const Component of [AddAnother, Alert, ButtonMenu, DatePicker, MultiSelect, PasswordReveal, RichTextEditor, SearchToggle, SortableTable]) {
21
+ for (const Component of [AddAnother, Alert, ButtonMenu, DatePicker, MultiSelect, PasswordReveal, RichTextEditor, SearchToggle, SortableTable, PdsHeader]) {
21
22
  createAll(Component, undefined, config);
22
23
  }
23
24
  }
@@ -30,5 +31,5 @@ function initAll(config) {
30
31
  * @import * as GOVUKFrontend from 'govuk-frontend'
31
32
  */
32
33
 
33
- export { AddAnother, Alert, ButtonMenu, DatePicker, MultiSelect, PasswordReveal, RichTextEditor, SearchToggle, SortableTable, initAll };
34
+ export { AddAnother, Alert, ButtonMenu, DatePicker, MultiSelect, PasswordReveal, PdsHeader, RichTextEditor, SearchToggle, SortableTable, initAll };
34
35
  //# sourceMappingURL=all.mjs.map
package/moj/all.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"all.mjs","sources":["../../src/moj/all.mjs"],"sourcesContent":["import { createAll } from 'govuk-frontend'\n\nimport { version } from './common/moj-frontend-version.mjs'\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 { FormValidator } from './components/form-validator/form-validator.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'\n\n/**\n * @param {Config} [config]\n */\nfunction initAll(config) {\n for (const Component of [\n AddAnother,\n Alert,\n ButtonMenu,\n DatePicker,\n MultiSelect,\n PasswordReveal,\n RichTextEditor,\n SearchToggle,\n SortableTable\n ]) {\n createAll(Component, undefined, config)\n }\n}\n\nexport {\n initAll,\n version,\n\n // Components\n AddAnother,\n Alert,\n ButtonMenu,\n DatePicker,\n FilterToggleButton,\n FormValidator,\n MultiFileUpload,\n MultiSelect,\n PasswordReveal,\n RichTextEditor,\n SearchToggle,\n SortableTable\n}\n\n/**\n * @typedef {Parameters<typeof GOVUKFrontend.initAll>[0]} Config\n */\n\n/**\n * @import * as GOVUKFrontend from 'govuk-frontend'\n */\n"],"names":["initAll","config","Component","AddAnother","Alert","ButtonMenu","DatePicker","MultiSelect","PasswordReveal","RichTextEditor","SearchToggle","SortableTable","createAll","undefined"],"mappings":";;;;;;;;;;;;;;;AAgBA;AACA;AACA;AACA,SAASA,OAAOA,CAACC,MAAM,EAAE;EACvB,KAAK,MAAMC,SAAS,IAAI,CACtBC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,UAAU,EACVC,WAAW,EACXC,cAAc,EACdC,cAAc,EACdC,YAAY,EACZC,aAAa,CACd,EAAE;AACDC,IAAAA,SAAS,CAACV,SAAS,EAAEW,SAAS,EAAEZ,MAAM,CAAC;AACzC;AACF;;AAqBA;AACA;AACA;;AAEA;AACA;AACA;;;;"}
1
+ {"version":3,"file":"all.mjs","sources":["../../src/moj/all.mjs"],"sourcesContent":["import { createAll } from 'govuk-frontend'\n\nimport { version } from './common/moj-frontend-version.mjs'\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 { PdsHeader } from './components/domain-specific/probation/header/header.mjs'\nimport { FilterToggleButton } from './components/filter-toggle-button/filter-toggle-button.mjs'\nimport { FormValidator } from './components/form-validator/form-validator.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'\n\n/**\n * @param {Config} [config]\n */\nfunction initAll(config) {\n for (const Component of [\n AddAnother,\n Alert,\n ButtonMenu,\n DatePicker,\n MultiSelect,\n PasswordReveal,\n RichTextEditor,\n SearchToggle,\n SortableTable,\n PdsHeader\n ]) {\n createAll(Component, undefined, config)\n }\n}\n\nexport {\n initAll,\n version,\n\n // Components\n AddAnother,\n Alert,\n ButtonMenu,\n DatePicker,\n FilterToggleButton,\n FormValidator,\n MultiFileUpload,\n MultiSelect,\n PasswordReveal,\n RichTextEditor,\n SearchToggle,\n SortableTable,\n PdsHeader\n}\n\n/**\n * @typedef {Parameters<typeof GOVUKFrontend.initAll>[0]} Config\n */\n\n/**\n * @import * as GOVUKFrontend from 'govuk-frontend'\n */\n"],"names":["initAll","config","Component","AddAnother","Alert","ButtonMenu","DatePicker","MultiSelect","PasswordReveal","RichTextEditor","SearchToggle","SortableTable","PdsHeader","createAll","undefined"],"mappings":";;;;;;;;;;;;;;;;AAiBA;AACA;AACA;AACA,SAASA,OAAOA,CAACC,MAAM,EAAE;EACvB,KAAK,MAAMC,SAAS,IAAI,CACtBC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,UAAU,EACVC,WAAW,EACXC,cAAc,EACdC,cAAc,EACdC,YAAY,EACZC,aAAa,EACbC,SAAS,CACV,EAAE;AACDC,IAAAA,SAAS,CAACX,SAAS,EAAEY,SAAS,EAAEb,MAAM,CAAC;AACzC;AACF;;AAsBA;AACA;AACA;;AAEA;AACA;AACA;;;;"}
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * {@link https://github.com/ministryofjustice/moj-frontend/releases}
10
10
  */
11
- const version = '5.1.5';
11
+ const version = '5.2.0';
12
12
 
13
13
  export { version };
14
14
  //# sourceMappingURL=moj-frontend-version.mjs.map
@@ -32,4 +32,6 @@
32
32
  @forward "timeline/timeline";
33
33
  @forward "ticket-panel/ticket-panel";
34
34
 
35
+ @forward "domain-specific/probation/all";
36
+
35
37
  /*# sourceMappingURL=_all.scss.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/moj/components/_all.scss"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,kCAAkC;AAClC,sBAAsB;AACtB,sBAAsB;AACtB,wBAAwB;AACxB,kCAAkC;AAClC,sCAAsC;AACtC,wCAAwC;AACxC,kCAAkC;AAClC,wBAAwB;AACxB,wBAAwB;AACxB,oCAAoC;AACpC,8CAA8C;AAC9C,4BAA4B;AAC5B,8CAA8C;AAC9C,oCAAoC;AACpC,gDAAgD;AAChD,sDAAsD;AACtD,kDAAkD;AAClD,gCAAgC;AAChC,0CAA0C;AAC1C,gDAAgD;AAChD,oCAAoC;AACpC,4CAA4C;AAC5C,sCAAsC;AACtC,wBAAwB;AACxB,0CAA0C;AAC1C,wCAAwC;AACxC,wCAAwC;AACxC,kBAAkB;AAClB,8BAA8B;AAC9B,4BAA4B;AAC5B,oCAAoC","file":"_all.scss","sourcesContent":["@forward \"action-bar/action-bar\";\n@forward \"add-another/add-another\";\n@forward \"alert/alert\";\n@forward \"badge/badge\";\n@forward \"banner/banner\";\n@forward \"button-menu/button-menu\";\n@forward \"cookie-banner/cookie-banner\";\n@forward \"currency-input/currency-input\";\n@forward \"date-picker/date-picker\";\n@forward \"filter/filter\";\n@forward \"header/header\";\n@forward \"identity-bar/identity-bar\";\n@forward \"interruption-card/interruption-card\";\n@forward \"messages/messages\";\n@forward \"multi-file-upload/multi-file-upload\";\n@forward \"multi-select/multi-select\";\n@forward \"notification-badge/notification-badge\";\n@forward \"organisation-switcher/organisation-switcher\";\n@forward \"page-header-actions/page-header-actions\";\n@forward \"pagination/pagination\";\n@forward \"password-reveal/password-reveal\";\n@forward \"primary-navigation/primary-navigation\";\n@forward \"progress-bar/progress-bar\";\n@forward \"rich-text-editor/rich-text-editor\";\n@forward \"search-toggle/search-toggle\";\n@forward \"search/search\";\n@forward \"side-navigation/side-navigation\";\n@forward \"sortable-table/sortable-table\";\n@forward \"sub-navigation/sub-navigation\";\n@forward \"tag/tag\";\n@forward \"task-list/task-list\";\n@forward \"timeline/timeline\";\n@forward \"ticket-panel/ticket-panel\";\n"]}
1
+ {"version":3,"sources":["../../../src/moj/components/_all.scss"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,kCAAkC;AAClC,sBAAsB;AACtB,sBAAsB;AACtB,wBAAwB;AACxB,kCAAkC;AAClC,sCAAsC;AACtC,wCAAwC;AACxC,kCAAkC;AAClC,wBAAwB;AACxB,wBAAwB;AACxB,oCAAoC;AACpC,8CAA8C;AAC9C,4BAA4B;AAC5B,8CAA8C;AAC9C,oCAAoC;AACpC,gDAAgD;AAChD,sDAAsD;AACtD,kDAAkD;AAClD,gCAAgC;AAChC,0CAA0C;AAC1C,gDAAgD;AAChD,oCAAoC;AACpC,4CAA4C;AAC5C,sCAAsC;AACtC,wBAAwB;AACxB,0CAA0C;AAC1C,wCAAwC;AACxC,wCAAwC;AACxC,kBAAkB;AAClB,8BAA8B;AAC9B,4BAA4B;AAC5B,oCAAoC;;AAEpC,wCAAwC","file":"_all.scss","sourcesContent":["@forward \"action-bar/action-bar\";\n@forward \"add-another/add-another\";\n@forward \"alert/alert\";\n@forward \"badge/badge\";\n@forward \"banner/banner\";\n@forward \"button-menu/button-menu\";\n@forward \"cookie-banner/cookie-banner\";\n@forward \"currency-input/currency-input\";\n@forward \"date-picker/date-picker\";\n@forward \"filter/filter\";\n@forward \"header/header\";\n@forward \"identity-bar/identity-bar\";\n@forward \"interruption-card/interruption-card\";\n@forward \"messages/messages\";\n@forward \"multi-file-upload/multi-file-upload\";\n@forward \"multi-select/multi-select\";\n@forward \"notification-badge/notification-badge\";\n@forward \"organisation-switcher/organisation-switcher\";\n@forward \"page-header-actions/page-header-actions\";\n@forward \"pagination/pagination\";\n@forward \"password-reveal/password-reveal\";\n@forward \"primary-navigation/primary-navigation\";\n@forward \"progress-bar/progress-bar\";\n@forward \"rich-text-editor/rich-text-editor\";\n@forward \"search-toggle/search-toggle\";\n@forward \"search/search\";\n@forward \"side-navigation/side-navigation\";\n@forward \"sortable-table/sortable-table\";\n@forward \"sub-navigation/sub-navigation\";\n@forward \"tag/tag\";\n@forward \"task-list/task-list\";\n@forward \"timeline/timeline\";\n@forward \"ticket-panel/ticket-panel\";\n\n@forward \"domain-specific/probation/all\";\n"]}
@@ -0,0 +1,4 @@
1
+ @forward "header/header";
2
+ @forward "footer/footer";
3
+
4
+ /*# sourceMappingURL=_all.scss.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/moj/components/domain-specific/probation/_all.scss"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,wBAAwB","file":"_all.scss","sourcesContent":["@forward \"header/header\";\n@forward \"footer/footer\";\n"]}
@@ -0,0 +1,22 @@
1
+ # PDS Header
2
+
3
+ ## Examples
4
+
5
+ ```njk
6
+ {{ pdsFooter({
7
+ baseUrl: 'https://probation-frontend-components-dev.hmpps.service.justice.gov.uk'
8
+ }) }}
9
+ ```
10
+
11
+ ## Arguments
12
+
13
+ This component accepts the following arguments.
14
+
15
+ ### Container
16
+
17
+ | Name | Type | Required | Description |
18
+ | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------- |
19
+ | baseUrl | string | Yes | Base URL for the probation API. |
20
+
21
+
22
+ _Warning: If you’re using Nunjucks macros in production be aware that using HTML arguments, or ones ending with `.html` can be at risk from [cross-site scripting](https://en.wikipedia.org/wiki/Cross-site_scripting) attacks. More information about security vulnerabilities can be found in the [Nunjucks documentation](https://mozilla.github.io/nunjucks/api.html#user-defined-templates-warning)._
@@ -0,0 +1,52 @@
1
+ @use "../../../../vendor/govuk-frontend" as *;
2
+
3
+ /* ==========================================================================
4
+ PROBATION#FOOTER
5
+ ========================================================================== */
6
+
7
+ .probation-common-footer {
8
+ @include govuk-font($size: 16);
9
+
10
+ padding: 30px 0;
11
+ border-top: 1px solid $govuk-border-colour;
12
+ color: $govuk-text-colour;
13
+ background: $govuk-canvas-background-colour;
14
+
15
+ a {
16
+ text-underline-offset: 0.23em;
17
+ }
18
+
19
+ &__info {
20
+ display: flex;
21
+ }
22
+
23
+ h2 {
24
+ margin-top: 0;
25
+ padding-bottom: 25px;
26
+ border-bottom: 1px solid govuk-colour("dark-grey");
27
+ font-size: 24px;
28
+ }
29
+
30
+ &__help {
31
+ flex-basis: 50%;
32
+ }
33
+
34
+ &__inline-list {
35
+ margin-top: 0;
36
+ margin-bottom: govuk-spacing(3);
37
+ padding: 0;
38
+ }
39
+
40
+ &__inline-list-item {
41
+ display: inline-block;
42
+ margin-right: govuk-spacing(3);
43
+ margin-bottom: govuk-spacing(1);
44
+ }
45
+
46
+ &__link {
47
+ @include govuk-link-common;
48
+ @include govuk-link-style-text;
49
+ }
50
+ }
51
+
52
+ /*# sourceMappingURL=_footer.scss.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/moj/components/domain-specific/probation/footer/_footer.scss"],"names":[],"mappings":"AAAA,6CAA6C;;AAE7C;;+EAE+E;;AAE/E;EACE,8BAA8B;;EAE9B,eAAe;EACf,0CAA0C;EAC1C,yBAAyB;EACzB,2CAA2C;;EAE3C;IACE,6BAA6B;EAC/B;;EAEA;IACE,aAAa;EACf;;EAEA;IACE,aAAa;IACb,oBAAoB;IACpB,kDAAkD;IAClD,eAAe;EACjB;;EAEA;IACE,eAAe;EACjB;;EAEA;IACE,aAAa;IACb,+BAA+B;IAC/B,UAAU;EACZ;;EAEA;IACE,qBAAqB;IACrB,8BAA8B;IAC9B,+BAA+B;EACjC;;EAEA;IACE,0BAA0B;IAC1B,8BAA8B;EAChC;AACF","file":"_footer.scss","sourcesContent":["@use \"../../../../vendor/govuk-frontend\" as *;\n\n/* ==========================================================================\n PROBATION#FOOTER\n ========================================================================== */\n\n.probation-common-footer {\n @include govuk-font($size: 16);\n\n padding: 30px 0;\n border-top: 1px solid $govuk-border-colour;\n color: $govuk-text-colour;\n background: $govuk-canvas-background-colour;\n\n a {\n text-underline-offset: 0.23em;\n }\n\n &__info {\n display: flex;\n }\n\n h2 {\n margin-top: 0;\n padding-bottom: 25px;\n border-bottom: 1px solid govuk-colour(\"dark-grey\");\n font-size: 24px;\n }\n\n &__help {\n flex-basis: 50%;\n }\n\n &__inline-list {\n margin-top: 0;\n margin-bottom: govuk-spacing(3);\n padding: 0;\n }\n\n &__inline-list-item {\n display: inline-block;\n margin-right: govuk-spacing(3);\n margin-bottom: govuk-spacing(1);\n }\n\n &__link {\n @include govuk-link-common;\n @include govuk-link-style-text;\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ {% macro pdsFooter(params) %}
2
+ {%- include "./template.njk" -%}
3
+ {% endmacro %}
@@ -0,0 +1,23 @@
1
+ <footer class="probation-common-footer govuk-!-display-none-print" role="contentinfo">
2
+ <div class="govuk-width-container">
3
+ <div class="govuk-grid-row">
4
+ <div class="govuk-grid-column-full">
5
+ <div class="probation-common-footer__support-links">
6
+ <h2 class="govuk-visually-hidden">Support links</h2>
7
+
8
+ <ul class="probation-common-footer__inline-list">
9
+ <li class="probation-common-footer__inline-list-item">
10
+ <a class="probation-common-footer__link" href="{{ params.baseUrl }}/accessibility">Accessibility</a>
11
+ </li>
12
+ <li class="probation-common-footer__inline-list-item">
13
+ <a class="probation-common-footer__link" href="{{ params.baseUrl }}/cookies-policy">Cookies policy</a>
14
+ </li>
15
+ <li class="probation-common-footer__inline-list-item">
16
+ <a class="probation-common-footer__link" href="{{ params.baseUrl }}/privacy-policy">Privacy policy</a>
17
+ </li>
18
+ </ul>
19
+ </div>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ </footer>
@@ -0,0 +1,28 @@
1
+ # PDS Header
2
+
3
+ ## Examples
4
+
5
+ ```njk
6
+ {{ pdsHeader({
7
+ environmentName: 'DEV',
8
+ environmentNameColour: 'govuk-tag--green',
9
+ name: 'Account name',
10
+ manageDetailsLink: '#'
11
+ }) }}
12
+ ```
13
+
14
+ ## Arguments
15
+
16
+ This component accepts the following arguments.
17
+
18
+ ### Container
19
+
20
+ | Name | Type | Required | Description |
21
+ | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------- |
22
+ | environmentName | string | No | Tag label showing the current environment. Hidden if value is `PRODUCTION`. |
23
+ | environmentNameColour | string | No | Custom colour for the environment tag, overriding the default. |
24
+ | name | string | Yes | The display name of the user. |
25
+ | manageDetailsLink | string | Yes | URL linking to the user account management page. |
26
+
27
+
28
+ _Warning: If you’re using Nunjucks macros in production be aware that using HTML arguments, or ones ending with `.html` can be at risk from [cross-site scripting](https://en.wikipedia.org/wiki/Cross-site_scripting) attacks. More information about security vulnerabilities can be found in the [Nunjucks documentation](https://mozilla.github.io/nunjucks/api.html#user-defined-templates-warning)._
@@ -0,0 +1,336 @@
1
+ /* stylelint-disable max-nesting-depth, selector-no-qualifying-type */
2
+ @use "../../../../vendor/govuk-frontend" as *;
3
+
4
+ /* ==========================================================================
5
+ PROBATION#HEADER
6
+ ========================================================================== */
7
+
8
+ .probation-common-header {
9
+ [hidden] {
10
+ display: none;
11
+ }
12
+ color: govuk-colour("white");
13
+
14
+ background-color: govuk-colour("black");
15
+
16
+ &__logo {
17
+ @include govuk-responsive-margin(3, "right");
18
+ position: relative;
19
+ top: -2px;
20
+ padding: 15px 0;
21
+ fill: govuk-colour("white");
22
+ }
23
+
24
+ &__title {
25
+ display: flex;
26
+
27
+ &__organisation-name {
28
+ @include govuk-responsive-margin(2, "right");
29
+ @include govuk-font($size: 24, $weight: "bold");
30
+ display: flex;
31
+ align-items: center;
32
+ }
33
+
34
+ .govuk-tag {
35
+ margin: auto 0;
36
+
37
+ @include govuk-media-query($until: 985px) {
38
+ display: none;
39
+ }
40
+ }
41
+ }
42
+
43
+ &__submenu-link {
44
+ @include govuk-link-common;
45
+ @include govuk-link-style-no-visited-state;
46
+ }
47
+
48
+ &__link {
49
+ @include govuk-link-common;
50
+ @include govuk-link-style-default;
51
+
52
+ &:link,
53
+ &:visited,
54
+ &:active {
55
+ color: govuk-colour("white");
56
+ font-weight: normal;
57
+ text-decoration: none;
58
+ }
59
+
60
+ &:focus {
61
+ color: govuk-colour("black");
62
+ box-shadow: none;
63
+
64
+ &::after {
65
+ content: "";
66
+ position: absolute;
67
+ top: auto;
68
+ right: 15px;
69
+ bottom: 0;
70
+ left: 15px;
71
+ height: 3px;
72
+ background: govuk-colour("black");
73
+ }
74
+
75
+ svg {
76
+ fill: govuk-colour("black");
77
+ }
78
+ }
79
+
80
+ &:hover {
81
+ text-decoration: underline;
82
+ }
83
+ }
84
+
85
+ &__button-width-container {
86
+ position: relative;
87
+ }
88
+
89
+ &__button-container {
90
+ @include govuk-media-query(925px) {
91
+ position: absolute;
92
+ top: -70px;
93
+ right: 0;
94
+ background-color: govuk-colour("black");
95
+ }
96
+ }
97
+
98
+ &__navigation {
99
+ display: flex;
100
+ height: 70px;
101
+ margin: 0;
102
+ padding: 0;
103
+ list-style: none;
104
+ flex-direction: row;
105
+ align-items: center;
106
+
107
+ &__item {
108
+ position: relative;
109
+ height: 100%;
110
+
111
+ > button,
112
+ > a {
113
+ display: flex;
114
+ height: 100%;
115
+ padding: 0;
116
+ overflow: hidden;
117
+ border: none;
118
+ color: govuk-colour("white");
119
+ background: govuk-colour("black");
120
+ cursor: pointer;
121
+ align-items: center;
122
+ justify-content: center;
123
+ @include govuk-font(16);
124
+
125
+ &:hover {
126
+ color: govuk-colour("mid-grey");
127
+
128
+ &::after {
129
+ content: "";
130
+ position: absolute;
131
+ top: auto;
132
+ right: 15px;
133
+ bottom: 0;
134
+ left: 15px;
135
+ height: 3px;
136
+ background: govuk-colour("mid-grey");
137
+ }
138
+ }
139
+
140
+ &.probation-common-header__menu-toggle {
141
+ padding: 10px 0;
142
+
143
+ > span {
144
+ display: flex;
145
+ height: 100%;
146
+ padding: 0 15px;
147
+ border-left: 1px solid govuk-colour("white");
148
+ align-items: center;
149
+
150
+ &::before {
151
+ content: "";
152
+ display: inline-block;
153
+ width: 8px;
154
+ height: 8px;
155
+ margin: 3px 15px 0 3px;
156
+ transform: translateY(-35%) rotate(45deg) scale(1);
157
+ border-right: 2px solid govuk-colour("white");
158
+ border-bottom: 2px solid govuk-colour("white");
159
+ vertical-align: middle;
160
+ }
161
+ }
162
+
163
+ svg {
164
+ margin: 0 15px 0 0;
165
+ }
166
+
167
+ &:hover {
168
+ > span {
169
+ &::before {
170
+ border-right: 2px solid govuk-colour("mid-grey");
171
+ border-bottom: 2px solid govuk-colour("mid-grey");
172
+ }
173
+ }
174
+ }
175
+ }
176
+
177
+ &.probation-common-header__toggle-open {
178
+ color: govuk-colour("blue");
179
+ background: govuk-colour("light-grey");
180
+
181
+ > span {
182
+ &::before {
183
+ transform: translateY(-0%) rotate(225deg) scale(1);
184
+ border-right: 2px solid govuk-colour("blue");
185
+ border-bottom: 2px solid govuk-colour("blue");
186
+ }
187
+
188
+ &::after {
189
+ content: "";
190
+ position: absolute;
191
+ top: auto;
192
+ right: 15px;
193
+ bottom: 0;
194
+ left: 15px;
195
+ height: 3px;
196
+ background: govuk-colour("blue");
197
+ }
198
+ }
199
+
200
+ &:hover {
201
+ color: govuk-colour("dark-grey");
202
+ }
203
+ }
204
+
205
+ &:focus-visible {
206
+ outline: 3px solid transparent;
207
+ color: govuk-colour("black");
208
+ background-color: govuk-colour("yellow");
209
+ box-shadow: none;
210
+ text-decoration: none;
211
+
212
+ &::after {
213
+ content: "";
214
+ position: absolute;
215
+ top: auto;
216
+ right: 15px;
217
+ bottom: 0;
218
+ left: 15px;
219
+ height: 3px;
220
+ background: govuk-colour("black");
221
+ }
222
+
223
+ > span {
224
+ &::before {
225
+ border-right: 2px solid govuk-colour("black");
226
+ border-bottom: 2px solid govuk-colour("black");
227
+ }
228
+ }
229
+ }
230
+ }
231
+
232
+ &.item-open {
233
+ + div {
234
+ > button,
235
+ > a {
236
+ > span {
237
+ border-left: 1px solid transparent;
238
+ }
239
+ }
240
+ }
241
+ }
242
+ }
243
+ }
244
+
245
+ .probation-common-header__user-menu {
246
+ position: relative;
247
+ z-index: 10000000;
248
+ padding: 15px;
249
+ background: govuk-colour("light-grey");
250
+
251
+ a {
252
+ display: block;
253
+ margin-bottom: 15px;
254
+ font-weight: 700;
255
+ }
256
+ }
257
+
258
+ &__pushdown-menu {
259
+ padding: 30px 0 60px;
260
+ background: govuk-colour("light-grey");
261
+ }
262
+
263
+ &__icon-link-wrapper {
264
+ display: flex;
265
+ position: relative;
266
+ height: 100%;
267
+
268
+ img,
269
+ svg {
270
+ margin: 0 15px 0 0;
271
+ }
272
+
273
+ a {
274
+ box-sizing: border-box;
275
+ display: block;
276
+ width: 100%;
277
+ padding: 10px 0;
278
+
279
+ > span {
280
+ display: flex;
281
+ height: 100%;
282
+ padding: 0 15px;
283
+ border-left: 1px solid govuk-colour("white");
284
+ align-items: center;
285
+ justify-content: center;
286
+ }
287
+
288
+ &:hover {
289
+ color: govuk-colour("mid-grey");
290
+ text-decoration: none;
291
+
292
+ &::after {
293
+ content: "";
294
+ position: absolute;
295
+ top: auto;
296
+ right: 15px;
297
+ bottom: 0;
298
+ left: 15px;
299
+ height: 3px;
300
+ background: govuk-colour("mid-grey");
301
+ }
302
+ }
303
+ }
304
+ }
305
+
306
+ &__services-menu {
307
+ ul {
308
+ display: grid;
309
+ width: 100%;
310
+ margin-bottom: 0;
311
+ font-weight: bold;
312
+ grid-template-columns: 1fr 1fr 1fr;
313
+ gap: 15px;
314
+ justify-items: start;
315
+ }
316
+ }
317
+
318
+ &__user-menu-link {
319
+ width: 181px;
320
+ }
321
+
322
+ &__services-menu-link {
323
+ width: 107px;
324
+ }
325
+
326
+ &__menu-toggle-label {
327
+ display: block;
328
+ text-align: left;
329
+ }
330
+
331
+ @media print {
332
+ display: none;
333
+ }
334
+ }
335
+
336
+ /*# sourceMappingURL=_header.scss.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/moj/components/domain-specific/probation/header/_header.scss"],"names":[],"mappings":"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","file":"_header.scss","sourcesContent":["/* stylelint-disable max-nesting-depth, selector-no-qualifying-type */\n@use \"../../../../vendor/govuk-frontend\" as *;\n\n/* ==========================================================================\n PROBATION#HEADER\n ========================================================================== */\n\n.probation-common-header {\n [hidden] {\n display: none;\n }\n color: govuk-colour(\"white\");\n\n background-color: govuk-colour(\"black\");\n\n &__logo {\n @include govuk-responsive-margin(3, \"right\");\n position: relative;\n top: -2px;\n padding: 15px 0;\n fill: govuk-colour(\"white\");\n }\n\n &__title {\n display: flex;\n\n &__organisation-name {\n @include govuk-responsive-margin(2, \"right\");\n @include govuk-font($size: 24, $weight: \"bold\");\n display: flex;\n align-items: center;\n }\n\n .govuk-tag {\n margin: auto 0;\n\n @include govuk-media-query($until: 985px) {\n display: none;\n }\n }\n }\n\n &__submenu-link {\n @include govuk-link-common;\n @include govuk-link-style-no-visited-state;\n }\n\n &__link {\n @include govuk-link-common;\n @include govuk-link-style-default;\n\n &:link,\n &:visited,\n &:active {\n color: govuk-colour(\"white\");\n font-weight: normal;\n text-decoration: none;\n }\n\n &:focus {\n color: govuk-colour(\"black\");\n box-shadow: none;\n\n &::after {\n content: \"\";\n position: absolute;\n top: auto;\n right: 15px;\n bottom: 0;\n left: 15px;\n height: 3px;\n background: govuk-colour(\"black\");\n }\n\n svg {\n fill: govuk-colour(\"black\");\n }\n }\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n &__button-width-container {\n position: relative;\n }\n\n &__button-container {\n @include govuk-media-query(925px) {\n position: absolute;\n top: -70px;\n right: 0;\n background-color: govuk-colour(\"black\");\n }\n }\n\n &__navigation {\n display: flex;\n height: 70px;\n margin: 0;\n padding: 0;\n list-style: none;\n flex-direction: row;\n align-items: center;\n\n &__item {\n position: relative;\n height: 100%;\n\n > button,\n > a {\n display: flex;\n height: 100%;\n padding: 0;\n overflow: hidden;\n border: none;\n color: govuk-colour(\"white\");\n background: govuk-colour(\"black\");\n cursor: pointer;\n align-items: center;\n justify-content: center;\n @include govuk-font(16);\n\n &:hover {\n color: govuk-colour(\"mid-grey\");\n\n &::after {\n content: \"\";\n position: absolute;\n top: auto;\n right: 15px;\n bottom: 0;\n left: 15px;\n height: 3px;\n background: govuk-colour(\"mid-grey\");\n }\n }\n\n &.probation-common-header__menu-toggle {\n padding: 10px 0;\n\n > span {\n display: flex;\n height: 100%;\n padding: 0 15px;\n border-left: 1px solid govuk-colour(\"white\");\n align-items: center;\n\n &::before {\n content: \"\";\n display: inline-block;\n width: 8px;\n height: 8px;\n margin: 3px 15px 0 3px;\n -ms-transform: translateY(-35%) rotate(45deg) scale(1);\n -webkit-transform: translateY(-35%) rotate(45deg) scale(1);\n transform: translateY(-35%) rotate(45deg) scale(1);\n border-right: 2px solid govuk-colour(\"white\");\n border-bottom: 2px solid govuk-colour(\"white\");\n vertical-align: middle;\n }\n }\n\n svg {\n margin: 0 15px 0 0;\n }\n\n &:hover {\n > span {\n &::before {\n border-right: 2px solid govuk-colour(\"mid-grey\");\n border-bottom: 2px solid govuk-colour(\"mid-grey\");\n }\n }\n }\n }\n\n &.probation-common-header__toggle-open {\n color: govuk-colour(\"blue\");\n background: govuk-colour(\"light-grey\");\n\n > span {\n &::before {\n -ms-transform: translateY(-0%) rotate(225deg) scale(1);\n -webkit-transform: translateY(-0%) rotate(225deg) scale(1);\n transform: translateY(-0%) rotate(225deg) scale(1);\n border-right: 2px solid govuk-colour(\"blue\");\n border-bottom: 2px solid govuk-colour(\"blue\");\n }\n\n &::after {\n content: \"\";\n position: absolute;\n top: auto;\n right: 15px;\n bottom: 0;\n left: 15px;\n height: 3px;\n background: govuk-colour(\"blue\");\n }\n }\n\n &:hover {\n color: govuk-colour(\"dark-grey\");\n }\n }\n\n &:focus-visible {\n outline: 3px solid transparent;\n color: govuk-colour(\"black\");\n background-color: govuk-colour(\"yellow\");\n box-shadow: none;\n text-decoration: none;\n\n &::after {\n content: \"\";\n position: absolute;\n top: auto;\n right: 15px;\n bottom: 0;\n left: 15px;\n height: 3px;\n background: govuk-colour(\"black\");\n }\n\n > span {\n &::before {\n border-right: 2px solid govuk-colour(\"black\");\n border-bottom: 2px solid govuk-colour(\"black\");\n }\n }\n }\n }\n\n &.item-open {\n + div {\n > button,\n > a {\n > span {\n border-left: 1px solid transparent;\n }\n }\n }\n }\n }\n }\n\n .probation-common-header__user-menu {\n position: relative;\n z-index: 10000000;\n padding: 15px;\n background: govuk-colour(\"light-grey\");\n\n a {\n display: block;\n margin-bottom: 15px;\n font-weight: 700;\n }\n }\n\n &__pushdown-menu {\n padding: 30px 0 60px;\n background: govuk-colour(\"light-grey\");\n }\n\n &__icon-link-wrapper {\n display: flex;\n position: relative;\n height: 100%;\n\n img,\n svg {\n margin: 0 15px 0 0;\n }\n\n a {\n box-sizing: border-box;\n display: block;\n width: 100%;\n padding: 10px 0;\n\n > span {\n display: flex;\n height: 100%;\n padding: 0 15px;\n border-left: 1px solid govuk-colour(\"white\");\n align-items: center;\n justify-content: center;\n }\n\n &:hover {\n color: govuk-colour(\"mid-grey\");\n text-decoration: none;\n\n &::after {\n content: \"\";\n position: absolute;\n top: auto;\n right: 15px;\n bottom: 0;\n left: 15px;\n height: 3px;\n background: govuk-colour(\"mid-grey\");\n }\n }\n }\n }\n\n &__services-menu {\n ul {\n display: grid;\n width: 100%;\n margin-bottom: 0;\n font-weight: bold;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 15px;\n justify-items: start;\n }\n }\n\n &__user-menu-link {\n width: 181px;\n }\n\n &__services-menu-link {\n width: 107px;\n }\n\n &__menu-toggle-label {\n display: block;\n text-align: left;\n }\n\n @media print {\n display: none;\n }\n}\n"]}
@@ -0,0 +1,75 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('govuk-frontend')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'govuk-frontend'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.MOJFrontend = global.MOJFrontend || {}, global.GOVUKFrontend));
5
+ })(this, (function (exports, govukFrontend) { 'use strict';
6
+
7
+ class PdsHeader extends govukFrontend.Component {
8
+ /**
9
+ * @param {Element | null} $root - HTML element to use for PDS header
10
+ */
11
+ constructor($root) {
12
+ super($root);
13
+ this.initHeader();
14
+ }
15
+ initHeader() {
16
+ this.$tabOpenClass = 'probation-common-header__toggle-open';
17
+ const $userToggle = this.$root.querySelector('.probation-common-header__user-menu-toggle');
18
+ const $userMenu = this.$root.querySelector('#probation-common-header-user-menu');
19
+ if (!$userToggle || !$userMenu || !($userToggle instanceof HTMLElement) || !($userMenu instanceof HTMLElement)) {
20
+ return 0;
21
+ }
22
+ this.hideFallbackLinks();
23
+ $userToggle.removeAttribute('hidden');
24
+ this.closeTabs([[$userToggle, $userMenu]]);
25
+ $userToggle.addEventListener('click', _event => {
26
+ this.toggleMenu($userToggle, $userMenu);
27
+ });
28
+ }
29
+
30
+ /**
31
+ * @param {[any, any][]} tabTuples
32
+ */
33
+ closeTabs(tabTuples) {
34
+ tabTuples.forEach(([toggle, menu]) => {
35
+ if (menu && toggle) {
36
+ menu.setAttribute('hidden', 'hidden');
37
+ toggle.classList.remove(this.$tabOpenClass);
38
+ toggle.parentElement.classList.remove('item-open');
39
+ toggle.setAttribute('aria-expanded', 'false');
40
+ if (toggle.dataset.textForShow) toggle.setAttribute('aria-label', toggle.dataset.textForShow);
41
+ }
42
+ });
43
+ }
44
+
45
+ /**
46
+ * @param {HTMLElement} toggle
47
+ * @param {HTMLElement} menu
48
+ */
49
+ toggleMenu(toggle, menu) {
50
+ const isOpen = !menu.getAttribute('hidden');
51
+ if (isOpen) {
52
+ this.closeTabs([[toggle, menu]]);
53
+ } else if (menu && toggle) {
54
+ menu.removeAttribute('hidden');
55
+ toggle.classList.add(this.$tabOpenClass);
56
+ toggle.parentElement.classList.add('item-open');
57
+ toggle.setAttribute('aria-expanded', 'true');
58
+ if (toggle.dataset.textForHide) toggle.setAttribute('aria-label', toggle.dataset.textForHide);
59
+ }
60
+ }
61
+ hideFallbackLinks() {
62
+ const $userLink = this.$root.querySelector('.probation-common-header__user-menu-link');
63
+ if ($userLink) $userLink.setAttribute('hidden', 'hidden');
64
+ }
65
+
66
+ /**
67
+ * Name for the component used when initialising using data-module attributes.
68
+ */
69
+ }
70
+ PdsHeader.moduleName = 'pds-header';
71
+
72
+ exports.PdsHeader = PdsHeader;
73
+
74
+ }));
75
+ //# sourceMappingURL=header.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.bundle.js","sources":["../../../../../../src/moj/components/domain-specific/probation/header/header.mjs"],"sourcesContent":["import { Component } from 'govuk-frontend'\n\nexport class PdsHeader extends Component {\n /**\n * @param {Element | null} $root - HTML element to use for PDS header\n */\n constructor($root) {\n super($root)\n this.initHeader()\n }\n\n initHeader() {\n this.$tabOpenClass = 'probation-common-header__toggle-open'\n const $userToggle = this.$root.querySelector(\n '.probation-common-header__user-menu-toggle'\n )\n const $userMenu = this.$root.querySelector(\n '#probation-common-header-user-menu'\n )\n\n if (\n !$userToggle ||\n !$userMenu ||\n !($userToggle instanceof HTMLElement) ||\n !($userMenu instanceof HTMLElement)\n ) {\n return 0\n }\n\n this.hideFallbackLinks()\n $userToggle.removeAttribute('hidden')\n\n this.closeTabs([[$userToggle, $userMenu]])\n\n $userToggle.addEventListener('click', (_event) => {\n this.toggleMenu($userToggle, $userMenu)\n })\n }\n\n /**\n * @param {[any, any][]} tabTuples\n */\n closeTabs(tabTuples) {\n tabTuples.forEach(([toggle, menu]) => {\n if (menu && toggle) {\n menu.setAttribute('hidden', 'hidden')\n toggle.classList.remove(this.$tabOpenClass)\n toggle.parentElement.classList.remove('item-open')\n toggle.setAttribute('aria-expanded', 'false')\n if (toggle.dataset.textForShow)\n toggle.setAttribute('aria-label', toggle.dataset.textForShow)\n }\n })\n }\n\n /**\n * @param {HTMLElement} toggle\n * @param {HTMLElement} menu\n */\n toggleMenu(toggle, menu) {\n const isOpen = !menu.getAttribute('hidden')\n\n if (isOpen) {\n this.closeTabs([[toggle, menu]])\n } else if (menu && toggle) {\n menu.removeAttribute('hidden')\n toggle.classList.add(this.$tabOpenClass)\n toggle.parentElement.classList.add('item-open')\n toggle.setAttribute('aria-expanded', 'true')\n if (toggle.dataset.textForHide)\n toggle.setAttribute('aria-label', toggle.dataset.textForHide)\n }\n }\n\n hideFallbackLinks() {\n const $userLink = this.$root.querySelector(\n '.probation-common-header__user-menu-link'\n )\n if ($userLink) $userLink.setAttribute('hidden', 'hidden')\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'pds-header'\n}\n"],"names":["PdsHeader","Component","constructor","$root","initHeader","$tabOpenClass","$userToggle","querySelector","$userMenu","HTMLElement","hideFallbackLinks","removeAttribute","closeTabs","addEventListener","_event","toggleMenu","tabTuples","forEach","toggle","menu","setAttribute","classList","remove","parentElement","dataset","textForShow","isOpen","getAttribute","add","textForHide","$userLink","moduleName"],"mappings":"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"}