@defra/forms-engine-plugin 4.18.0 → 4.19.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.
@@ -1 +1 @@
1
- {"version":3,"file":"telephone.js","names":["TelephoneNumberFieldOptionsFormatEnum","LibPhoneNumber","JoiBase","messageTemplate","phoneUtil","PhoneNumberUtil","getInstance","COUNTRY","INVALID_ERROR_CODE","isUKNumber","value","isValidNumberForRegion","joi","extend","type","base","string","messages","format","rules","phoneNumber","method","$_addRule","name","args","ref","assert","valid","International","UK","validate","error","parsed","parse","isValidNumber","isUK"],"sources":["../../../../../../src/server/plugins/engine/components/helpers/telephone.ts"],"sourcesContent":["import { TelephoneNumberFieldOptionsFormatEnum } from '@defra/forms-model'\nimport LibPhoneNumber from 'google-libphonenumber'\nimport JoiBase, { type LanguageMessages } from 'joi'\n\nimport { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'\n\nconst phoneUtil = LibPhoneNumber.PhoneNumberUtil.getInstance()\n\nexport const COUNTRY = 'GB'\nexport const INVALID_ERROR_CODE = 'phoneNumber.invalid'\n\nexport const isUKNumber = (value: LibPhoneNumber.PhoneNumber) => {\n return phoneUtil.isValidNumberForRegion(value, COUNTRY)\n}\n\nexport const joi = JoiBase.extend({\n type: 'string',\n base: JoiBase.string(),\n messages: {\n [INVALID_ERROR_CODE]: messageTemplate.format\n } as LanguageMessages,\n rules: {\n phoneNumber: {\n method({\n format\n }: { format?: TelephoneNumberFieldOptionsFormatEnum } = {}) {\n return this.$_addRule({\n name: 'phoneNumber',\n args: { format }\n })\n },\n args: [\n {\n name: 'format',\n ref: true,\n assert: JoiBase.valid(\n TelephoneNumberFieldOptionsFormatEnum.International,\n TelephoneNumberFieldOptionsFormatEnum.UK\n )\n }\n ],\n validate(value, { error }, args) {\n const format = args.format\n\n try {\n const parsed = phoneUtil.parse(value, COUNTRY)\n\n if (!phoneUtil.isValidNumber(parsed)) {\n return error(INVALID_ERROR_CODE)\n }\n\n if (format) {\n const isUK = isUKNumber(parsed)\n\n if (\n (!isUK && format === TelephoneNumberFieldOptionsFormatEnum.UK) ||\n (isUK &&\n format === TelephoneNumberFieldOptionsFormatEnum.International)\n ) {\n return error(INVALID_ERROR_CODE)\n }\n }\n\n return value\n } catch {\n return error(INVALID_ERROR_CODE)\n }\n }\n }\n }\n}) as JoiBase.Root\n"],"mappings":"AAAA,SAASA,qCAAqC,QAAQ,oBAAoB;AAC1E,OAAOC,cAAc,MAAM,uBAAuB;AAClD,OAAOC,OAAO,MAAiC,KAAK;AAEpD,SAASC,eAAe;AAExB,MAAMC,SAAS,GAAGH,cAAc,CAACI,eAAe,CAACC,WAAW,CAAC,CAAC;AAE9D,OAAO,MAAMC,OAAO,GAAG,IAAI;AAC3B,OAAO,MAAMC,kBAAkB,GAAG,qBAAqB;AAEvD,OAAO,MAAMC,UAAU,GAAIC,KAAiC,IAAK;EAC/D,OAAON,SAAS,CAACO,sBAAsB,CAACD,KAAK,EAAEH,OAAO,CAAC;AACzD,CAAC;AAED,OAAO,MAAMK,GAAG,GAAGV,OAAO,CAACW,MAAM,CAAC;EAChCC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAEb,OAAO,CAACc,MAAM,CAAC,CAAC;EACtBC,QAAQ,EAAE;IACR,CAACT,kBAAkB,GAAGL,eAAe,CAACe;EACxC,CAAqB;EACrBC,KAAK,EAAE;IACLC,WAAW,EAAE;MACXC,MAAMA,CAAC;QACLH;MACkD,CAAC,GAAG,CAAC,CAAC,EAAE;QAC1D,OAAO,IAAI,CAACI,SAAS,CAAC;UACpBC,IAAI,EAAE,aAAa;UACnBC,IAAI,EAAE;YAAEN;UAAO;QACjB,CAAC,CAAC;MACJ,CAAC;MACDM,IAAI,EAAE,CACJ;QACED,IAAI,EAAE,QAAQ;QACdE,GAAG,EAAE,IAAI;QACTC,MAAM,EAAExB,OAAO,CAACyB,KAAK,CACnB3B,qCAAqC,CAAC4B,aAAa,EACnD5B,qCAAqC,CAAC6B,EACxC;MACF,CAAC,CACF;MACDC,QAAQA,CAACpB,KAAK,EAAE;QAAEqB;MAAM,CAAC,EAAEP,IAAI,EAAE;QAC/B,MAAMN,MAAM,GAAGM,IAAI,CAACN,MAAM;QAE1B,IAAI;UACF,MAAMc,MAAM,GAAG5B,SAAS,CAAC6B,KAAK,CAACvB,KAAK,EAAEH,OAAO,CAAC;UAE9C,IAAI,CAACH,SAAS,CAAC8B,aAAa,CAACF,MAAM,CAAC,EAAE;YACpC,OAAOD,KAAK,CAACvB,kBAAkB,CAAC;UAClC;UAEA,IAAIU,MAAM,EAAE;YACV,MAAMiB,IAAI,GAAG1B,UAAU,CAACuB,MAAM,CAAC;YAE/B,IACG,CAACG,IAAI,IAAIjB,MAAM,KAAKlB,qCAAqC,CAAC6B,EAAE,IAC5DM,IAAI,IACHjB,MAAM,KAAKlB,qCAAqC,CAAC4B,aAAc,EACjE;cACA,OAAOG,KAAK,CAACvB,kBAAkB,CAAC;YAClC;UACF;UAEA,OAAOE,KAAK;QACd,CAAC,CAAC,MAAM;UACN,OAAOqB,KAAK,CAACvB,kBAAkB,CAAC;QAClC;MACF;IACF;EACF;AACF,CAAC,CAAiB","ignoreList":[]}
1
+ {"version":3,"file":"telephone.js","names":["TelephoneNumberFieldOptionsFormatEnum","LibPhoneNumber","JoiBase","messageTemplate","phoneUtil","PhoneNumberUtil","getInstance","COUNTRY","INVALID_ERROR_CODE","isUKNumber","value","isValidNumberForRegion","joi","extend","type","base","string","messages","format","rules","phoneNumber","method","$_addRule","name","args","ref","assert","valid","International","UK","validate","error","parsed","parse","isValidNumber","isUK"],"sources":["../../../../../../src/server/plugins/engine/components/helpers/telephone.ts"],"sourcesContent":["import { TelephoneNumberFieldOptionsFormatEnum } from '@defra/forms-model'\nimport LibPhoneNumber from 'google-libphonenumber'\nimport JoiBase, { type LanguageMessages } from 'joi'\n\nimport { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'\n\nconst phoneUtil = LibPhoneNumber.PhoneNumberUtil.getInstance()\n\nexport const COUNTRY = 'GB'\nexport const INVALID_ERROR_CODE = 'phoneNumber.invalid'\n\nexport const isUKNumber = (value: LibPhoneNumber.PhoneNumber) => {\n return phoneUtil.isValidNumberForRegion(value, COUNTRY)\n}\n\nexport const joi = JoiBase.extend({\n type: 'string',\n base: JoiBase.string(),\n messages: {\n [INVALID_ERROR_CODE]: messageTemplate.format\n } as LanguageMessages,\n rules: {\n phoneNumber: {\n method({\n format\n }: { format?: TelephoneNumberFieldOptionsFormatEnum } = {}) {\n return this.$_addRule({\n name: 'phoneNumber',\n args: { format }\n })\n },\n args: [\n {\n name: 'format',\n ref: true,\n assert: JoiBase.valid(\n TelephoneNumberFieldOptionsFormatEnum.International,\n TelephoneNumberFieldOptionsFormatEnum.UK\n )\n }\n ],\n validate(\n value: string,\n { error }: JoiBase.CustomHelpers,\n args: { format?: TelephoneNumberFieldOptionsFormatEnum }\n ) {\n const format = args.format\n\n try {\n const parsed = phoneUtil.parse(value, COUNTRY)\n\n if (!phoneUtil.isValidNumber(parsed)) {\n return error(INVALID_ERROR_CODE)\n }\n\n if (format) {\n const isUK = isUKNumber(parsed)\n\n if (\n (!isUK && format === TelephoneNumberFieldOptionsFormatEnum.UK) ||\n (isUK &&\n format === TelephoneNumberFieldOptionsFormatEnum.International)\n ) {\n return error(INVALID_ERROR_CODE)\n }\n }\n\n return value\n } catch {\n return error(INVALID_ERROR_CODE)\n }\n }\n }\n }\n}) as JoiBase.Root\n"],"mappings":"AAAA,SAASA,qCAAqC,QAAQ,oBAAoB;AAC1E,OAAOC,cAAc,MAAM,uBAAuB;AAClD,OAAOC,OAAO,MAAiC,KAAK;AAEpD,SAASC,eAAe;AAExB,MAAMC,SAAS,GAAGH,cAAc,CAACI,eAAe,CAACC,WAAW,CAAC,CAAC;AAE9D,OAAO,MAAMC,OAAO,GAAG,IAAI;AAC3B,OAAO,MAAMC,kBAAkB,GAAG,qBAAqB;AAEvD,OAAO,MAAMC,UAAU,GAAIC,KAAiC,IAAK;EAC/D,OAAON,SAAS,CAACO,sBAAsB,CAACD,KAAK,EAAEH,OAAO,CAAC;AACzD,CAAC;AAED,OAAO,MAAMK,GAAG,GAAGV,OAAO,CAACW,MAAM,CAAC;EAChCC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAEb,OAAO,CAACc,MAAM,CAAC,CAAC;EACtBC,QAAQ,EAAE;IACR,CAACT,kBAAkB,GAAGL,eAAe,CAACe;EACxC,CAAqB;EACrBC,KAAK,EAAE;IACLC,WAAW,EAAE;MACXC,MAAMA,CAAC;QACLH;MACkD,CAAC,GAAG,CAAC,CAAC,EAAE;QAC1D,OAAO,IAAI,CAACI,SAAS,CAAC;UACpBC,IAAI,EAAE,aAAa;UACnBC,IAAI,EAAE;YAAEN;UAAO;QACjB,CAAC,CAAC;MACJ,CAAC;MACDM,IAAI,EAAE,CACJ;QACED,IAAI,EAAE,QAAQ;QACdE,GAAG,EAAE,IAAI;QACTC,MAAM,EAAExB,OAAO,CAACyB,KAAK,CACnB3B,qCAAqC,CAAC4B,aAAa,EACnD5B,qCAAqC,CAAC6B,EACxC;MACF,CAAC,CACF;MACDC,QAAQA,CACNpB,KAAa,EACb;QAAEqB;MAA6B,CAAC,EAChCP,IAAwD,EACxD;QACA,MAAMN,MAAM,GAAGM,IAAI,CAACN,MAAM;QAE1B,IAAI;UACF,MAAMc,MAAM,GAAG5B,SAAS,CAAC6B,KAAK,CAACvB,KAAK,EAAEH,OAAO,CAAC;UAE9C,IAAI,CAACH,SAAS,CAAC8B,aAAa,CAACF,MAAM,CAAC,EAAE;YACpC,OAAOD,KAAK,CAACvB,kBAAkB,CAAC;UAClC;UAEA,IAAIU,MAAM,EAAE;YACV,MAAMiB,IAAI,GAAG1B,UAAU,CAACuB,MAAM,CAAC;YAE/B,IACG,CAACG,IAAI,IAAIjB,MAAM,KAAKlB,qCAAqC,CAAC6B,EAAE,IAC5DM,IAAI,IACHjB,MAAM,KAAKlB,qCAAqC,CAAC4B,aAAc,EACjE;cACA,OAAOG,KAAK,CAACvB,kBAAkB,CAAC;YAClC;UACF;UAEA,OAAOE,KAAK;QACd,CAAC,CAAC,MAAM;UACN,OAAOqB,KAAK,CAACvB,kBAAkB,CAAC;QAClC;MACF;IACF;EACF;AACF,CAAC,CAAiB","ignoreList":[]}
@@ -9,7 +9,7 @@
9
9
 
