govuk_publishing_components 51.1.1 → 51.2.1

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 (113) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/components/feedback.js +29 -34
  3. data/app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-reporter.js +7 -2
  4. data/app/assets/stylesheets/component_guide/application.scss +1 -1
  5. data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +1 -0
  6. data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_markdown-typography.scss +2 -2
  7. data/app/models/govuk_publishing_components/audit_comparer.rb +3 -3
  8. data/app/views/govuk_publishing_components/components/_title.html.erb +2 -3
  9. data/app/views/govuk_publishing_components/components/docs/add_another.yml +1 -1
  10. data/app/views/govuk_publishing_components/components/docs/feedback.yml +1 -1
  11. data/lib/govuk_publishing_components/presenters/checkboxes_helper.rb +1 -1
  12. data/lib/govuk_publishing_components/presenters/shared_helper.rb +0 -11
  13. data/lib/govuk_publishing_components/version.rb +1 -1
  14. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js +217 -184
  15. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js.map +1 -1
  16. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs +216 -184
  17. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs.map +1 -1
  18. data/node_modules/govuk-frontend/dist/govuk/all.mjs +1 -0
  19. data/node_modules/govuk-frontend/dist/govuk/all.mjs.map +1 -1
  20. data/node_modules/govuk-frontend/dist/govuk/all.scss +6 -0
  21. data/node_modules/govuk-frontend/dist/govuk/all.scss.map +1 -1
  22. data/node_modules/govuk-frontend/dist/govuk/common/configuration.mjs +164 -0
  23. data/node_modules/govuk-frontend/dist/govuk/common/configuration.mjs.map +1 -0
  24. data/node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs +1 -1
  25. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs +1 -87
  26. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs.map +1 -1
  27. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js +149 -112
  28. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js.map +1 -1
  29. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs +148 -111
  30. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs.map +1 -1
  31. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs +5 -8
  32. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs.map +1 -1
  33. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js +149 -112
  34. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js.map +1 -1
  35. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs +148 -111
  36. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs.map +1 -1
  37. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs +5 -8
  38. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs.map +1 -1
  39. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js +174 -140
  40. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js.map +1 -1
  41. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs +173 -139
  42. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs.map +1 -1
  43. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs +17 -16
  44. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs.map +1 -1
  45. data/node_modules/govuk-frontend/dist/govuk/components/character-count/macro-options.json +4 -4
  46. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js +1 -24
  47. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js.map +1 -1
  48. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs +0 -23
  49. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs.map +1 -1
  50. data/node_modules/govuk-frontend/dist/govuk/components/date-input/macro-options.json +2 -2
  51. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js +149 -112
  52. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js.map +1 -1
  53. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs +148 -111
  54. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs.map +1 -1
  55. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs +6 -8
  56. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs.map +1 -1
  57. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js +149 -112
  58. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js.map +1 -1
  59. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs +148 -111
  60. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs.map +1 -1
  61. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs +5 -8
  62. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs.map +1 -1
  63. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js +1 -24
  64. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js.map +1 -1
  65. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs +0 -23
  66. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs.map +1 -1
  67. data/node_modules/govuk-frontend/dist/govuk/components/input/macro-options.json +4 -4
  68. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js +149 -112
  69. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js.map +1 -1
  70. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs +148 -111
  71. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs.map +1 -1
  72. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs +6 -8
  73. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs.map +1 -1
  74. data/node_modules/govuk-frontend/dist/govuk/components/password-input/macro-options.json +1 -1
  75. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js +149 -112
  76. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js.map +1 -1
  77. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs +148 -111
  78. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs.map +1 -1
  79. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs +5 -8
  80. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs.map +1 -1
  81. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js +1 -24
  82. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js.map +1 -1
  83. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs +0 -23
  84. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs.map +1 -1
  85. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.js +1 -24
  86. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.js.map +1 -1
  87. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.mjs +0 -23
  88. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.mjs.map +1 -1
  89. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js +1 -24
  90. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js.map +1 -1
  91. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs +0 -23
  92. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs.map +1 -1
  93. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js +1 -24
  94. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js.map +1 -1
  95. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs +0 -23
  96. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs.map +1 -1
  97. data/node_modules/govuk-frontend/dist/govuk/components/textarea/macro-options.json +1 -1
  98. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss +1 -1
  99. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css +1 -1
  100. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css.map +1 -1
  101. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js +1 -1
  102. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js.map +1 -1
  103. data/node_modules/govuk-frontend/dist/govuk/init.mjs +17 -13
  104. data/node_modules/govuk-frontend/dist/govuk/init.mjs.map +1 -1
  105. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss +5 -10
  106. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss.map +1 -1
  107. data/node_modules/govuk-frontend/govuk-prototype-kit.config.json +1 -1
  108. data/node_modules/govuk-frontend/package.json +9 -9
  109. metadata +4 -6
  110. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs +0 -18
  111. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs.map +0 -1
  112. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs +0 -31
  113. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs.map +0 -1
@@ -54,11 +54,11 @@ function initAll(config) {
54
54
  *
55
55
  * Any component errors will be caught and logged to the console.
56
56
  *
57
- * @template {CompatibleClass} T
58
- * @param {T} Component - class of the component to create
59
- * @param {T["defaults"]} [config] - Config supplied to component
60
- * @param {OnErrorCallback<T> | Element | Document | CreateAllOptions<T> } [createAllOptions] - options for createAll including scope of the document to search within and callback function if error throw by component on init
61
- * @returns {Array<InstanceType<T>>} - array of instantiated components
57
+ * @template {CompatibleClass} ComponentClass
58
+ * @param {ComponentClass} Component - class of the component to create
59
+ * @param {ComponentConfig<ComponentClass>} [config] - Config supplied to component
60
+ * @param {OnErrorCallback<ComponentClass> | Element | Document | CreateAllOptions<ComponentClass> } [createAllOptions] - options for createAll including scope of the document to search within and callback function if error throw by component on init
61
+ * @returns {Array<InstanceType<ComponentClass>>} - array of instantiated components
62
62
  */
63
63
  function createAll(Component, config, createAllOptions) {
64
64
  let $scope = document;
@@ -105,7 +105,7 @@ function createAll(Component, config, createAllOptions) {
105
105
  }).filter(Boolean);
106
106
  }
107
107
  /**
108
- * @typedef {{new (...args: any[]): any, defaults?: object, moduleName: string}} CompatibleClass
108
+ * @typedef {{new (...args: any[]): any, moduleName: string}} CompatibleClass
109
109
  */
110
110
  /**
111
111
  * Config for all components via `initAll()`
@@ -139,23 +139,27 @@ function createAll(Component, config, createAllOptions) {
139
139
  * @typedef {keyof Config} ConfigKey
140
140
  */
