@digigov/form 0.6.9 → 0.7.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 (307) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/Field/FieldBase.js +110 -0
  3. package/Field/{ConditionalField.js → FieldConditional.js} +9 -29
  4. package/Field/FieldContainer.js +62 -0
  5. package/Field/index.js +11 -251
  6. package/Field/types.js +5 -0
  7. package/Field/utils.js +146 -0
  8. package/Fieldset/FieldsetWithContext.js +63 -0
  9. package/Fieldset/index.js +4 -63
  10. package/Fieldset/types.js +5 -0
  11. package/FormBuilder.js +178 -0
  12. package/FormContext.js +14 -0
  13. package/Questions/Questions.js +105 -0
  14. package/Questions/QuestionsContext.js +20 -0
  15. package/Questions/Step/ReviewStep.js +11 -7
  16. package/Questions/Step/Step.js +93 -0
  17. package/Questions/Step/StepArrayReview.js +79 -0
  18. package/Questions/Step/StepContext.js +37 -0
  19. package/Questions/Step/StepDescription.js +2 -2
  20. package/Questions/Step/StepForm.js +10 -6
  21. package/Questions/Step/StepTitle.js +2 -2
  22. package/Questions/Step/getAddMoreFields.js +31 -0
  23. package/Questions/Step/index.js +81 -200
  24. package/Questions/Step/types.js +5 -0
  25. package/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
  26. package/Questions/getNextStep.js +30 -0
  27. package/Questions/index.js +4 -150
  28. package/Questions/types.js +5 -0
  29. package/es/Field/FieldBase.js +93 -0
  30. package/es/Field/{ConditionalField.js → FieldConditional.js} +5 -28
  31. package/es/Field/FieldContainer.js +40 -0
  32. package/es/Field/index.js +8 -233
  33. package/es/Field/types.js +1 -0
  34. package/es/Field/utils.js +122 -0
  35. package/es/Fieldset/FieldsetWithContext.js +41 -0
  36. package/es/Fieldset/index.js +3 -51
  37. package/es/Fieldset/types.js +1 -0
  38. package/es/FormBuilder.js +148 -0
  39. package/es/FormContext.js +5 -0
  40. package/es/Questions/Questions.js +84 -0
  41. package/es/Questions/QuestionsContext.js +11 -0
  42. package/es/Questions/Step/ReviewStep.js +5 -3
  43. package/es/Questions/Step/Step.js +69 -0
  44. package/es/Questions/Step/StepArrayReview.js +50 -0
  45. package/es/Questions/Step/StepContext.js +27 -0
  46. package/es/Questions/Step/StepDescription.js +1 -1
  47. package/es/Questions/Step/StepForm.js +4 -2
  48. package/es/Questions/Step/StepTitle.js +1 -1
  49. package/es/Questions/Step/getAddMoreFields.js +22 -0
  50. package/es/Questions/Step/index.js +13 -165
  51. package/es/Questions/Step/types.js +1 -0
  52. package/es/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
  53. package/es/Questions/getNextStep.js +23 -0
  54. package/es/Questions/index.js +2 -119
  55. package/es/Questions/index.spec.js +2 -1
  56. package/es/Questions/types.js +1 -0
  57. package/es/index.js +2 -153
  58. package/es/inputs/index.js +5 -4
  59. package/es/internal.js +31 -0
  60. package/es/types.js +1 -0
  61. package/es/utils.js +5 -3
  62. package/es/validators/index.js +155 -0
  63. package/es/validators/types.js +1 -0
  64. package/es/validators/utils/afm.js +35 -0
  65. package/es/validators/utils/file.js +52 -0
  66. package/es/validators/utils/iban.js +123 -0
  67. package/es/validators/utils/index.js +105 -0
  68. package/es/validators/utils/phone.js +122 -0
  69. package/es/validators/utils/postal_code.js +29 -0
  70. package/es/validators/utils/uuid4.js +20 -0
  71. package/{esm → es/validators}/validators.spec.js +1 -1
  72. package/esm/Field/FieldBase.js +93 -0
  73. package/esm/Field/{ConditionalField.js → FieldConditional.js} +5 -28
  74. package/esm/Field/FieldContainer.js +40 -0
  75. package/esm/Field/index.js +8 -233
  76. package/esm/Field/types.js +1 -0
  77. package/esm/Field/utils.js +122 -0
  78. package/esm/Fieldset/FieldsetWithContext.js +41 -0
  79. package/esm/Fieldset/index.js +3 -51
  80. package/esm/Fieldset/types.js +1 -0
  81. package/esm/FormBuilder.js +148 -0
  82. package/esm/FormContext.js +5 -0
  83. package/esm/Questions/Questions.js +84 -0
  84. package/esm/Questions/QuestionsContext.js +11 -0
  85. package/esm/Questions/Step/ReviewStep.js +5 -3
  86. package/esm/Questions/Step/Step.js +69 -0
  87. package/esm/Questions/Step/StepArrayReview.js +50 -0
  88. package/esm/Questions/Step/StepContext.js +27 -0
  89. package/esm/Questions/Step/StepDescription.js +1 -1
  90. package/esm/Questions/Step/StepForm.js +4 -2
  91. package/esm/Questions/Step/StepTitle.js +1 -1
  92. package/esm/Questions/Step/getAddMoreFields.js +22 -0
  93. package/esm/Questions/Step/index.js +13 -165
  94. package/esm/Questions/Step/types.js +1 -0
  95. package/esm/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
  96. package/esm/Questions/getNextStep.js +23 -0
  97. package/esm/Questions/index.js +2 -119
  98. package/esm/Questions/index.spec.js +2 -1
  99. package/esm/Questions/types.js +1 -0
  100. package/esm/index.js +3 -154
  101. package/esm/inputs/index.js +5 -4
  102. package/esm/internal.js +31 -0
  103. package/esm/types.js +1 -0
  104. package/esm/utils.js +5 -3
  105. package/esm/validators/index.js +155 -0
  106. package/esm/validators/types.js +1 -0
  107. package/esm/validators/utils/afm.js +35 -0
  108. package/esm/validators/utils/file.js +52 -0
  109. package/esm/validators/utils/iban.js +123 -0
  110. package/esm/validators/utils/index.js +105 -0
  111. package/esm/validators/utils/phone.js +122 -0
  112. package/esm/validators/utils/postal_code.js +29 -0
  113. package/esm/validators/utils/uuid4.js +20 -0
  114. package/{es → esm/validators}/validators.spec.js +1 -1
  115. package/index.js +8 -191
  116. package/inputs/index.js +13 -5
  117. package/internal.js +356 -0
  118. package/libs/form/src/Field/FieldBase.d.ts +3 -0
  119. package/libs/form/src/Field/FieldConditional.d.ts +4 -0
  120. package/libs/form/src/Field/FieldContainer.d.ts +4 -0
  121. package/libs/form/src/Field/index.d.ts +1 -62
  122. package/libs/form/src/Field/types.d.ts +75 -0
  123. package/libs/form/src/Field/utils.d.ts +5 -0
  124. package/libs/form/src/Fieldset/FieldsetWithContext.d.ts +4 -0
  125. package/libs/form/src/Fieldset/index.d.ts +2 -12
  126. package/libs/form/src/Fieldset/types.d.ts +6 -0
  127. package/libs/form/src/FormBuilder.d.ts +5 -0
  128. package/libs/form/src/FormContext.d.ts +3 -0
  129. package/libs/form/src/Questions/Questions.d.ts +8 -0
  130. package/libs/form/src/Questions/QuestionsContext.d.ts +3 -0
  131. package/libs/form/src/Questions/Step/ReviewStep.d.ts +1 -0
  132. package/libs/form/src/Questions/Step/Step.d.ts +9 -0
  133. package/libs/form/src/Questions/Step/StepArrayReview.d.ts +4 -0
  134. package/libs/form/src/Questions/Step/StepContext.d.ts +4 -0
  135. package/libs/form/src/Questions/Step/StepForm.d.ts +2 -1
  136. package/libs/form/src/Questions/Step/getAddMoreFields.d.ts +3 -0
  137. package/libs/form/src/Questions/Step/index.d.ts +12 -47
  138. package/libs/form/src/Questions/Step/types.d.ts +31 -0
  139. package/libs/form/src/Questions/getNextStep.d.ts +2 -0
  140. package/libs/form/src/Questions/index.d.ts +1 -28
  141. package/libs/form/src/Questions/types.d.ts +19 -0
  142. package/libs/form/src/index.d.ts +2 -73
  143. package/libs/form/src/inputs/Checkboxes/index.d.ts +1 -1
  144. package/libs/form/src/inputs/DateInput/index.d.ts +1 -2
  145. package/libs/form/src/inputs/FileInput/index.d.ts +1 -1
  146. package/libs/form/src/inputs/Input/index.d.ts +1 -1
  147. package/libs/form/src/inputs/Label/index.d.ts +2 -1
  148. package/libs/form/src/inputs/Radio/index.d.ts +1 -1
  149. package/libs/form/src/inputs/Select/index.d.ts +1 -1
  150. package/libs/form/src/inputs/index.d.ts +4 -3
  151. package/libs/form/src/internal.d.ts +31 -0
  152. package/libs/form/src/types.d.ts +70 -0
  153. package/libs/form/src/validators/index.d.ts +8 -0
  154. package/libs/form/src/validators/types.d.ts +2 -0
  155. package/libs/form/src/validators/utils/afm.d.ts +6 -0
  156. package/libs/form/src/validators/utils/file.d.ts +1 -0
  157. package/libs/form/src/validators/utils/iban.d.ts +2 -0
  158. package/libs/form/src/validators/utils/index.d.ts +12 -0
  159. package/libs/form/src/validators/utils/phone.d.ts +9 -0
  160. package/libs/form/src/validators/utils/postal_code.d.ts +2 -0
  161. package/libs/form/src/validators/utils/uuid4.d.ts +6 -0
  162. package/libs/form/src/{validators.spec.d.ts → validators/validators.spec.d.ts} +0 -0
  163. package/libs/ui/src/core/Accordion/index.d.ts +3 -3
  164. package/libs/ui/src/core/Base/index.d.ts +3 -0
  165. package/libs/ui/src/core/Blockquote/index.d.ts +1 -1
  166. package/libs/ui/src/core/Button/BackButton.d.ts +1 -1
  167. package/libs/ui/src/core/Button/ButtonLink.d.ts +1 -1
  168. package/libs/ui/src/core/Button/index.d.ts +1 -1
  169. package/libs/ui/src/core/Divider/index.d.ts +1 -1
  170. package/libs/ui/src/core/Form/index.d.ts +3 -0
  171. package/libs/ui/src/core/Label/index.d.ts +4 -0
  172. package/libs/ui/src/core/Link/index.d.ts +1 -0
  173. package/libs/ui/src/core/NavList/NavHorizontal.d.ts +3 -0
  174. package/libs/ui/src/core/NavList/NavHorizontalList.d.ts +3 -0
  175. package/libs/ui/src/core/NavList/NavHorizontalListItem.d.ts +3 -0
  176. package/libs/ui/src/core/NavList/NavList.d.ts +1 -14
  177. package/libs/ui/src/core/NavList/NavListBase.d.ts +4 -0
  178. package/libs/ui/src/core/NavList/NavListItem.d.ts +1 -0
  179. package/libs/ui/src/core/NavList/NavListItemBase.d.ts +2 -1
  180. package/libs/ui/src/core/NavList/NavListSubMenu.d.ts +1 -1
  181. package/libs/ui/src/core/NavList/NavVertical.d.ts +3 -0
  182. package/libs/ui/src/core/NavList/NavVerticalItem.d.ts +3 -0
  183. package/libs/ui/src/core/NavList/index.d.ts +5 -0
  184. package/libs/ui/src/core/NavList/types.d.ts +14 -0
  185. package/libs/ui/src/core/SkipLink/index.d.ts +3 -0
  186. package/libs/ui/src/core/SvgIcon/index.d.ts +1 -0
  187. package/libs/ui/src/core/Table/TableFloatingScroll.d.ts +2 -0
  188. package/libs/ui/src/core/Table/index.d.ts +1 -0
  189. package/libs/ui/src/core/index.d.ts +4 -0
  190. package/libs/ui/src/layouts/Grid/index.d.ts +1 -0
  191. package/libs/ui/src/typography/Caption/index.d.ts +3 -2
  192. package/libs/ui/src/typography/Title/index.d.ts +2 -1
  193. package/libs-ui/react-core/src/Accordion/index.d.ts +3 -3
  194. package/libs-ui/react-core/src/AccordionControls/index.d.ts +3 -3
  195. package/libs-ui/react-core/src/AccordionSection/index.d.ts +3 -3
  196. package/libs-ui/react-core/src/AccordionSectionContent/index.d.ts +3 -3
  197. package/libs-ui/react-core/src/AccordionSectionHeader/index.d.ts +3 -3
  198. package/libs-ui/react-core/src/AccordionSectionSummary/index.d.ts +4 -3
  199. package/libs-ui/react-core/src/AccordionSectionSummaryHeading/index.d.ts +3 -3
  200. package/libs-ui/react-core/src/BackLink/index.d.ts +3 -3
  201. package/libs-ui/react-core/src/Base/index.d.ts +43 -0
  202. package/libs-ui/react-core/src/Blockquote/index.d.ts +3 -3
  203. package/libs-ui/react-core/src/Breadcrumbs/index.d.ts +3 -3
  204. package/libs-ui/react-core/src/BreadcrumbsList/index.d.ts +3 -3
  205. package/libs-ui/react-core/src/BreadcrumbsListItem/index.d.ts +3 -3
  206. package/libs-ui/react-core/src/Button/index.d.ts +3 -3
  207. package/libs-ui/react-core/src/ButtonGroup/index.d.ts +3 -3
  208. package/libs-ui/react-core/src/ButtonLink/index.d.ts +3 -3
  209. package/libs-ui/react-core/src/CallToAction/index.d.ts +1 -1
  210. package/libs-ui/react-core/src/Card/index.d.ts +3 -3
  211. package/libs-ui/react-core/src/CardAction/index.d.ts +3 -3
  212. package/libs-ui/react-core/src/CardHeading/index.d.ts +3 -3
  213. package/libs-ui/react-core/src/CardText/index.d.ts +3 -3
  214. package/libs-ui/react-core/src/CheckIcon/index.d.ts +15 -0
  215. package/libs-ui/react-core/src/Checkbox/index.d.ts +3 -3
  216. package/libs-ui/react-core/src/CheckboxItem/index.d.ts +3 -3
  217. package/libs-ui/react-core/src/Confirmation/index.d.ts +3 -3
  218. package/libs-ui/react-core/src/ConfirmationBody/index.d.ts +3 -3
  219. package/libs-ui/react-core/src/ConfirmationTitle/index.d.ts +3 -3
  220. package/libs-ui/react-core/src/DateInput/index.d.ts +3 -3
  221. package/libs-ui/react-core/src/DateInputItem/index.d.ts +3 -3
  222. package/libs-ui/react-core/src/Details/index.d.ts +3 -3
  223. package/libs-ui/react-core/src/DetailsContent/index.d.ts +3 -3
  224. package/libs-ui/react-core/src/DetailsSummary/index.d.ts +3 -3
  225. package/libs-ui/react-core/src/ErrorMessage/index.d.ts +3 -3
  226. package/libs-ui/react-core/src/ErrorSummary/index.d.ts +3 -3
  227. package/libs-ui/react-core/src/Field/index.d.ts +3 -3
  228. package/libs-ui/react-core/src/Fieldset/index.d.ts +3 -3
  229. package/libs-ui/react-core/src/FieldsetLegend/index.d.ts +3 -3
  230. package/libs-ui/react-core/src/FileUpload/index.d.ts +3 -3
  231. package/libs-ui/react-core/src/Form/index.d.ts +11 -0
  232. package/libs-ui/react-core/src/Grid/index.d.ts +3 -3
  233. package/libs-ui/react-core/src/Heading/index.d.ts +3 -3
  234. package/libs-ui/react-core/src/HeadingCaption/index.d.ts +3 -3
  235. package/libs-ui/react-core/src/Hidden/index.d.ts +3 -3
  236. package/libs-ui/react-core/src/Hint/index.d.ts +3 -3
  237. package/libs-ui/react-core/src/Label/index.d.ts +3 -3
  238. package/libs-ui/react-core/src/LabelTitle/index.d.ts +7 -7
  239. package/libs-ui/react-core/src/Link/index.d.ts +3 -3
  240. package/libs-ui/react-core/src/List/index.d.ts +3 -3
  241. package/libs-ui/react-core/src/ListItem/index.d.ts +3 -3
  242. package/libs-ui/react-core/src/NavHorizontal/index.d.ts +16 -0
  243. package/libs-ui/react-core/src/NavHorizontalList/index.d.ts +10 -0
  244. package/libs-ui/react-core/src/NavHorizontalListItem/index.d.ts +18 -0
  245. package/libs-ui/react-core/src/NavVertical/index.d.ts +11 -0
  246. package/libs-ui/react-core/src/NavVerticalItem/index.d.ts +14 -0
  247. package/libs-ui/react-core/src/NormalText/index.d.ts +3 -3
  248. package/libs-ui/react-core/src/NotificationBanner/index.d.ts +3 -3
  249. package/libs-ui/react-core/src/NotificationBannerContent/index.d.ts +3 -3
  250. package/libs-ui/react-core/src/NotificationBannerHeader/index.d.ts +3 -3
  251. package/libs-ui/react-core/src/NotificationBannerHeading/index.d.ts +3 -3
  252. package/libs-ui/react-core/src/NotificationBannerLink/index.d.ts +3 -3
  253. package/libs-ui/react-core/src/Paragraph/index.d.ts +3 -3
  254. package/libs-ui/react-core/src/PhaseBanner/index.d.ts +3 -3
  255. package/libs-ui/react-core/src/PhaseBannerHeaderContainer/index.d.ts +3 -3
  256. package/libs-ui/react-core/src/PhaseBannerTag/index.d.ts +3 -3
  257. package/libs-ui/react-core/src/PhaseBannerText/index.d.ts +3 -3
  258. package/libs-ui/react-core/src/Radio/index.d.ts +3 -3
  259. package/libs-ui/react-core/src/RadioItem/index.d.ts +3 -3
  260. package/libs-ui/react-core/src/SectionBreak/index.d.ts +3 -3
  261. package/libs-ui/react-core/src/Select/index.d.ts +3 -3
  262. package/libs-ui/react-core/src/SelectOption/index.d.ts +3 -3
  263. package/libs-ui/react-core/src/SkipLink/index.d.ts +10 -0
  264. package/libs-ui/react-core/src/SummaryList/index.d.ts +3 -3
  265. package/libs-ui/react-core/src/SummaryListItem/index.d.ts +3 -3
  266. package/libs-ui/react-core/src/SummaryListItemAction/index.d.ts +3 -3
  267. package/libs-ui/react-core/src/SummaryListItemKey/index.d.ts +3 -3
  268. package/libs-ui/react-core/src/SummaryListItemValue/index.d.ts +3 -3
  269. package/libs-ui/react-core/src/SvgIcon/index.d.ts +3 -3
  270. package/libs-ui/react-core/src/Table/index.d.ts +3 -3
  271. package/libs-ui/react-core/src/TableBody/index.d.ts +3 -3
  272. package/libs-ui/react-core/src/TableCaption/index.d.ts +3 -3
  273. package/libs-ui/react-core/src/TableContainer/index.d.ts +3 -3
  274. package/libs-ui/react-core/src/TableDataCell/index.d.ts +3 -3
  275. package/libs-ui/react-core/src/TableHead/index.d.ts +3 -3
  276. package/libs-ui/react-core/src/TableHeadCell/index.d.ts +3 -3
  277. package/libs-ui/react-core/src/TableNoDataRow/index.d.ts +3 -3
  278. package/libs-ui/react-core/src/TableRow/index.d.ts +3 -3
  279. package/libs-ui/react-core/src/Tabs/index.d.ts +3 -3
  280. package/libs-ui/react-core/src/TabsHeading/index.d.ts +3 -3
  281. package/libs-ui/react-core/src/TabsList/index.d.ts +3 -3
  282. package/libs-ui/react-core/src/TabsListItem/index.d.ts +3 -3
  283. package/libs-ui/react-core/src/TabsPanel/index.d.ts +3 -3
  284. package/libs-ui/react-core/src/TextArea/index.d.ts +3 -3
  285. package/libs-ui/react-core/src/TextInput/index.d.ts +3 -3
  286. package/libs-ui/react-core/src/UncheckIcon/index.d.ts +4 -4
  287. package/libs-ui/react-core/src/VisuallyHidden/index.d.ts +3 -3
  288. package/libs-ui/react-core/src/WarningText/index.d.ts +3 -3
  289. package/package.json +3 -2
  290. package/types.js +5 -0
  291. package/utils.js +6 -4
  292. package/validators/index.js +181 -0
  293. package/validators/types.js +5 -0
  294. package/validators/utils/afm.js +45 -0
  295. package/validators/utils/file.js +62 -0
  296. package/validators/utils/iban.js +134 -0
  297. package/validators/utils/index.js +210 -0
  298. package/validators/utils/phone.js +144 -0
  299. package/validators/utils/postal_code.js +40 -0
  300. package/validators/utils/uuid4.js +30 -0
  301. package/validators/validators.spec.js +88 -0
  302. package/es/validators.js +0 -626
  303. package/esm/validators.js +0 -626
  304. package/libs/form/src/Field/ConditionalField.d.ts +0 -17
  305. package/libs/form/src/validators.d.ts +0 -14
  306. package/validators.js +0 -662
  307. package/validators.spec.js +0 -88
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.PHONE_NUMBER_VALIDATOR = exports.MOBILE_PHONE_VALIDATOR = void 0;
9
+ exports.matchTypeOfPhoneNumber = matchTypeOfPhoneNumber;
10
+ exports.validatePhoneNumber = validatePhoneNumber;
11
+
12
+ var gPhoneNumber = _interopRequireWildcard(require("google-libphonenumber"));
13
+
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+
18
+ function validatePhoneNumber(phoneNumber) {
19
+ var countries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['gr'];
20
+ var typeOfPhoneNumber = arguments.length > 2 ? arguments[2] : undefined;
21
+ var phoneUtil = gPhoneNumber.PhoneNumberUtil.getInstance();
22
+
23
+ if (!countries || countries.length === 0) {
24
+ return true;
25
+ }
26
+
27
+ return countries.some(function (country) {
28
+ try {
29
+ var phone = phoneUtil.parse(phoneNumber, country.toUpperCase());
30
+
31
+ if (phoneUtil.isValidNumber(phone)) {
32
+ if (typeOfPhoneNumber) {
33
+ if (matchTypeOfPhoneNumber(phone, typeOfPhoneNumber, phoneUtil)) {
34
+ return true;
35
+ } else {
36
+ return false;
37
+ }
38
+ } else {
39
+ return true;
40
+ }
41
+ }
42
+
43
+ return false;
44
+ } catch (error) {
45
+ console.error(error);
46
+ return false;
47
+ }
48
+ });
49
+ }
50
+
51
+ var phoneNumberTypes = {
52
+ 0: 'landline',
53
+ 1: 'mobile',
54
+ 2: 'landline_or_mobile'
55
+ };
56
+
57
+ function matchTypeOfPhoneNumber(phone, type, phoneUtil) {
58
+ try {
59
+ var phoneNumberType = phoneUtil.getNumberType(phone);
60
+ var numberType = phoneNumberTypes[phoneNumberType];
61
+
62
+ if (numberType === 'landline_or_mobile' || numberType === type) {
63
+ return true;
64
+ } else {
65
+ return false;
66
+ }
67
+ } catch (error) {
68
+ console.error(error);
69
+ return false;
70
+ }
71
+ }
72
+
73
+ function validateMobile(value) {
74
+ var phoneUtil = gPhoneNumber.PhoneNumberUtil.getInstance();
75
+ var origValue = value; // probably catch all the cases with a regex instead of gphonenumber
76
+
77
+ if (!value.match(/^((\+|00){0,1}\d{1,3}[- ]?)?\d{10}$/)) {
78
+ return false;
79
+ }
80
+
81
+ try {
82
+ var phone;
83
+
84
+ try {
85
+ phone = phoneUtil.parse(value);
86
+ } catch (err) {
87
+ try {
88
+ value = '+' + value;
89
+ phone = phoneUtil.parse(value);
90
+ } catch (err) {
91
+ value = '+30' + origValue;
92
+ phone = phoneUtil.parse(value);
93
+ }
94
+ }
95
+
96
+ return phoneUtil.isValidNumber(phone);
97
+ } catch (err) {
98
+ console.error(err);
99
+ return false;
100
+ }
101
+ }
102
+
103
+ var MOBILE_PHONE_VALIDATOR = {
104
+ name: 'mobile-phone-validator',
105
+ message: 'form.error.mobile_phone',
106
+ test: function test(value) {
107
+ if (value) {
108
+ return validateMobile(value);
109
+ }
110
+
111
+ return true;
112
+ }
113
+ };
114
+ exports.MOBILE_PHONE_VALIDATOR = MOBILE_PHONE_VALIDATOR;
115
+
116
+ var PHONE_NUMBER_VALIDATOR = function PHONE_NUMBER_VALIDATOR(field) {
117
+ var _field$extra, _field$extra2;
118
+
119
+ var countryCode = field === null || field === void 0 ? void 0 : (_field$extra = field.extra) === null || _field$extra === void 0 ? void 0 : _field$extra.countries;
120
+ var typeOfPhone = field === null || field === void 0 ? void 0 : (_field$extra2 = field.extra) === null || _field$extra2 === void 0 ? void 0 : _field$extra2.phoneType;
121
+ return {
122
+ name: 'phone-number-validator',
123
+ message: function message() {
124
+ if (typeOfPhone === 'mobile') {
125
+ return 'form.error.mobile_phone';
126
+ }
127
+
128
+ if (typeOfPhone === 'landline') {
129
+ return 'form.error.landline';
130
+ } else {
131
+ return 'form.error.phone_number';
132
+ }
133
+ },
134
+ test: function test(value) {
135
+ if (!value) {
136
+ return true;
137
+ }
138
+
139
+ return validatePhoneNumber(value, countryCode, typeOfPhone);
140
+ }
141
+ };
142
+ };
143
+
144
+ exports.PHONE_NUMBER_VALIDATOR = PHONE_NUMBER_VALIDATOR;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.POSTALCODE_VALIDATOR = void 0;
7
+ exports.validatePostalCode = validatePostalCode;
8
+ var CODE_REGEX = /^[12345678][0-9]{4}$/;
9
+
10
+ function validatePostalCode(number, countries) {
11
+ if (!countries) {
12
+ return false;
13
+ } else {
14
+ if (countries.length === 1 && countries[0].toUpperCase() === 'GR') {
15
+ // Greek postal code must be 5 digits long and shouldn't start with 0 or 9.
16
+ return CODE_REGEX.test(number);
17
+ } else {
18
+ return true;
19
+ }
20
+ }
21
+ }
22
+
23
+ var POSTALCODE_VALIDATOR = function POSTALCODE_VALIDATOR(field) {
24
+ var _field$extra;
25
+
26
+ var countryCode = field === null || field === void 0 ? void 0 : (_field$extra = field.extra) === null || _field$extra === void 0 ? void 0 : _field$extra.countries;
27
+ return {
28
+ name: 'postal-code-validator',
29
+ message: 'form.error.postalCode',
30
+ test: function test(value) {
31
+ if (!value) {
32
+ return true;
33
+ }
34
+
35
+ return validatePostalCode(value, countryCode);
36
+ }
37
+ };
38
+ };
39
+
40
+ exports.POSTALCODE_VALIDATOR = POSTALCODE_VALIDATOR;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UUID4_VALIDATOR = void 0;
7
+ exports.validateUUID4 = validateUUID4;
8
+ var UUID4_PATTERN = /^[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i;
9
+
10
+ function validateUUID4(uuid4) {
11
+ if (uuid4.length !== 36) {
12
+ // This uuid4 should be 36 characters long
13
+ return false;
14
+ }
15
+
16
+ return UUID4_PATTERN.test(uuid4);
17
+ }
18
+
19
+ var UUID4_VALIDATOR = {
20
+ name: 'uuid4-validator',
21
+ message: 'form.error.uuid4',
22
+ test: function test(value) {
23
+ if (value) {
24
+ return validateUUID4(value);
25
+ }
26
+
27
+ return true;
28
+ }
29
+ };
30
+ exports.UUID4_VALIDATOR = UUID4_VALIDATOR;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ var _utils = require("@digigov/form/validators/utils");
4
+
5
+ it('validates wrong uuid4 for empty value', function () {
6
+ expect((0, _utils.validateUUID4)('')).toBe(false);
7
+ });
8
+ it('validates wrong uuid4 because of length', function () {
9
+ expect((0, _utils.validateUUID4)('9e463bc44a294bab8ee23af6cc3cbbe3')).toBe(false);
10
+ });
11
+ it('validates wrong uuid4 with correct length and wrong form', function () {
12
+ expect((0, _utils.validateUUID4)('ab123cd1-1234-ad34-ad45-12345abcdefg')).toBe(false);
13
+ });
14
+ it('validates correct uuid4 validator', function () {
15
+ expect((0, _utils.validateUUID4)('9e463bc4-4a29-4bab-8ee2-3af6cc3cbbe3')).toBe(true);
16
+ });
17
+ it('validates correct gr iban', function () {
18
+ expect((0, _utils.validateIban)('GR7801100800000008009825202', 'GR')).toBe(true);
19
+ });
20
+ it('validates correct iban with spaces and dashes', function () {
21
+ expect((0, _utils.validateIban)('GR 7801-1008 0000-0008 0098-25202', 'GR')).toBe(true);
22
+ });
23
+ it('validates correct foreign iban', function () {
24
+ expect((0, _utils.validateIban)('DE75512108001245126199', 'DE')).toBe(true);
25
+ });
26
+ it('validates wrong iban for empty value', function () {
27
+ expect((0, _utils.validateIban)('', '')).toBe(false);
28
+ });
29
+ it('validates wrong greek iban for wrong length', function () {
30
+ expect((0, _utils.validateIban)('GR78011008000000080098252020', 'gr')).toBe(false);
31
+ });
32
+ it('validates wrong iban for non existing country code', function () {
33
+ expect((0, _utils.validateIban)('AAA78011008000000080098252020', 'aaa')).toBe(false);
34
+ });
35
+ it('validates correct greek iban whithout country code', function () {
36
+ expect((0, _utils.validateIban)('7801100800000008009825202', '')).toBe(true);
37
+ });
38
+ it('validates wrong postal code without country code', function () {
39
+ expect((0, _utils.validatePostalCode)('123', [])).toBe(true);
40
+ });
41
+ it('validates wrong postal code with wrong country code', function () {
42
+ expect((0, _utils.validatePostalCode)('123', ['FR'])).toBe(true);
43
+ });
44
+ it('validates wrong postal code with greek country code', function () {
45
+ expect((0, _utils.validatePostalCode)('123', ['GR'])).toBe(false);
46
+ });
47
+ it('validates postal code with greek country code', function () {
48
+ expect((0, _utils.validatePostalCode)('11143', ['GR'])).toBe(true);
49
+ });
50
+ it('validates phone number type landline with greek country code', function () {
51
+ expect((0, _utils.validatePhoneNumber)('2102934896', ['GR'], 'landline')).toBe(true);
52
+ });
53
+ it('validates phone number type landline with ch country code', function () {
54
+ expect((0, _utils.validatePhoneNumber)('2102934896', ['CH'], 'landline')).toBe(false);
55
+ });
56
+ it('validates phone number type landline with ch and gr countries code', function () {
57
+ expect((0, _utils.validatePhoneNumber)('2102934896', ['GR', 'CH'], 'landline')).toBe(true);
58
+ });
59
+ it('validatesphone number type landline with ch and gr countries code', function () {
60
+ expect((0, _utils.validatePhoneNumber)('41446681800', ['GR', 'CH'], 'landline')).toBe(true);
61
+ });
62
+ it('validates phone number type landline with ch and gr countries code but phone number is mobile', function () {
63
+ expect((0, _utils.validatePhoneNumber)('2102934896', ['GR', 'CH'], 'mobile')).toBe(false);
64
+ });
65
+ it('validates phone number type mobile with ch and gr countries code', function () {
66
+ expect((0, _utils.validatePhoneNumber)('6934100982', ['GR', 'CH'], 'mobile')).toBe(true);
67
+ });
68
+ it('validates phone number type mobile with gr country code', function () {
69
+ expect((0, _utils.validatePhoneNumber)('6934100982', ['GR'], 'mobile')).toBe(true);
70
+ });
71
+ it('validates phone number type mobile with ch country code', function () {
72
+ expect((0, _utils.validatePhoneNumber)('6934100982', ['CH'], 'mobile')).toBe(false);
73
+ });
74
+ it('validates phone number with no type and ch country code', function () {
75
+ expect((0, _utils.validatePhoneNumber)('6934100982', ['CH'], null)).toBe(false);
76
+ });
77
+ it('validates phone number with no type and gr country code', function () {
78
+ expect((0, _utils.validatePhoneNumber)('6934100982', ['gr'], null)).toBe(true);
79
+ });
80
+ it('validates phone number with no type and ch country code', function () {
81
+ expect((0, _utils.validatePhoneNumber)('41446681800', ['CH'], null)).toBe(true);
82
+ });
83
+ it('validates phone number with no type and gr country code', function () {
84
+ expect((0, _utils.validatePhoneNumber)('41446681800', ['gr'], null)).toBe(false);
85
+ });
86
+ it('validates phone number with no type and gr and ch countries code', function () {
87
+ expect((0, _utils.validatePhoneNumber)('41446681800', ['gr', 'ch'], null)).toBe(true);
88
+ });