10
10
  <div class="govuk-error-summary-container"></div>
11
11
 
12
- <form method="post" {%- if formAction and not context.isForceAccess %} action="{{ formAction }}" enctype="multipart/form-data" data-upload-id="{{ uploadId }}" {% if proxyUrl %}data-proxy-url="{{ proxyUrl }}"{% endif %} {%- endif %} novalidate>
12
+ <form method="post" {%- if formAction and not context.isForceAccess %} action="{{ formAction }}" enctype="multipart/form-data" data-upload-id="{{ uploadId }}" {% if proxyUrl %}data-proxy-url="{{ proxyUrl }}"{% endif %} {%- else %} action="#" {%- endif %} novalidate>
13
13
  {{ govukFileUpload(formComponent.model) }}
14
14
 
15
15
  {% if formAction %}
@@ -26,7 +26,7 @@
26
26
  </p>
27
27
  {% endif %}
28
28
 
29
- <form method="post" novalidate>
29
+ <form method="post" action="#" novalidate>
30
30
  <input type="hidden" name="crumb" value="{{ crumb }}">
31
31
  <input type="hidden" name="action" value="delete">
32
32
 
@@ -14,7 +14,7 @@
14
14
  {% endif %}
15
15
  {% endfor %}
16
16
 
17
- <form method="post" novalidate>
17
+ <form method="post" action="#" novalidate>
18
18
  <input type="hidden" name="crumb" value="{{ crumb }}">
