govuk_publishing_components 51.1.0 → 51.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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/component_guide/application.scss +1 -1
  3. data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +1 -0
  4. data/app/assets/stylesheets/govuk_publishing_components/components/_metadata.scss +3 -19
  5. data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_markdown-typography.scss +1 -0
  6. data/app/models/govuk_publishing_components/audit_comparer.rb +3 -3
  7. data/app/views/govuk_publishing_components/components/_title.html.erb +2 -3
  8. data/app/views/govuk_publishing_components/components/docs/add_another.yml +1 -1
  9. data/app/views/govuk_publishing_components/components/docs/big_number.yml +1 -0
  10. data/lib/govuk_publishing_components/presenters/checkboxes_helper.rb +1 -1
  11. data/lib/govuk_publishing_components/presenters/shared_helper.rb +0 -11
  12. data/lib/govuk_publishing_components/version.rb +1 -1
  13. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js +217 -184
  14. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js.map +1 -1
  15. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs +216 -184
  16. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs.map +1 -1
  17. data/node_modules/govuk-frontend/dist/govuk/all.mjs +1 -0
  18. data/node_modules/govuk-frontend/dist/govuk/all.mjs.map +1 -1
  19. data/node_modules/govuk-frontend/dist/govuk/all.scss +6 -0
  20. data/node_modules/govuk-frontend/dist/govuk/all.scss.map +1 -1
  21. data/node_modules/govuk-frontend/dist/govuk/common/configuration.mjs +164 -0
  22. data/node_modules/govuk-frontend/dist/govuk/common/configuration.mjs.map +1 -0
  23. data/node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs +1 -1
  24. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs +1 -87
  25. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs.map +1 -1
  26. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js +149 -112
  27. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js.map +1 -1
  28. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs +148 -111
  29. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs.map +1 -1
  30. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs +5 -8
  31. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs.map +1 -1
  32. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js +149 -112
  33. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js.map +1 -1
  34. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs +148 -111
  35. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs.map +1 -1
  36. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs +5 -8
  37. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs.map +1 -1
  38. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js +174 -140
  39. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js.map +1 -1
  40. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs +173 -139
  41. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs.map +1 -1
  42. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs +17 -16
  43. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs.map +1 -1
  44. data/node_modules/govuk-frontend/dist/govuk/components/character-count/macro-options.json +4 -4
  45. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js +1 -24
  46. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js.map +1 -1
  47. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs +0 -23
  48. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs.map +1 -1
  49. data/node_modules/govuk-frontend/dist/govuk/components/date-input/macro-options.json +2 -2
  50. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js +149 -112
  51. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js.map +1 -1
  52. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs +148 -111
  53. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs.map +1 -1
  54. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs +6 -8
  55. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs.map +1 -1
  56. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js +149 -112
  57. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js.map +1 -1
  58. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs +148 -111
  59. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs.map +1 -1
  60. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs +5 -8
  61. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs.map +1 -1
  62. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js +1 -24
  63. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js.map +1 -1
  64. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs +0 -23
  65. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs.map +1 -1
  66. data/node_modules/govuk-frontend/dist/govuk/components/input/macro-options.json +4 -4
  67. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js +149 -112
  68. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js.map +1 -1
  69. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs +148 -111
  70. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs.map +1 -1
  71. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs +6 -8
  72. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs.map +1 -1
  73. data/node_modules/govuk-frontend/dist/govuk/components/password-input/macro-options.json +1 -1
  74. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js +149 -112
  75. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js.map +1 -1
  76. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs +148 -111
  77. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs.map +1 -1
  78. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs +5 -8
  79. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs.map +1 -1
  80. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js +1 -24
  81. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js.map +1 -1
  82. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs +0 -23
  83. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs.map +1 -1
  84. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.js +1 -24
  85. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.js.map +1 -1
  86. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.mjs +0 -23
  87. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.mjs.map +1 -1
  88. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js +1 -24
  89. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js.map +1 -1
  90. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs +0 -23
  91. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs.map +1 -1
  92. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js +1 -24
  93. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js.map +1 -1
  94. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs +0 -23
  95. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs.map +1 -1
  96. data/node_modules/govuk-frontend/dist/govuk/components/textarea/macro-options.json +1 -1
  97. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss +1 -1
  98. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css +1 -1
  99. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css.map +1 -1
  100. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js +1 -1
  101. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js.map +1 -1
  102. data/node_modules/govuk-frontend/dist/govuk/init.mjs +17 -13
  103. data/node_modules/govuk-frontend/dist/govuk/init.mjs.map +1 -1
  104. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss +5 -10
  105. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss.map +1 -1
  106. data/node_modules/govuk-frontend/govuk-prototype-kit.config.json +1 -1
  107. data/node_modules/govuk-frontend/package.json +9 -9
  108. metadata +4 -6
  109. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs +0 -18
  110. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs.map +0 -1
  111. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs +0 -31
  112. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs.map +0 -1