141
141
  /**
142
- * @template {CompatibleClass} T
142
+ * @template {CompatibleClass} ComponentClass
143
+ * @typedef {ConstructorParameters<ComponentClass>[1]} ComponentConfig
144
+ */
145
+ /**
146
+ * @template {CompatibleClass} ComponentClass
143
147
  * @typedef {object} ErrorContext
144
148
  * @property {Element} [element] - Element used for component module initialisation
145
- * @property {T} [component] - Class of component
146
- * @property {T["defaults"]} config - Config supplied to component
149
+ * @property {ComponentClass} [component] - Class of component
150
+ * @property {ComponentConfig<ComponentClass>} config - Config supplied to component
147
151
  */
148
152
  /**
149
- * @template {CompatibleClass} T
153
+ * @template {CompatibleClass} ComponentClass
150
154
  * @callback OnErrorCallback
151
155
  * @param {unknown} error - Thrown error
152
- * @param {ErrorContext<T>} context - Object containing the element, component class and configuration
156
+ * @param {ErrorContext<ComponentClass>} context - Object containing the element, component class and configuration
153
157
  */
154
158
  /**
155
- * @template {CompatibleClass} T
159
+ * @template {CompatibleClass} ComponentClass
156
160
  * @typedef {object} CreateAllOptions
157
161
  * @property {Element | Document} [scope] - scope of the document to search within
158
- * @property {OnErrorCallback<T>} [onError] - callback function if error throw by component on init
162
+ * @property {OnErrorCallback<ComponentClass>} [onError] - callback function if error throw by component on init
159
163
  */
160
164
 
161
165
  export { createAll, initAll };