19
19
 
20
20
  {{ componentList(components) }}
@@ -24,7 +24,7 @@
24
24
  {{ govukSummaryList(section.summaryList) }}
25
25
  {% endfor %}
26
26
 
27
- <form method="post" novalidate>
27
+ <form method="post" action="#" novalidate>
28
28
  <input type="hidden" name="crumb" value="{{ crumb }}">
29
29
 
30
30
  <div class="govuk-button-group">
@@ -57,7 +57,7 @@
57
57
  {{ govukSummaryList(paymentDetails.summaryList) }}
58
58
  {% endif %}
59
59
 
60
- <form method="post" novalidate>
60
+ <form method="post" action="#" novalidate>
61
61
  <input type="hidden" name="crumb" value="{{ crumb }}">
62
62
 
63
63
  {% block customPageContent %}{% endblock %}
@@ -20,7 +20,7 @@
20
20
 
21
21
  {% include "partials/heading.html" %}
22
22
 
23
- <form method="post">
23
+ <form method="post" action="#">
24
24
  <input type="hidden" name="crumb" value="{{ crumb }}">
25
25
  <input type="hidden" name="step" value="{{ step }}">
26
26
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-engine-plugin",
3
- "version": "4.18.0",
3
+ "version": "4.19.0",
4
4
  "description": "Defra forms engine",
