@defra/forms-model 3.0.612 → 3.0.614

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 (28) hide show
  1. package/dist/module/form/form-definition/index.js +2 -1
  2. package/dist/module/form/form-definition/index.js.map +1 -1
  3. package/dist/module/form/form-definition/types.js.map +1 -1
  4. package/dist/module/form/form-editor/index.js +1 -0
  5. package/dist/module/form/form-editor/index.js.map +1 -1
  6. package/dist/module/form/form-editor/preview/controller/summary-page-controller.js +4 -1
  7. package/dist/module/form/form-editor/preview/controller/summary-page-controller.js.map +1 -1
  8. package/dist/module/form/form-editor/preview/payment.js +16 -1
  9. package/dist/module/form/form-editor/preview/payment.js.map +1 -1
  10. package/dist/module/form/form-editor/types.js.map +1 -1
  11. package/dist/types/form/form-definition/index.d.ts.map +1 -1
  12. package/dist/types/form/form-definition/types.d.ts +2 -1
  13. package/dist/types/form/form-definition/types.d.ts.map +1 -1
  14. package/dist/types/form/form-editor/index.d.ts +1 -0
  15. package/dist/types/form/form-editor/index.d.ts.map +1 -1
  16. package/dist/types/form/form-editor/preview/controller/summary-page-controller.d.ts.map +1 -1
  17. package/dist/types/form/form-editor/preview/payment.d.ts.map +1 -1
  18. package/dist/types/form/form-editor/types.d.ts +5 -0
  19. package/dist/types/form/form-editor/types.d.ts.map +1 -1
  20. package/package.json +1 -1
  21. package/schemas/form-definition-schema.json +6 -3
  22. package/schemas/form-definition-v2-schema.json +6 -3
  23. package/src/form/form-definition/index.ts +2 -1
  24. package/src/form/form-definition/types.ts +2 -1
  25. package/src/form/form-editor/index.ts +4 -0
  26. package/src/form/form-editor/preview/controller/summary-page-controller.js +19 -11
  27. package/src/form/form-editor/preview/payment.js +18 -2
  28. package/src/form/form-editor/types.ts +10 -0
@@ -100,11 +100,14 @@
100
100
  "default": false,
101
101
  "title": "Show Reference Number",
102
102
  "description": "The show reference number value."
103
+ },
104
+ "disableUserFeedback": {
105
+ "type": "boolean",
106
+ "default": false,
107
+ "title": "Disable User Feedback",
108
+ "description": "The disable user feedback value."
103
109
  }
104
110
  },
105
- "required": [
106
- "showReferenceNumber"
107
- ],
108
111
  "additionalProperties": false,
109
112
  "title": "Options"
110
113
  },
@@ -1062,7 +1062,8 @@ const phaseBannerSchema = Joi.object<PhaseBanner>()
1062
1062
  })
1063
1063
 
1064
1064
  const optionsSchema = Joi.object({
1065
- showReferenceNumber: Joi.boolean().default(false).required()
1065
+ showReferenceNumber: Joi.boolean().default(false),
1066
+ disableUserFeedback: Joi.boolean().default(false)
1066
1067
  }).description('Options for the form')
1067
1068
 
1068
1069
  const outputSchema = Joi.object<FormDefinition['output']>()
@@ -191,7 +191,8 @@ export interface Output {
191
191
  }
192
192
 
193
193
  export interface FormOptions {
194
- showReferenceNumber: boolean
194
+ showReferenceNumber?: boolean
195
+ disableUserFeedback?: boolean
195
196
  }
196
197
 