@@ -1 +1 @@
1
- {"version":3,"file":"init.mjs","sources":["../../src/govuk/init.mjs"],"sourcesContent":["import { isSupported } from './common/index.mjs'\nimport { Accordion } from './components/accordion/accordion.mjs'\nimport { Button } from './components/button/button.mjs'\nimport { CharacterCount } from './components/character-count/character-count.mjs'\nimport { Checkboxes } from './components/checkboxes/checkboxes.mjs'\nimport { ErrorSummary } from './components/error-summary/error-summary.mjs'\nimport { ExitThisPage } from './components/exit-this-page/exit-this-page.mjs'\nimport { Header } from './components/header/header.mjs'\nimport { NotificationBanner } from './components/notification-banner/notification-banner.mjs'\nimport { PasswordInput } from './components/password-input/password-input.mjs'\nimport { Radios } from './components/radios/radios.mjs'\nimport { ServiceNavigation } from './components/service-navigation/service-navigation.mjs'\nimport { SkipLink } from './components/skip-link/skip-link.mjs'\nimport { Tabs } from './components/tabs/tabs.mjs'\nimport { SupportError } from './errors/index.mjs'\n\n/**\n * Initialise all components\n *\n * Use the `data-module` attributes to find, instantiate and init all of the\n * components provided as part of GOV.UK Frontend.\n *\n * @param {Config & { scope?: Element, onError?: OnErrorCallback<CompatibleClass> }} [config] - Config for all components (with optional scope)\n */\nfunction initAll(config) {\n config = typeof config !== 'undefined' ? config : {}\n\n // Skip initialisation when GOV.UK Frontend is not supported\n if (!isSupported()) {\n if (config.onError) {\n config.onError(new SupportError(), {\n config\n })\n } else {\n console.log(new SupportError())\n }\n return\n }\n\n const components = /** @type {const} */ ([\n [Accordion, config.accordion],\n [Button, config.button],\n [CharacterCount, config.characterCount],\n [Checkboxes],\n [ErrorSummary, config.errorSummary],\n [ExitThisPage, config.exitThisPage],\n [Header],\n [NotificationBanner, config.notificationBanner],\n [PasswordInput, config.passwordInput],\n [Radios],\n [ServiceNavigation],\n [SkipLink],\n [Tabs]\n ])\n\n // Allow the user to initialise GOV.UK Frontend in only certain sections of the page\n // Defaults to the entire document if nothing is set.\n // const $scope = config.scope ?? document\n\n const options = {\n scope: config.scope ?? document,\n onError: config.onError\n }\n\n components.forEach(([Component, config]) => {\n createAll(Component, config, options)\n })\n}\n\n/**\n * Create all instances of a specific component on the page\n *\n * Uses the `data-module` attribute to find all elements matching the specified\n * component on the page, creating instances of the component object for each\n * of them.\n *\n * Any component errors will be caught and logged to the console.\n *\n * @template {CompatibleClass} T\n * @param {T} Component - class of the component to create\n * @param {T[\"defaults\"]} [config] - Config supplied to component\n * @param {OnErrorCallback<T> | Element | Document | CreateAllOptions<T> } [createAllOptions] - options for createAll including scope of the document to search within and callback function if error throw by component on init\n * @returns {Array<InstanceType<T>>} - array of instantiated components\n */\nfunction createAll(Component, config, createAllOptions) {\n let /** @type {Element | Document} */ $scope = document\n let /** @type {OnErrorCallback<Component> | undefined} */ onError\n\n if (typeof createAllOptions === 'object') {\n createAllOptions = /** @type {CreateAllOptions<Component>} */ (\n // eslint-disable-next-line no-self-assign\n createAllOptions\n )\n\n $scope = createAllOptions.scope ?? $scope\n onError = createAllOptions.onError\n }\n\n if (typeof createAllOptions === 'function') {\n onError = createAllOptions\n }\n\n if (createAllOptions instanceof HTMLElement) {\n $scope = createAllOptions\n }\n\n const $elements = $scope.querySelectorAll(\n `[data-module=\"${Component.moduleName}\"]`\n )\n\n // Skip initialisation when GOV.UK Frontend is not supported\n if (!isSupported()) {\n if (onError) {\n onError(new SupportError(), {\n component: Component,\n config\n })\n } else {\n console.log(new SupportError())\n }\n return []\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-return --\n * We can't define CompatibleClass as `{new(): CompatibleClass, moduleName: string}`,\n * as when doing `typeof Accordion` (or any component), TypeScript doesn't seem\n * to acknowledge the static `moduleName` that's set in our component classes.\n * This means we have to set the constructor of `CompatibleClass` as `{new(): any}`,\n * leading to ESLint frowning that we're returning `any[]`.\n */\n return Array.from($elements)\n .map(($element) => {\n try {\n // Only pass config to components that accept it\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return typeof config !== 'undefined'\n ? new Component($element, config)\n : new Component($element)\n } catch (error) {\n if (onError) {\n onError(error, {\n element: $element,\n component: Component,\n config\n })\n } else {\n console.log(error)\n }\n\n return null\n }\n })\n .filter(Boolean) // Exclude components that errored\n}\n\nexport { initAll, createAll }\n\n/* eslint-disable jsdoc/valid-types --\n * `{new(...args: any[] ): object}` is not recognised as valid\n * https://github.com/gajus/eslint-plugin-jsdoc/issues/145#issuecomment-1308722878\n * https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/131\n **/\n\n/**\n * @typedef {{new (...args: any[]): any, defaults?: object, moduleName: string}} CompatibleClass\n */\n\n/* eslint-enable jsdoc/valid-types */\n\n/**\n * Config for all components via `initAll()`\n *\n * @typedef {object} Config\n * @property {AccordionConfig} [accordion] - Accordion config\n * @property {ButtonConfig} [button] - Button config\n * @property {CharacterCountConfig} [characterCount] - Character Count config\n * @property {ErrorSummaryConfig} [errorSummary] - Error Summary config\n * @property {ExitThisPageConfig} [exitThisPage] - Exit This Page config\n * @property {NotificationBannerConfig} [notificationBanner] - Notification Banner config\n * @property {PasswordInputConfig} [passwordInput] - Password input config\n */\n\n/**\n * Config for individual components\n *\n * @typedef {import('./components/accordion/accordion.mjs').AccordionConfig} AccordionConfig\n * @typedef {import('./components/accordion/accordion.mjs').AccordionTranslations} AccordionTranslations\n * @typedef {import('./components/button/button.mjs').ButtonConfig} ButtonConfig\n * @typedef {import('./components/character-count/character-count.mjs').CharacterCountConfig} CharacterCountConfig\n * @typedef {import('./components/character-count/character-count.mjs').CharacterCountTranslations} CharacterCountTranslations\n * @typedef {import('./components/error-summary/error-summary.mjs').ErrorSummaryConfig} ErrorSummaryConfig\n * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageConfig} ExitThisPageConfig\n * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageTranslations} ExitThisPageTranslations\n * @typedef {import('./components/notification-banner/notification-banner.mjs').NotificationBannerConfig} NotificationBannerConfig\n * @typedef {import('./components/password-input/password-input.mjs').PasswordInputConfig} PasswordInputConfig\n */\n\n/**\n * Component config keys, e.g. `accordion` and `characterCount`\n *\n * @typedef {keyof Config} ConfigKey\n */\n\n/**\n * @template {CompatibleClass} T\n * @typedef {object} ErrorContext\n * @property {Element} [element] - Element used for component module initialisation\n * @property {T} [component] - Class of component\n * @property {T[\"defaults\"]} config - Config supplied to component\n */\n\n/**\n * @template {CompatibleClass} T\n * @callback OnErrorCallback\n * @param {unknown} error - Thrown error\n * @param {ErrorContext<T>} context - Object containing the element, component class and configuration\n */\n\n/**\n * @template {CompatibleClass} T\n * @typedef {object} CreateAllOptions\n * @property {Element | Document} [scope] - scope of the document to search within\n * @property {OnErrorCallback<T>} [onError] - callback function if error throw by component on init\n */\n"],"names":["initAll","config","_config$scope","isSupported","onError","SupportError","console","log","components","Accordion","accordion","Button","button","CharacterCount","characterCount","Checkboxes","ErrorSummary","errorSummary","ExitThisPage","exitThisPage","Header","NotificationBanner","notificationBanner","PasswordInput","passwordInput","Radios","ServiceNavigation","SkipLink","Tabs","options","scope","document","forEach","Component","createAll","createAllOptions","$scope","_createAllOptions$sco","HTMLElement","$elements","querySelectorAll","moduleName","component","Array","from","map","$element","error","element","filter","Boolean"],"mappings":"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"}
1
+ {"version":3,"file":"init.mjs","sources":["../../src/govuk/init.mjs"],"sourcesContent":["import { isSupported } from './common/index.mjs'\nimport { Accordion } from './components/accordion/accordion.mjs'\nimport { Button } from './components/button/button.mjs'\nimport { CharacterCount } from './components/character-count/character-count.mjs'\nimport { Checkboxes } from './components/checkboxes/checkboxes.mjs'\nimport { ErrorSummary } from './components/error-summary/error-summary.mjs'\nimport { ExitThisPage } from './components/exit-this-page/exit-this-page.mjs'\nimport { Header } from './components/header/header.mjs'\nimport { NotificationBanner } from './components/notification-banner/notification-banner.mjs'\nimport { PasswordInput } from './components/password-input/password-input.mjs'\nimport { Radios } from './components/radios/radios.mjs'\nimport { ServiceNavigation } from './components/service-navigation/service-navigation.mjs'\nimport { SkipLink } from './components/skip-link/skip-link.mjs'\nimport { Tabs } from './components/tabs/tabs.mjs'\nimport { SupportError } from './errors/index.mjs'\n\n/**\n * Initialise all components\n *\n * Use the `data-module` attributes to find, instantiate and init all of the\n * components provided as part of GOV.UK Frontend.\n *\n * @param {Config & { scope?: Element, onError?: OnErrorCallback<CompatibleClass> }} [config] - Config for all components (with optional scope)\n */\nfunction initAll(config) {\n config = typeof config !== 'undefined' ? config : {}\n\n // Skip initialisation when GOV.UK Frontend is not supported\n if (!isSupported()) {\n if (config.onError) {\n config.onError(new SupportError(), {\n config\n })\n } else {\n console.log(new SupportError())\n }\n return\n }\n\n const components = /** @type {const} */ ([\n [Accordion, config.accordion],\n [Button, config.button],\n [CharacterCount, config.characterCount],\n [Checkboxes],\n [ErrorSummary, config.errorSummary],\n [ExitThisPage, config.exitThisPage],\n [Header],\n [NotificationBanner, config.notificationBanner],\n [PasswordInput, config.passwordInput],\n [Radios],\n [ServiceNavigation],\n [SkipLink],\n [Tabs]\n ])\n\n // Allow the user to initialise GOV.UK Frontend in only certain sections of the page\n // Defaults to the entire document if nothing is set.\n // const $scope = config.scope ?? document\n\n const options = {\n scope: config.scope ?? document,\n onError: config.onError\n }\n\n components.forEach(([Component, config]) => {\n createAll(Component, config, options)\n })\n}\n\n/**\n * Create all instances of a specific component on the page\n *\n * Uses the `data-module` attribute to find all elements matching the specified\n * component on the page, creating instances of the component object for each\n * of them.\n *\n * Any component errors will be caught and logged to the console.\n *\n * @template {CompatibleClass} ComponentClass\n * @param {ComponentClass} Component - class of the component to create\n * @param {ComponentConfig<ComponentClass>} [config] - Config supplied to component\n * @param {OnErrorCallback<ComponentClass> | Element | Document | CreateAllOptions<ComponentClass> } [createAllOptions] - options for createAll including scope of the document to search within and callback function if error throw by component on init\n * @returns {Array<InstanceType<ComponentClass>>} - array of instantiated components\n */\nfunction createAll(Component, config, createAllOptions) {\n let /** @type {Element | Document} */ $scope = document\n let /** @type {OnErrorCallback<Component> | undefined} */ onError\n\n if (typeof createAllOptions === 'object') {\n createAllOptions = /** @type {CreateAllOptions<Component>} */ (\n // eslint-disable-next-line no-self-assign\n createAllOptions\n )\n\n $scope = createAllOptions.scope ?? $scope\n onError = createAllOptions.onError\n }\n\n if (typeof createAllOptions === 'function') {\n onError = createAllOptions\n }\n\n if (createAllOptions instanceof HTMLElement) {\n $scope = createAllOptions\n }\n\n const $elements = $scope.querySelectorAll(\n `[data-module=\"${Component.moduleName}\"]`\n )\n\n // Skip initialisation when GOV.UK Frontend is not supported\n if (!isSupported()) {\n if (onError) {\n onError(new SupportError(), {\n component: Component,\n config\n })\n } else {\n console.log(new SupportError())\n }\n return []\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-return --\n * We can't define CompatibleClass as `{new(): CompatibleClass, moduleName: string}`,\n * as when doing `typeof Accordion` (or any component), TypeScript doesn't seem\n * to acknowledge the static `moduleName` that's set in our component classes.\n * This means we have to set the constructor of `CompatibleClass` as `{new(): any}`,\n * leading to ESLint frowning that we're returning `any[]`.\n */\n return Array.from($elements)\n .map(($element) => {\n try {\n // Only pass config to components that accept it\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return typeof config !== 'undefined'\n ? new Component($element, config)\n : new Component($element)\n } catch (error) {\n if (onError) {\n onError(error, {\n element: $element,\n component: Component,\n config\n })\n } else {\n console.log(error)\n }\n\n return null\n }\n })\n .filter(Boolean) // Exclude components that errored\n}\n\nexport { initAll, createAll }\n\n/* eslint-disable jsdoc/valid-types --\n * `{new(...args: any[] ): object}` is not recognised as valid\n * https://github.com/gajus/eslint-plugin-jsdoc/issues/145#issuecomment-1308722878\n * https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/131\n **/\n\n/**\n * @typedef {{new (...args: any[]): any, moduleName: string}} CompatibleClass\n */\n\n/* eslint-enable jsdoc/valid-types */\n\n/**\n * Config for all components via `initAll()`\n *\n * @typedef {object} Config\n * @property {AccordionConfig} [accordion] - Accordion config\n * @property {ButtonConfig} [button] - Button config\n * @property {CharacterCountConfig} [characterCount] - Character Count config\n * @property {ErrorSummaryConfig} [errorSummary] - Error Summary config\n * @property {ExitThisPageConfig} [exitThisPage] - Exit This Page config\n * @property {NotificationBannerConfig} [notificationBanner] - Notification Banner config\n * @property {PasswordInputConfig} [passwordInput] - Password input config\n */\n\n/**\n * Config for individual components\n *\n * @typedef {import('./components/accordion/accordion.mjs').AccordionConfig} AccordionConfig\n * @typedef {import('./components/accordion/accordion.mjs').AccordionTranslations} AccordionTranslations\n * @typedef {import('./components/button/button.mjs').ButtonConfig} ButtonConfig\n * @typedef {import('./components/character-count/character-count.mjs').CharacterCountConfig} CharacterCountConfig\n * @typedef {import('./components/character-count/character-count.mjs').CharacterCountTranslations} CharacterCountTranslations\n * @typedef {import('./components/error-summary/error-summary.mjs').ErrorSummaryConfig} ErrorSummaryConfig\n * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageConfig} ExitThisPageConfig\n * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageTranslations} ExitThisPageTranslations\n * @typedef {import('./components/notification-banner/notification-banner.mjs').NotificationBannerConfig} NotificationBannerConfig\n * @typedef {import('./components/password-input/password-input.mjs').PasswordInputConfig} PasswordInputConfig\n */\n\n/**\n * Component config keys, e.g. `accordion` and `characterCount`\n *\n * @typedef {keyof Config} ConfigKey\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @typedef {ConstructorParameters<ComponentClass>[1]} ComponentConfig\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @typedef {object} ErrorContext\n * @property {Element} [element] - Element used for component module initialisation\n * @property {ComponentClass} [component] - Class of component\n * @property {ComponentConfig<ComponentClass>} config - Config supplied to component\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @callback OnErrorCallback\n * @param {unknown} error - Thrown error\n * @param {ErrorContext<ComponentClass>} context - Object containing the element, component class and configuration\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @typedef {object} CreateAllOptions\n * @property {Element | Document} [scope] - scope of the document to search within\n * @property {OnErrorCallback<ComponentClass>} [onError] - callback function if error throw by component on init\n */\n"],"names":["initAll","config","_config$scope","isSupported","onError","SupportError","console","log","components","Accordion","accordion","Button","button","CharacterCount","characterCount","Checkboxes","ErrorSummary","errorSummary","ExitThisPage","exitThisPage","Header","NotificationBanner","notificationBanner","PasswordInput","passwordInput","Radios","ServiceNavigation","SkipLink","Tabs","options","scope","document","forEach","Component","createAll","createAllOptions","$scope","_createAllOptions$sco","HTMLElement","$elements","querySelectorAll","moduleName","component","Array","from","map","$element","error","element","filter","Boolean"],"mappings":"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"}
@@ -216,8 +216,7 @@ $_govuk-typography-scale-modern: (
216
216
  ),