5
5
  "type": "module",
6
6
  "files": [
@@ -39,7 +39,11 @@ export const joi = JoiBase.extend({
39
39
  )
40
40
  }
41
41
  ],
42
- validate(value, { error }, args) {
42
+ validate(
43
+ value: string,
44
+ { error }: JoiBase.CustomHelpers,
45
+ args: { format?: TelephoneNumberFieldOptionsFormatEnum }
46
+ ) {
43
47
  const format = args.format
44
48
 
45
49
  try {
@@ -9,7 +9,7 @@
9
9
 
10
10
  <div class="govuk-error-summary-container"></div>
11
11
 
12
- <form method="post" {%- if formAction and not context.isForceAccess %} action="{{ formAction }}" enctype="multipart/form-data" data-upload-id="{{ uploadId }}" {% if proxyUrl %}data-proxy-url="{{ proxyUrl }}"{% endif %} {%- endif %} novalidate>
12
+ <form method="post" {%- if formAction and not context.isForceAccess %} action="{{ formAction }}" enctype="multipart/form-data" data-upload-id="{{ uploadId }}" {% if proxyUrl %}data-proxy-url="{{ proxyUrl }}"{% endif %} {%- else %} action="#" {%- endif %} novalidate>
13
13
  {{ govukFileUpload(formComponent.model) }}
14
14
 
15
15
  {% if formAction %}
@@ -26,7 +26,7 @@
26
26
  </p>
27
27
  {% endif %}
28
28
 
29
- <form method="post" novalidate>
29
+ <form method="post" action="#" novalidate>
30
30
  <input type="hidden" name="crumb" value="{{ crumb }}">
31
31
  <input type="hidden" name="action" value="delete">
32
32
 
@@ -14,7 +14,7 @@
14
14
  {% endif %}
15
15
  {% endfor %}
16
16
 
17
- <form method="post" novalidate>
17
+ <form method="post" action="#" novalidate>
18
18
  <input type="hidden" name="crumb" value="{{ crumb }}">
19
19
 
20
20
  {{ componentList(components) }}
@@ -24,7 +24,7 @@
24
24
  {{ govukSummaryList(section.summaryList) }}
25
25
  {% endfor %}
26
26
 
27
- <form method="post" novalidate>
27
+ <form method="post" action="#" novalidate>
28
28
  <input type="hidden" name="crumb" value="{{ crumb }}">
29
29
 
30
30
  <div class="govuk-button-group">
@@ -57,7 +57,7 @@
57
57
  {{ govukSummaryList(paymentDetails.summaryList) }}
58
58
  {% endif %}
59
59
 
60
- <form method="post" novalidate>
60
+ <form method="post" action="#" novalidate>
61
61
  <input type="hidden" name="crumb" value="{{ crumb }}">
62
62
 
63
63
  {% block customPageContent %}{% endblock %}
@@ -20,7 +20,7 @@
20
20
 
21
21
  {% include "partials/heading.html" %}
22
22
 
23
- <form method="post">
23
+ <form method="post" action="#">
24
24
  <input type="hidden" name="crumb" value="{{ crumb }}">
25
25
  <input type="hidden" name="step" value="{{ step }}">
26
26