@@ -3,76 +3,6 @@ function closestAttributeValue($element, attributeName) {
3
3
  return $closestElementWithAttribute ? $closestElementWithAttribute.getAttribute(attributeName) : null;
4
4
  }
5
5
 
6
- function normaliseString(value, property) {
7
- const trimmedValue = value ? value.trim() : '';
8
- let output;
9
- let outputType = property == null ? void 0 : property.type;
10
- if (!outputType) {
11
- if (['true', 'false'].includes(trimmedValue)) {
12
- outputType = 'boolean';
13
- }
14
- if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
15
- outputType = 'number';
16
- }
17
- }
18
- switch (outputType) {
19
- case 'boolean':
20
- output = trimmedValue === 'true';
21
- break;
22
- case 'number':
23
- output = Number(trimmedValue);
24
- break;
25
- default:
26
- output = value;
27
- }
28
- return output;
29
- }
30
-
31
- /**
32
- * @typedef {import('./index.mjs').SchemaProperty} SchemaProperty
33
- */
34
-
35
- function mergeConfigs(...configObjects) {
36
- const formattedConfigObject = {};
37
- for (const configObject of configObjects) {
38
- for (const key of Object.keys(configObject)) {
39
- const option = formattedConfigObject[key];
40
- const override = configObject[key];
41
- if (isObject(option) && isObject(override)) {
42
- formattedConfigObject[key] = mergeConfigs(option, override);
43
- } else {
44
- formattedConfigObject[key] = override;
45
- }
46
- }
47
- }
48
- return formattedConfigObject;
49
- }
50
- function extractConfigByNamespace(Component, dataset, namespace) {
51
- const property = Component.schema.properties[namespace];
52
- if ((property == null ? void 0 : property.type) !== 'object') {
53
- return;
54
- }
55
- const newObject = {
56
- [namespace]: ({})
57
- };
58
- for (const [key, value] of Object.entries(dataset)) {
59
- let current = newObject;
60
- const keyParts = key.split('.');
61
- for (const [index, name] of keyParts.entries()) {
62
- if (typeof current === 'object') {
63
- if (index < keyParts.length - 1) {
64
- if (!isObject(current[name])) {
65
- current[name] = {};
66
- }
67
- current = current[name];
68
- } else if (key !== namespace) {
69
- current[name] = normaliseString(value);
70
- }
71
- }
72
- }
73
- }
74
- return newObject[namespace];
75
- }
76
6
  function isInitialised($root, moduleName) {
77
7
  return $root instanceof HTMLElement && $root.hasAttribute(`data-${moduleName}-init`);
78
8
  }
@@ -92,26 +22,6 @@ function isSupported($scope = document.body) {
92
22
  }
93
23
  return $scope.classList.contains('govuk-frontend-supported');
94
24
  }
95
- function validateConfig(schema, config) {
96
- const validationErrors = [];
97
- for (const [name, conditions] of Object.entries(schema)) {
98
- const errors = [];
99
- if (Array.isArray(conditions)) {
100
- for (const {
101
- required,
102
- errorMessage
103
- } of conditions) {
104
- if (!required.every(key => !!config[key])) {
105
- errors.push(errorMessage);
106
- }
107
- }
108
- if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {
109
- validationErrors.push(...errors);
110
- }
111
- }
112
- }
113
- return validationErrors;
114
- }
115
25
  function isArray(option) {
116
26
  return Array.isArray(option);
117
27
  }