197
198
  /**
@@ -312,6 +312,10 @@ export const enableReferenceNumberSchema = Joi.boolean()
312
312
  .valid(true)
313
313
  .description('Whether reference number should be enabled')
314
314
 
315
+ export const disableUserFeedbackSchema = Joi.boolean()
316
+ .valid(true)
317
+ .description('Whether user feedback should be disabled')
318
+
315
319
  export const minSchema = Joi.number()
316
320
  .empty('')
317
321
  .integer()
@@ -1,3 +1,4 @@
1
+ import { ComponentType } from '~/src/components/enums.js'
1
2
  import { hasFormField } from '~/src/components/helpers.js'
2
3
  import { HIGHLIGHT_CLASS } from '~/src/form/form-editor/preview/constants.js'
3
4
  import { PreviewPageControllerBase } from '~/src/form/form-editor/preview/controller/page-controller-base.js'
@@ -79,18 +80,25 @@ export class SummaryPageController extends PreviewPageControllerBase {
79
80
  * @returns {{ rows: SummaryRow[] }}
80
81
  */
81
82
  get componentRows() {
82
- const rows = this._componentDefs.map((component) => {
83
- const summaryRowHeading = component.shortDescription ?? ''
84
- return {
85
- key: { text: summaryRowHeading },
86
- value: { text: EXAMPLE_TEXT },
87
- actions: {
88
- items: [
89
- { href: '#', text: 'Change', visuallyHiddenText: summaryRowHeading }
90
- ]
83
+ const rows = this._componentDefs
84
+ // Exclude payment field as displayed in a section at the bottom
85
+ .filter((comp) => comp.type !== ComponentType.PaymentField)
86
+ .map((component) => {
87
+ const summaryRowHeading = component.shortDescription ?? ''
88
+ return {
89
+ key: { text: summaryRowHeading },
90
+ value: { text: EXAMPLE_TEXT },
91
+ actions: {
92
+ items: [
93
+ {
94
+ href: '#',
95
+ text: 'Change',
96
+ visuallyHiddenText: summaryRowHeading
97
+ }
98
+ ]
99
+ }
91
100
  }
92
- }
93
- })
101
+ })
94
102
  return {
95
103
  rows
96
104
  }
@@ -5,6 +5,22 @@ import {
5
5
  QuestionComponentElements
6
6
  } from '~/src/form/form-editor/preview/question.js'
7
7
 
8
+ /**
9
+ * Formats a currency amount with thousand separators and two decimal places
10
+ * @param {number} value
11
+ * @param {'en-GB'} [locale] - locale for formatting
12
+ * @param {'GBP'} [currency] - currency code
13
+ * @returns {string} Formatted amount (e.g., "£1,234.56")
14
+ */
15
+ function formatCurrency(value, locale = 'en-GB', currency = 'GBP') {
16
+ const formatter = new Intl.NumberFormat(locale, {
17
+ style: 'currency',
18
+ currency
19
+ })
20
+
21
+ return formatter.format(value)
22
+ }
23
+
8
24
  /**
9
25
  * @implements {PaymentElements}
10
26
  */
@@ -107,8 +123,8 @@ export class PaymentQuestion extends Question {
107
123
  _renderInput() {
108
124
  const amount =
109
125
  typeof this._paymentAmount === 'number'
110
- ? this._paymentAmount.toFixed(2)
111
- : '0.00'
126
+ ? formatCurrency(this._paymentAmount)
127
+ : '£0.00'
112
128
 
113
129
  return {
114
130
  ...super._renderInput(),
@@ -130,6 +130,11 @@ export interface FormEditor {
130
130
  */
131
131
  enableReferenceNumber: boolean
132
132
 
133
+ /**
134
+ * Whether user feedback should be disabled
135
+ */
136
+ disableUserFeedback: boolean
137
+
133
138
  /**
134
139
  * The min length a field can have
135
140
  */
@@ -341,6 +346,11 @@ export type FormEditorInputReferenceNumberSettings = Pick<
341
346
  'enableReferenceNumber'
342
347
  >
343
348
 
349
+ export type FormEditorInputUserFeedbackSettings = Pick<
350
+ FormEditor,
351
+ 'disableUserFeedback'
352
+ >
353
+
344
354
  export type FormEditorInputQuestion = Pick<
345
355
  FormEditor,
346
356
  | 'questionType'