217
217
  27: (
218
218
  // Made same as 24 on mobile (consider deprecating this size)
219
- null:
220
- (
219
+ null: (
221
220
  font-size: 21px,
222
221
  line-height: 25px
223
222
  ),
@@ -232,8 +231,7 @@ $_govuk-typography-scale-modern: (
232
231
  ),
233
232
  24: (
234
233
  // Bump up mobile size from 18/20 to 21/25
235
- null:
236
- (
234
+ null: (
237
235
  font-size: 21px,
238
236
  line-height: 25px
239
237
  ),
@@ -248,8 +246,7 @@ $_govuk-typography-scale-modern: (
248
246
  ),
249
247
  19: (
250
248
  // Stay at 19/25 at all sizes
251
- null:
252
- (
249
+ null: (
253
250
  font-size: 19px,
254
251
  line-height: 25px
255
252
  ),
@@ -260,8 +257,7 @@ $_govuk-typography-scale-modern: (
260
257
  ),
261
258
  16: (
262
259
  // Stay at 16/20 at all sizes
263
- null:
264
- (
260
+ null: (
265
261
  font-size: 16px,
266
262
  line-height: 20px
267
263
  ),
@@ -272,8 +268,7 @@ $_govuk-typography-scale-modern: (
272
268
  ),
273
269
  14: (
274
270
  // Stay at 14/20 at all sizes (consider deprecating this size)
275
- null:
276
- (
271
+ null: (
277
272
  font-size: 14px,
278
273
  line-height: 20px
279
274
  ),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/govuk/settings/_typography-responsive.scss"],"names":[],"mappings":"AAAA,GAAG;AACH,6BAA6B;AAC7B,GAAG;;AAEH,iBAAiB;AACjB,EAAE;AACF,+EAA+E;AAC/E,wDAAwD;AACxD,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,yBAAyB;AACzB,EAAE;AACF,eAAe;AACf,iBAAiB;;AAEjB,oCAAoC;;AAEpC,wCAAwC;AACxC,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,yBAAyB;AACzB,EAAE;AACF,4BAA4B;AAC5B,EAAE;AACF,gBAAgB;AAChB,iBAAiB;;AAEjB,2CAA2C;;AAE3C,4CAA4C;AAC5C,EAAE;AACF,YAAY;AACZ,EAAE;AACF,wFAAwF;AACxF,4FAA4F;AAC5F,+EAA+E;AAC/E,mFAAmF;AACnF,EAAE;AACF,kBAAkB;;AAElB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsHC;;AAED,4CAA4C;AAC5C,EAAE;AACF,YAAY;AACZ,EAAE;AACF,wFAAwF;AACxF,4FAA4F;AAC5F,+EAA+E;AAC/E,mFAAmF;AACnF,EAAE;AACF,kBAAkB;;AAElB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoHC;;AAED,iCAAiC;AACjC,EAAE;AACF,8EAA8E;AAC9E,eAAe;AACf,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,UAAU;AACV,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,gEAAgE;AAChE,EAAE;AACF,6EAA6E;AAC7E,EAAE;AACF,YAAY;AACZ,EAAE;AACF,wFAAwF;AACxF,4FAA4F;AAC5F,+EAA+E;AAC/E,mFAAmF;AACnF,EAAE;AACF,iBAAiB;;AAEjB;;;;UAIU","file":"_typography-responsive.scss","sourcesContent":["////\n/// @group settings/typography\n////\n\n/// Root font size\n///\n/// This is used to calculate rem sizes for the typography, and should match the\n/// _effective_ font-size of your root (or html) element.\n///\n/// Ideally you should not be setting the font-size on the html or root element\n/// in order to allow it to scale with user-preference, in which case this\n/// should be set to 16px.\n///\n/// @type Number\n/// @access public\n\n$govuk-root-font-size: 16px !default;\n\n/// Feature flag for new typography scale\n///\n/// When set to true, $govuk-typography-scale will use the new font map instead\n/// of the current/old one as well as apply changes in components to account\n/// for the updated scale.\n///\n/// Should be removed in 6.0.\n///\n/// @type Boolean\n/// @access public\n\n$govuk-new-typography-scale: false !default;\n\n/// The font map for the old typography scale\n///\n/// @type Map\n///\n/// @prop {Number} $point.$breakpoint.font-size - Font size for `$point` at `$breakpoint`\n/// @prop {Number} $point.$breakpoint.line-height - Line height for `$point` at `$breakpoint`\n/// @prop {Number} $point.print.font-size - Font size for `$point` when printing\n/// @prop {Number} $point.print.line-height - Line height for `$point` when printing\n///\n/// @access private\n\n$_govuk-typography-scale-legacy: (\n 80: (\n null: (\n font-size: 53px,\n line-height: 55px\n ),\n tablet: (\n font-size: 80px,\n line-height: 80px\n ),\n print: (\n font-size: 53pt,\n line-height: 1.1\n )\n ),\n 48: (\n null: (\n font-size: 32px,\n line-height: 35px\n ),\n tablet: (\n font-size: 48px,\n line-height: 50px\n ),\n print: (\n font-size: 32pt,\n line-height: 1.15\n )\n ),\n 36: (\n null: (\n font-size: 24px,\n line-height: 25px\n ),\n tablet: (\n font-size: 36px,\n line-height: 40px\n ),\n print: (\n font-size: 24pt,\n line-height: 1.05\n )\n ),\n 27: (\n null: (\n font-size: 18px,\n line-height: 20px\n ),\n tablet: (\n font-size: 27px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 24: (\n null: (\n font-size: 18px,\n line-height: 20px\n ),\n tablet: (\n font-size: 24px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 19: (\n null: (\n font-size: 16px,\n line-height: 20px\n ),\n tablet: (\n font-size: 19px,\n line-height: 25px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.15\n )\n ),\n 16: (\n null: (\n font-size: 14px,\n line-height: 16px\n ),\n tablet: (\n font-size: 16px,\n line-height: 20px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.2\n )\n ),\n 14: (\n null: (\n font-size: 12px,\n line-height: 15px\n ),\n tablet: (\n font-size: 14px,\n line-height: 20px\n ),\n print: (\n font-size: 12pt,\n line-height: 1.2\n ),\n deprecation: (\n key: \"govuk-typography-scale-14\",\n message: \"14 on the type scale is deprecated and will be removed as \" +\n \"a possible option in the next major version.\"\n )\n )\n);\n\n/// The font map for the new typography scale\n///\n/// @type Map\n///\n/// @prop {Number} $point.$breakpoint.font-size - Font size for `$point` at `$breakpoint`\n/// @prop {Number} $point.$breakpoint.line-height - Line height for `$point` at `$breakpoint`\n/// @prop {Number} $point.print.font-size - Font size for `$point` when printing\n/// @prop {Number} $point.print.line-height - Line height for `$point` when printing\n///\n/// @access private\n\n$_govuk-typography-scale-modern: (\n 80: (\n null: (\n font-size: 53px,\n line-height: 55px\n ),\n tablet: (\n font-size: 80px,\n line-height: 80px\n ),\n print: (\n font-size: 53pt,\n line-height: 1.1\n )\n ),\n 48: (\n null: (\n font-size: 32px,\n line-height: 35px\n ),\n tablet: (\n font-size: 48px,\n line-height: 50px\n ),\n print: (\n font-size: 32pt,\n line-height: 1.15\n )\n ),\n 36: (\n null: (\n font-size: 27px,\n line-height: 30px\n ),\n tablet: (\n font-size: 36px,\n line-height: 40px\n ),\n print: (\n font-size: 24pt,\n line-height: 1.05\n )\n ),\n 27: (\n // Made same as 24 on mobile (consider deprecating this size)\n null:\n (\n font-size: 21px,\n line-height: 25px\n ),\n tablet: (\n font-size: 27px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 24: (\n // Bump up mobile size from 18/20 to 21/25\n null:\n (\n font-size: 21px,\n line-height: 25px\n ),\n tablet: (\n font-size: 24px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 19: (\n // Stay at 19/25 at all sizes\n null:\n (\n font-size: 19px,\n line-height: 25px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.15\n )\n ),\n 16: (\n // Stay at 16/20 at all sizes\n null:\n (\n font-size: 16px,\n line-height: 20px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.2\n )\n ),\n 14: (\n // Stay at 14/20 at all sizes (consider deprecating this size)\n null:\n (\n font-size: 14px,\n line-height: 20px\n ),\n print: (\n font-size: 12pt,\n line-height: 1.2\n ),\n deprecation: (\n key: \"govuk-typography-scale-14\",\n message: \"14 on the type scale is deprecated and will be removed as \" +\n \"a possible option in the next major version.\"\n )\n )\n);\n\n/// Responsive typography font map\n///\n/// This is used to generate responsive typography that adapts according to the\n/// breakpoints.\n///\n/// Font size and font weight can be defined for each breakpoint. You can define\n/// different behaviour on tablet and desktop. The 'null' breakpoint is for\n/// mobile.\n///\n/// Line-heights will automatically be converted from pixel measurements into\n/// relative values. For example, with a font-size of 16px and a line-height of\n/// 24px, the line-height will be converted to 1.5 before output.\n///\n/// You can also specify a separate font size and line height for print media.\n///\n/// @type Map\n///\n/// @prop {Number} $point.$breakpoint.font-size - Font size for `$point` at `$breakpoint`\n/// @prop {Number} $point.$breakpoint.line-height - Line height for `$point` at `$breakpoint`\n/// @prop {Number} $point.print.font-size - Font size for `$point` when printing\n/// @prop {Number} $point.print.line-height - Line height for `$point` when printing\n///\n/// @access public\n\n$govuk-typography-scale: if(\n $govuk-new-typography-scale,\n $_govuk-typography-scale-modern,\n $_govuk-typography-scale-legacy\n) !default;\n"]}
1
+ {"version":3,"sources":["../../../src/govuk/settings/_typography-responsive.scss"],"names":[],"mappings":"AAAA,GAAG;AACH,6BAA6B;AAC7B,GAAG;;AAEH,iBAAiB;AACjB,EAAE;AACF,+EAA+E;AAC/E,wDAAwD;AACxD,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,yBAAyB;AACzB,EAAE;AACF,eAAe;AACf,iBAAiB;;AAEjB,oCAAoC;;AAEpC,wCAAwC;AACxC,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,yBAAyB;AACzB,EAAE;AACF,4BAA4B;AAC5B,EAAE;AACF,gBAAgB;AAChB,iBAAiB;;AAEjB,2CAA2C;;AAE3C,4CAA4C;AAC5C,EAAE;AACF,YAAY;AACZ,EAAE;AACF,wFAAwF;AACxF,4FAA4F;AAC5F,+EAA+E;AAC/E,mFAAmF;AACnF,EAAE;AACF,kBAAkB;;AAElB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsHC;;AAED,4CAA4C;AAC5C,EAAE;AACF,YAAY;AACZ,EAAE;AACF,wFAAwF;AACxF,4FAA4F;AAC5F,+EAA+E;AAC/E,mFAAmF;AACnF,EAAE;AACF,kBAAkB;;AAElB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+GC;;AAED,iCAAiC;AACjC,EAAE;AACF,8EAA8E;AAC9E,eAAe;AACf,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,UAAU;AACV,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,gEAAgE;AAChE,EAAE;AACF,6EAA6E;AAC7E,EAAE;AACF,YAAY;AACZ,EAAE;AACF,wFAAwF;AACxF,4FAA4F;AAC5F,+EAA+E;AAC/E,mFAAmF;AACnF,EAAE;AACF,iBAAiB;;AAEjB;;;;UAIU","file":"_typography-responsive.scss","sourcesContent":["////\n/// @group settings/typography\n////\n\n/// Root font size\n///\n/// This is used to calculate rem sizes for the typography, and should match the\n/// _effective_ font-size of your root (or html) element.\n///\n/// Ideally you should not be setting the font-size on the html or root element\n/// in order to allow it to scale with user-preference, in which case this\n/// should be set to 16px.\n///\n/// @type Number\n/// @access public\n\n$govuk-root-font-size: 16px !default;\n\n/// Feature flag for new typography scale\n///\n/// When set to true, $govuk-typography-scale will use the new font map instead\n/// of the current/old one as well as apply changes in components to account\n/// for the updated scale.\n///\n/// Should be removed in 6.0.\n///\n/// @type Boolean\n/// @access public\n\n$govuk-new-typography-scale: false !default;\n\n/// The font map for the old typography scale\n///\n/// @type Map\n///\n/// @prop {Number} $point.$breakpoint.font-size - Font size for `$point` at `$breakpoint`\n/// @prop {Number} $point.$breakpoint.line-height - Line height for `$point` at `$breakpoint`\n/// @prop {Number} $point.print.font-size - Font size for `$point` when printing\n/// @prop {Number} $point.print.line-height - Line height for `$point` when printing\n///\n/// @access private\n\n$_govuk-typography-scale-legacy: (\n 80: (\n null: (\n font-size: 53px,\n line-height: 55px\n ),\n tablet: (\n font-size: 80px,\n line-height: 80px\n ),\n print: (\n font-size: 53pt,\n line-height: 1.1\n )\n ),\n 48: (\n null: (\n font-size: 32px,\n line-height: 35px\n ),\n tablet: (\n font-size: 48px,\n line-height: 50px\n ),\n print: (\n font-size: 32pt,\n line-height: 1.15\n )\n ),\n 36: (\n null: (\n font-size: 24px,\n line-height: 25px\n ),\n tablet: (\n font-size: 36px,\n line-height: 40px\n ),\n print: (\n font-size: 24pt,\n line-height: 1.05\n )\n ),\n 27: (\n null: (\n font-size: 18px,\n line-height: 20px\n ),\n tablet: (\n font-size: 27px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 24: (\n null: (\n font-size: 18px,\n line-height: 20px\n ),\n tablet: (\n font-size: 24px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 19: (\n null: (\n font-size: 16px,\n line-height: 20px\n ),\n tablet: (\n font-size: 19px,\n line-height: 25px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.15\n )\n ),\n 16: (\n null: (\n font-size: 14px,\n line-height: 16px\n ),\n tablet: (\n font-size: 16px,\n line-height: 20px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.2\n )\n ),\n 14: (\n null: (\n font-size: 12px,\n line-height: 15px\n ),\n tablet: (\n font-size: 14px,\n line-height: 20px\n ),\n print: (\n font-size: 12pt,\n line-height: 1.2\n ),\n deprecation: (\n key: \"govuk-typography-scale-14\",\n message: \"14 on the type scale is deprecated and will be removed as \" +\n \"a possible option in the next major version.\"\n )\n )\n);\n\n/// The font map for the new typography scale\n///\n/// @type Map\n///\n/// @prop {Number} $point.$breakpoint.font-size - Font size for `$point` at `$breakpoint`\n/// @prop {Number} $point.$breakpoint.line-height - Line height for `$point` at `$breakpoint`\n/// @prop {Number} $point.print.font-size - Font size for `$point` when printing\n/// @prop {Number} $point.print.line-height - Line height for `$point` when printing\n///\n/// @access private\n\n$_govuk-typography-scale-modern: (\n 80: (\n null: (\n font-size: 53px,\n line-height: 55px\n ),\n tablet: (\n font-size: 80px,\n line-height: 80px\n ),\n print: (\n font-size: 53pt,\n line-height: 1.1\n )\n ),\n 48: (\n null: (\n font-size: 32px,\n line-height: 35px\n ),\n tablet: (\n font-size: 48px,\n line-height: 50px\n ),\n print: (\n font-size: 32pt,\n line-height: 1.15\n )\n ),\n 36: (\n null: (\n font-size: 27px,\n line-height: 30px\n ),\n tablet: (\n font-size: 36px,\n line-height: 40px\n ),\n print: (\n font-size: 24pt,\n line-height: 1.05\n )\n ),\n 27: (\n // Made same as 24 on mobile (consider deprecating this size)\n null: (\n font-size: 21px,\n line-height: 25px\n ),\n tablet: (\n font-size: 27px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 24: (\n // Bump up mobile size from 18/20 to 21/25\n null: (\n font-size: 21px,\n line-height: 25px\n ),\n tablet: (\n font-size: 24px,\n line-height: 30px\n ),\n print: (\n font-size: 18pt,\n line-height: 1.15\n )\n ),\n 19: (\n // Stay at 19/25 at all sizes\n null: (\n font-size: 19px,\n line-height: 25px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.15\n )\n ),\n 16: (\n // Stay at 16/20 at all sizes\n null: (\n font-size: 16px,\n line-height: 20px\n ),\n print: (\n font-size: 14pt,\n line-height: 1.2\n )\n ),\n 14: (\n // Stay at 14/20 at all sizes (consider deprecating this size)\n null: (\n font-size: 14px,\n line-height: 20px\n ),\n print: (\n font-size: 12pt,\n line-height: 1.2\n ),\n deprecation: (\n key: \"govuk-typography-scale-14\",\n message: \"14 on the type scale is deprecated and will be removed as \" +\n \"a possible option in the next major version.\"\n )\n )\n);\n\n/// Responsive typography font map\n///\n/// This is used to generate responsive typography that adapts according to the\n/// breakpoints.\n///\n/// Font size and font weight can be defined for each breakpoint. You can define\n/// different behaviour on tablet and desktop. The 'null' breakpoint is for\n/// mobile.\n///\n/// Line-heights will automatically be converted from pixel measurements into\n/// relative values. For example, with a font-size of 16px and a line-height of\n/// 24px, the line-height will be converted to 1.5 before output.\n///\n/// You can also specify a separate font size and line height for print media.\n///\n/// @type Map\n///\n/// @prop {Number} $point.$breakpoint.font-size - Font size for `$point` at `$breakpoint`\n/// @prop {Number} $point.$breakpoint.line-height - Line height for `$point` at `$breakpoint`\n/// @prop {Number} $point.print.font-size - Font size for `$point` when printing\n/// @prop {Number} $point.print.line-height - Line height for `$point` when printing\n///\n/// @access public\n\n$govuk-typography-scale: if(\n $govuk-new-typography-scale,\n $_govuk-typography-scale-modern,\n $_govuk-typography-scale-legacy\n) !default;\n"]}
@@ -3,7 +3,7 @@
3
3
  "description": "GOV.UK Frontend contains the code you need to start building a user interface for government platforms and services.",
4
4
  "urls": {
5
5
  "documentation": "https://design-system.service.gov.uk/",
6
- "releaseNotes": "https://github.com/alphagov/govuk-frontend/releases/tag/v5.7.1",
6
+ "releaseNotes": "https://github.com/alphagov/govuk-frontend/releases/tag/v5.8.0",
7
7
  "versionHistory": "https://github.com/alphagov/govuk-frontend/releases"
8
8
  }
9
9
  },
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "govuk-frontend",
3
3
  "description": "GOV.UK Frontend contains the code you need to start building a user interface for government platforms and services.",
4
- "version": "5.7.1",
4
+ "version": "5.8.0",
5
5
  "main": "dist/govuk/all.bundle.js",
6
6
  "module": "dist/govuk/all.mjs",
7
- "sass": "dist/govuk/all.scss",
7
+ "sass": "dist/govuk/index.scss",
8
8
  "files": [
9
9
  "dist",
10
10
  "govuk-prototype-kit.config.json",
@@ -13,7 +13,7 @@
13
13
  ],
14
14
  "exports": {
15
15
  ".": {
16
- "sass": "./dist/govuk/all.scss",
16
+ "sass": "./dist/govuk/index.scss",
17
17
  "import": "./dist/govuk/all.mjs",
18
18
  "require": "./dist/govuk/all.bundle.js",
19
19
  "default": "./dist/govuk/all.bundle.js"
@@ -62,8 +62,8 @@
62
62
  "version": "echo $npm_package_version"
63
63
  },
64
64
  "devDependencies": {
65
- "@babel/core": "^7.25.7",
66
- "@babel/preset-env": "^7.25.7",
65
+ "@babel/core": "^7.26.0",
66
+ "@babel/preset-env": "^7.26.0",
67
67
  "@govuk-frontend/config": "*",
68
68
  "@govuk-frontend/helpers": "*",
69
69
  "@govuk-frontend/lib": "*",
@@ -77,15 +77,15 @@
77
77
  "govuk-prototype-kit": "^13.16.2",
78
78
  "gulp": "^5.0.0",
79
79
  "gulp-cli": "^3.0.0",
80
- "html-validate": "8.24.0",
80
+ "html-validate": "8.27.0",
81
81
  "nunjucks": "^3.2.4",
82
82
  "outdent": "^0.8.0",
83
- "postcss": "^8.4.47",
83
+ "postcss": "^8.4.49",
84
84
  "postcss-scss": "^4.0.9",
85
- "puppeteer": "^23.5.0",
85
+ "puppeteer": "^23.6.0",
86
86
  "rollup": "^4.19.1",
87
87
  "sass-color-helpers": "^2.1.1",
88
- "sass-embedded": "^1.79.4",
88
+ "sass-embedded": "^1.81.0",
89
89
  "sassdoc": "^2.7.4",
90
90
  "slash": "^5.1.0"
91
91
  }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_publishing_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 51.1.1
4
+ version: 51.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-03 00:00:00.000000000 Z
10
+ date: 2025-02-11 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: govuk_app_config
@@ -1081,14 +1081,12 @@ files:
1081
1081
  - node_modules/govuk-frontend/dist/govuk/assets/manifest.json
1082
1082
  - node_modules/govuk-frontend/dist/govuk/common/closest-attribute-value.mjs
1083
1083
  - node_modules/govuk-frontend/dist/govuk/common/closest-attribute-value.mjs.map
1084
+ - node_modules/govuk-frontend/dist/govuk/common/configuration.mjs
1085
+ - node_modules/govuk-frontend/dist/govuk/common/configuration.mjs.map
1084
1086
  - node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs
1085
1087
  - node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs.map
1086
1088
  - node_modules/govuk-frontend/dist/govuk/common/index.mjs
1087
1089
  - node_modules/govuk-frontend/dist/govuk/common/index.mjs.map
1088
- - node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs
1089
- - node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs.map
1090
- - node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs
1091
- - node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs.map
1092
1090
  - node_modules/govuk-frontend/dist/govuk/components/_all.scss
1093
1091
  - node_modules/govuk-frontend/dist/govuk/components/_all.scss.map
1094
1092
  - node_modules/govuk-frontend/dist/govuk/components/_index.scss
@@ -1,18 +0,0 @@
1
- import { extractConfigByNamespace } from './index.mjs';
2
- import { normaliseString } from './normalise-string.mjs';
3
-
4
- function normaliseDataset(Component, dataset) {
5
- const out = {};
6
- for (const [field, property] of Object.entries(Component.schema.properties)) {
7
- if (field in dataset) {
8
- out[field] = normaliseString(dataset[field], property);
9
- }
10
- if ((property == null ? void 0 : property.type) === 'object') {
11
- out[field] = extractConfigByNamespace(Component, dataset, field);
12
- }
13
- }
14
- return out;
15
- }
16
-
17
- export { normaliseDataset };
18
- //# sourceMappingURL=normalise-dataset.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalise-dataset.mjs","sources":["../../../src/govuk/common/normalise-dataset.mjs"],"sourcesContent":["import { extractConfigByNamespace } from './index.mjs'\nimport { normaliseString } from './normalise-string.mjs'\n\n/**\n * Normalise dataset\n *\n * Loop over an object and normalise each value using {@link normaliseString},\n * optionally expanding nested `i18n.field`\n *\n * @internal\n * @param {{ schema: Schema }} Component - Component class\n * @param {DOMStringMap} dataset - HTML element dataset\n * @returns {ObjectNested} Normalised dataset\n */\nexport function normaliseDataset(Component, dataset) {\n const out = /** @type {ReturnType<typeof normaliseDataset>} */ ({})\n\n // Normalise top-level dataset ('data-*') values using schema types\n for (const [field, property] of Object.entries(Component.schema.properties)) {\n if (field in dataset) {\n out[field] = normaliseString(dataset[field], property)\n }\n\n /**\n * Extract and normalise nested object values automatically using\n * {@link normaliseString} but only schema object types are allowed\n */\n if (property?.type === 'object') {\n out[field] = extractConfigByNamespace(Component, dataset, field)\n }\n }\n\n return out\n}\n\n/**\n * @internal\n * @typedef {import('./index.mjs').ObjectNested} ObjectNested\n * @typedef {import('./index.mjs').Schema} Schema\n */\n"],"names":["normaliseDataset","Component","dataset","out","field","property","Object","entries","schema","properties","normaliseString","type","extractConfigByNamespace"],"mappings":";;;AAcO,SAASA,gBAAgBA,CAACC,SAAS,EAAEC,OAAO,EAAE;EACnD,MAAMC,GAAG,GAAuD,EAAG,CAAA;AAGnE,EAAA,KAAK,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACN,SAAS,CAACO,MAAM,CAACC,UAAU,CAAC,EAAE;IAC3E,IAAIL,KAAK,IAAIF,OAAO,EAAE;AACpBC,MAAAA,GAAG,CAACC,KAAK,CAAC,GAAGM,eAAe,CAACR,OAAO,CAACE,KAAK,CAAC,EAAEC,QAAQ,CAAC,CAAA;AACxD,KAAA;IAMA,IAAI,CAAAA,QAAQ,IAARA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEM,IAAI,MAAK,QAAQ,EAAE;MAC/BR,GAAG,CAACC,KAAK,CAAC,GAAGQ,wBAAwB,CAACX,SAAS,EAAEC,OAAO,EAAEE,KAAK,CAAC,CAAA;AAClE,KAAA;AACF,GAAA;AAEA,EAAA,OAAOD,GAAG,CAAA;AACZ;;;;"}
@@ -1,31 +0,0 @@
1
- function normaliseString(value, property) {
2
- const trimmedValue = value ? value.trim() : '';
3
- let output;
4
- let outputType = property == null ? void 0 : property.type;
5
- if (!outputType) {
6
- if (['true', 'false'].includes(trimmedValue)) {
7
- outputType = 'boolean';
8
- }
9
- if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
10
- outputType = 'number';
11
- }
12
- }
13
- switch (outputType) {
14
- case 'boolean':
15
- output = trimmedValue === 'true';
16
- break;
17
- case 'number':
18
- output = Number(trimmedValue);
19
- break;
20
- default:
21
- output = value;
22
- }
23
- return output;
24
- }
25
-
26
- /**
27
- * @typedef {import('./index.mjs').SchemaProperty} SchemaProperty
28
- */
29
-
30
- export { normaliseString };
31
- //# sourceMappingURL=normalise-string.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalise-string.mjs","sources":["../../../src/govuk/common/normalise-string.mjs"],"sourcesContent":["/**\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 */\nexport function normaliseString(value, property) {\n const trimmedValue = value ? value.trim() : ''\n\n let output\n let outputType = property?.type\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 * @typedef {import('./index.mjs').SchemaProperty} SchemaProperty\n */\n"],"names":["normaliseString","value","property","trimmedValue","trim","output","outputType","type","includes","length","isFinite","Number"],"mappings":"AAgBO,SAASA,eAAeA,CAACC,KAAK,EAAEC,QAAQ,EAAE;EAC/C,MAAMC,YAAY,GAAGF,KAAK,GAAGA,KAAK,CAACG,IAAI,EAAE,GAAG,EAAE,CAAA;AAE9C,EAAA,IAAIC,MAAM,CAAA;AACV,EAAA,IAAIC,UAAU,GAAGJ,QAAQ,IAARA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEK,IAAI,CAAA;EAG/B,IAAI,CAACD,UAAU,EAAE;IACf,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAACE,QAAQ,CAACL,YAAY,CAAC,EAAE;AAC5CG,MAAAA,UAAU,GAAG,SAAS,CAAA;AACxB,KAAA;AAIA,IAAA,IAAIH,YAAY,CAACM,MAAM,GAAG,CAAC,IAAIC,QAAQ,CAACC,MAAM,CAACR,YAAY,CAAC,CAAC,EAAE;AAC7DG,MAAAA,UAAU,GAAG,QAAQ,CAAA;AACvB,KAAA;AACF,GAAA;AAEA,EAAA,QAAQA,UAAU;AAChB,IAAA,KAAK,SAAS;MACZD,MAAM,GAAGF,YAAY,KAAK,MAAM,CAAA;AAChC,MAAA,MAAA;AAEF,IAAA,KAAK,QAAQ;AACXE,MAAAA,MAAM,GAAGM,MAAM,CAACR,YAAY,CAAC,CAAA;AAC7B,MAAA,MAAA;AAEF,IAAA;AACEE,MAAAA,MAAM,GAAGJ,KAAK,CAAA;AAClB,GAAA;AAEA,EAAA,OAAOI,MAAM,CAAA;AACf,CAAA;;AAEA;AACA;AACA;;;;"}