@@ -121,47 +31,11 @@ function isObject(option) {
121
31
  function formatErrorMessage(Component, message) {
122
32
  return `${Component.moduleName}: ${message}`;
123
33
  }
124
-
125
- /**
126
- * Schema for component config
127
- *
128
- * @typedef {object} Schema
129
- * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
130
- * @property {SchemaCondition[]} [anyOf] - List of schema conditions
131
- */
132
-
133
- /**
134
- * Schema property for component config
135
- *
136
- * @typedef {object} SchemaProperty
137
- * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
138
- */
139
-
140
- /**
141
- * Schema condition for component config
142
- *
143
- * @typedef {object} SchemaCondition
144
- * @property {string[]} required - List of required config fields
145
- * @property {string} errorMessage - Error message when required config fields not provided
146
- */
147
34
  /**
148
35
  * @typedef ComponentWithModuleName
149
36
  * @property {string} moduleName - Name of the component
150
37
  */
151
38
 
152
- function normaliseDataset(Component, dataset) {
153
- const out = {};
154
- for (const [field, property] of Object.entries(Component.schema.properties)) {
155
- if (field in dataset) {
156
- out[field] = normaliseString(dataset[field], property);
157
- }
158
- if ((property == null ? void 0 : property.type) === 'object') {
159
- out[field] = extractConfigByNamespace(Component, dataset, field);
160
- }
161
- }
162
- return out;
163
- }
164
-
165
39
  class GOVUKFrontendError extends Error {
166
40
  constructor(...args) {
167
41
  super(...args);
@@ -270,6 +144,164 @@ class GOVUKFrontendComponent {
270
144
  */
271
145
  GOVUKFrontendComponent.elementType = HTMLElement;
272
146
 
147
+ const configOverride = Symbol.for('configOverride');
148
+ class ConfigurableComponent extends GOVUKFrontendComponent {
149
+ [configOverride](param) {
150
+ return {};
151
+ }
152
+
153
+ /**
154
+ * Returns the root element of the component
155
+ *
156
+ * @protected
157
+ * @returns {ConfigurationType} - the root element of component
158
+ */
159
+ get config() {
160
+ return this._config;
161
+ }
162
+ constructor($root, config) {
163
+ super($root);
164
+ this._config = void 0;
165
+ const childConstructor = this.constructor;
166
+ if (typeof childConstructor.defaults === 'undefined') {
167
+ throw new ConfigError(formatErrorMessage(childConstructor, 'Config passed as parameter into constructor but no defaults defined'));
168
+ }
169
+ const datasetConfig = normaliseDataset(childConstructor, this._$root.dataset);
170
+ this._config = mergeConfigs(childConstructor.defaults, config != null ? config : {}, this[configOverride](datasetConfig), datasetConfig);
171
+ }
172
+ }
173
+ function normaliseString(value, property) {
174
+ const trimmedValue = value ? value.trim() : '';
175
+ let output;
176
+ let outputType = property == null ? void 0 : property.type;
177
+ if (!outputType) {
178
+ if (['true', 'false'].includes(trimmedValue)) {
179
+ outputType = 'boolean';
180
+ }
181
+ if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
182
+ outputType = 'number';
183
+ }
184
+ }
185
+ switch (outputType) {
186
+ case 'boolean':
187
+ output = trimmedValue === 'true';
188
+ break;
189
+ case 'number':
190
+ output = Number(trimmedValue);
191
+ break;
192
+ default:
193
+ output = value;
194
+ }
195
+ return output;
196
+ }
197
+ function normaliseDataset(Component, dataset) {
198
+ if (typeof Component.schema === 'undefined') {
199
+ throw new ConfigError(formatErrorMessage(Component, 'Config passed as parameter into constructor but no schema defined'));
200
+ }
201
+ const out = {};
202
+ for (const [field, property] of Object.entries(Component.schema.properties)) {
203
+ if (field in dataset) {
204
+ out[field] = normaliseString(dataset[field], property);
205
+ }
206
+ if ((property == null ? void 0 : property.type) === 'object') {
207
+ out[field] = extractConfigByNamespace(Component.schema, dataset, field);
208
+ }
209
+ }
210
+ return out;
211
+ }
212
+ function mergeConfigs(...configObjects) {
213
+ const formattedConfigObject = {};
214
+ for (const configObject of configObjects) {
215
+ for (const key of Object.keys(configObject)) {
216
+ const option = formattedConfigObject[key];
217
+ const override = configObject[key];
218
+ if (isObject(option) && isObject(override)) {
219
+ formattedConfigObject[key] = mergeConfigs(option, override);
220
+ } else {
221
+ formattedConfigObject[key] = override;
222
+ }
223
+ }
224
+ }
225
+ return formattedConfigObject;
226
+ }
227
+ function validateConfig(schema, config) {
228
+ const validationErrors = [];
229
+ for (const [name, conditions] of Object.entries(schema)) {
230
+ const errors = [];
231
+ if (Array.isArray(conditions)) {
232
+ for (const {
233
+ required,
234
+ errorMessage
235
+ } of conditions) {
236
+ if (!required.every(key => !!config[key])) {
237
+ errors.push(errorMessage);
238
+ }
239
+ }
240
+ if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {
241
+ validationErrors.push(...errors);
242
+ }
243
+ }
244
+ }
245
+ return validationErrors;
246
+ }
247
+ function extractConfigByNamespace(schema, dataset, namespace) {
248
+ const property = schema.properties[namespace];
249
+ if ((property == null ? void 0 : property.type) !== 'object') {
250
+ return;
251
+ }
252
+ const newObject = {
253
+ [namespace]: ({})
254
+ };
255
+ for (const [key, value] of Object.entries(dataset)) {
256
+ let current = newObject;
257
+ const keyParts = key.split('.');
258
+ for (const [index, name] of keyParts.entries()) {
259
+ if (typeof current === 'object') {
260
+ if (index < keyParts.length - 1) {
261
+ if (!isObject(current[name])) {
262
+ current[name] = {};
263
+ }
264
+ current = current[name];
265
+ } else if (key !== namespace) {
266
+ current[name] = normaliseString(value);
267
+ }
268
+ }
269
+ }
270
+ }
271
+ return newObject[namespace];
272
+ }
273
+ /**
274
+ * Schema for component config
275
+ *
276
+ * @typedef {object} Schema
277
+ * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
278
+ * @property {SchemaCondition[]} [anyOf] - List of schema conditions
279
+ */
280
+ /**
281
+ * Schema property for component config
282
+ *
283
+ * @typedef {object} SchemaProperty
284
+ * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
285
+ */
286
+ /**
287
+ * Schema condition for component config
288
+ *
289
+ * @typedef {object} SchemaCondition
290
+ * @property {string[]} required - List of required config fields
291
+ * @property {string} errorMessage - Error message when required config fields not provided
292
+ */
293
+ /**
294
+ * @template {ObjectNested} [ConfigurationType={}]
295
+ * @typedef ChildClass
296
+ * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component
297
+ * @property {Schema} [schema] - The schema of the component configuration
298
+ * @property {ConfigurationType} [defaults] - The default values of the configuration of the component
299
+ */
300
+ /**
301
+ * @template {ObjectNested} [ConfigurationType={}]
302
+ * @typedef {typeof GOVUKFrontendComponent & ChildClass<ConfigurationType>} ChildClassConstructor<ConfigurationType>
303
+ */
304
+
273
305
  class I18n {
274
306
  constructor(translations = {}, config = {}) {
275
307
  var _config$locale;
@@ -474,22 +506,33 @@ I18n.pluralRules = {
474
506
  * of the available characters/words has been entered.
475
507
  *
476
508
  * @preserve
509
+ * @augments ConfigurableComponent<CharacterCountConfig>
477
510
  */
478
- class CharacterCount extends GOVUKFrontendComponent {
511
+ class CharacterCount extends ConfigurableComponent {
512
+ [configOverride](datasetConfig) {
513
+ let configOverrides = {};
514
+ if ('maxwords' in datasetConfig || 'maxlength' in datasetConfig) {
515
+ configOverrides = {
516
+ maxlength: undefined,
517
+ maxwords: undefined
518
+ };
519
+ }
520
+ return configOverrides;
521
+ }
522
+
479
523
  /**
480
524
  * @param {Element | null} $root - HTML element to use for character count
481
525
  * @param {CharacterCountConfig} [config] - Character count config
482
526
  */
483
527
  constructor($root, config = {}) {
484
528
  var _ref, _this$config$maxwords;
485
- super($root);
529
+ super($root, config);
486
530
  this.$textarea = void 0;
487
531
  this.$visibleCountMessage = void 0;
488
532
  this.$screenReaderCountMessage = void 0;
489
533
  this.lastInputTimestamp = null;
490
534
  this.lastInputValue = '';
491
535
  this.valueChecker = null;
492
- this.config = void 0;
493
536
  this.i18n = void 0;
494
537
  this.maxLength = void 0;
495
538
  const $textarea = this.$root.querySelector('.govuk-js-character-count');
@@ -501,15 +544,6 @@ class CharacterCount extends GOVUKFrontendComponent {
501
544
  identifier: 'Form field (`.govuk-js-character-count`)'
502
545
  });
503
546
  }
504
- const datasetConfig = normaliseDataset(CharacterCount, this.$root.dataset);
505
- let configOverrides = {};
506
- if ('maxwords' in datasetConfig || 'maxlength' in datasetConfig) {
507
- configOverrides = {
508
- maxlength: undefined,
509
- maxwords: undefined
510
- };
511
- }
512
- this.config = mergeConfigs(CharacterCount.defaults, config, configOverrides, datasetConfig);
513
547
  const errors = validateConfig(CharacterCount.schema, this.config);
514
548
  if (errors[0]) {
515
549
  throw new ConfigError(formatErrorMessage(CharacterCount, errors[0]));
@@ -695,7 +729,7 @@ class CharacterCount extends GOVUKFrontendComponent {
695
729
  */
696
730
 
697
731
  /**
698
- * @typedef {import('../../common/index.mjs').Schema} Schema
732
+ * @typedef {import('../../common/configuration.mjs').Schema} Schema
699
733
  * @typedef {import('../../i18n.mjs').TranslationPluralForms} TranslationPluralForms
700
734
  */
701
735
  CharacterCount.moduleName = 'govuk-character-count';