@digigov/form 2.0.0-85c27c19 → 2.0.0-aefd0709

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 (314) hide show
  1. package/Field/FieldBase/index.js +1 -0
  2. package/Field/FieldBase.js.map +2 -2
  3. package/Field/FieldBaseContainer/index.js +2 -2
  4. package/Field/FieldBaseContainer.js.map +2 -2
  5. package/Field/FieldConditional/index.js +7 -3
  6. package/Field/FieldConditional.js.map +2 -2
  7. package/Field/index.js +5 -2
  8. package/Field/index.js.map +2 -2
  9. package/Field/types.d.ts +10 -8
  10. package/Field/utils/index.d.ts +1 -0
  11. package/Field/utils/index.js +18 -1
  12. package/Field/utils/index.js.map +2 -2
  13. package/FieldArray/index.d.ts +1 -0
  14. package/FieldArray/index.js +7 -6
  15. package/FieldArray/index.js.map +2 -2
  16. package/FieldObject/index.d.ts +2 -0
  17. package/FieldObject/index.js +9 -5
  18. package/FieldObject/index.js.map +2 -2
  19. package/Fieldset/index.d.ts +1 -1
  20. package/Fieldset/index.js +5 -5
  21. package/Fieldset/index.js.map +2 -2
  22. package/Fieldset/types.d.ts +2 -3
  23. package/FormBuilder/index.d.ts +8 -2
  24. package/FormBuilder/index.js +150 -6
  25. package/FormBuilder/index.js.map +3 -3
  26. package/FormContext.js.map +2 -2
  27. package/MultiplicityField/add-objects/index.js +11 -7
  28. package/MultiplicityField/add-objects.js.map +2 -2
  29. package/MultiplicityField/index.js +16 -12
  30. package/MultiplicityField/index.js.map +2 -2
  31. package/MultiplicityField/types.d.ts +1 -2
  32. package/Questions/Questions/index.js +5 -4
  33. package/Questions/Questions.js.map +2 -2
  34. package/Questions/QuestionsContext.d.ts +0 -1
  35. package/Questions/Step/StepArrayReview.js.map +2 -2
  36. package/Questions/Step/StepContext.d.ts +0 -1
  37. package/Questions/Step/StepTitle/index.js +4 -3
  38. package/Questions/Step/StepTitle.d.ts +1 -1
  39. package/Questions/Step/StepTitle.js.map +2 -2
  40. package/Questions/Step/types.d.ts +0 -1
  41. package/Questions/types.d.ts +0 -1
  42. package/cjs/Field/FieldBase/index.js +1 -0
  43. package/cjs/Field/FieldBase.js.map +2 -2
  44. package/cjs/Field/FieldBaseContainer/index.js +4 -4
  45. package/cjs/Field/FieldBaseContainer.js.map +3 -3
  46. package/cjs/Field/FieldConditional/index.js +7 -3
  47. package/cjs/Field/FieldConditional.js.map +2 -2
  48. package/cjs/Field/index.js +5 -2
  49. package/cjs/Field/index.js.map +2 -2
  50. package/cjs/Field/types.js.map +1 -1
  51. package/cjs/Field/utils/index.js +18 -0
  52. package/cjs/Field/utils/index.js.map +2 -2
  53. package/cjs/FieldArray/index.js +8 -7
  54. package/cjs/FieldArray/index.js.map +3 -3
  55. package/cjs/FieldObject/index.js +10 -6
  56. package/cjs/FieldObject/index.js.map +3 -3
  57. package/cjs/Fieldset/index.js +10 -10
  58. package/cjs/Fieldset/index.js.map +3 -3
  59. package/cjs/Fieldset/types.js.map +1 -1
  60. package/cjs/FormBuilder/index.js +165 -5
  61. package/cjs/FormBuilder/index.js.map +3 -3
  62. package/cjs/FormContext/index.js +2 -2
  63. package/cjs/FormContext.js.map +3 -3
  64. package/cjs/MultiplicityField/add-objects/index.js +15 -11
  65. package/cjs/MultiplicityField/add-objects.js.map +3 -3
  66. package/cjs/MultiplicityField/index.js +15 -16
  67. package/cjs/MultiplicityField/index.js.map +3 -3
  68. package/cjs/MultiplicityField/types.js.map +1 -1
  69. package/cjs/Questions/Questions/index.js +5 -4
  70. package/cjs/Questions/Questions.js.map +2 -2
  71. package/cjs/Questions/Step/StepArrayReview.js.map +2 -2
  72. package/cjs/Questions/Step/StepTitle/index.js +5 -5
  73. package/cjs/Questions/Step/StepTitle.js.map +3 -3
  74. package/cjs/index.js +11 -155
  75. package/cjs/index.js.map +4 -4
  76. package/cjs/inputs/AutoCompleteInput/__stories__/Default/index.js +1 -7
  77. package/cjs/inputs/AutoCompleteInput/__stories__/Default.js.map +2 -2
  78. package/cjs/inputs/AutoCompleteInput/__stories__/Multiple/index.js +1 -8
  79. package/cjs/inputs/AutoCompleteInput/__stories__/Multiple.js.map +2 -2
  80. package/cjs/inputs/AutoCompleteInput/index.js +10 -8
  81. package/cjs/inputs/AutoCompleteInput/index.js.map +3 -3
  82. package/cjs/inputs/Checkboxes/index.js +7 -9
  83. package/cjs/inputs/Checkboxes/index.js.map +3 -3
  84. package/cjs/inputs/DateInput/__stories__/Default/index.js +3 -8
  85. package/cjs/inputs/DateInput/__stories__/Default.js.map +2 -2
  86. package/cjs/inputs/DateInput/index.js +4 -5
  87. package/cjs/inputs/DateInput/index.js.map +3 -3
  88. package/cjs/inputs/FileInput/index.js +8 -9
  89. package/cjs/inputs/FileInput/index.js.map +3 -3
  90. package/cjs/inputs/ImageInput/ImageInput.stories/index.js +4 -4
  91. package/cjs/inputs/ImageInput/ImageInput.stories.js.map +2 -2
  92. package/cjs/inputs/ImageInput/__stories__/MaxSize/index.js +69 -0
  93. package/cjs/inputs/ImageInput/__stories__/MaxSize.js.map +7 -0
  94. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +2 -1
  95. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageDimension.js.map +2 -2
  96. package/cjs/inputs/ImageInput/index.js +9 -9
  97. package/cjs/inputs/ImageInput/index.js.map +3 -3
  98. package/cjs/inputs/Input/__stories__/LandlineNumber/index.js +1 -0
  99. package/cjs/inputs/Input/__stories__/LandlineNumber.js.map +2 -2
  100. package/cjs/inputs/Input/__stories__/MobilePhone/index.js +1 -0
  101. package/cjs/inputs/Input/__stories__/MobilePhone.js.map +2 -2
  102. package/cjs/inputs/Input/__stories__/PhoneNumber/index.js +1 -0
  103. package/cjs/inputs/Input/__stories__/PhoneNumber.js.map +2 -2
  104. package/cjs/inputs/Input/__stories__/PostalCode/index.js +1 -0
  105. package/cjs/inputs/Input/__stories__/PostalCode.js.map +2 -2
  106. package/cjs/inputs/Input/index.js +19 -6
  107. package/cjs/inputs/Input/index.js.map +3 -3
  108. package/cjs/inputs/Input/inputsInputScenarios.js.map +2 -2
  109. package/cjs/inputs/Label/index.js +3 -3
  110. package/cjs/inputs/Label/index.js.map +3 -3
  111. package/cjs/inputs/OtpInput/index.js.map +2 -2
  112. package/cjs/inputs/Radio/__stories__/Conditional.js.map +2 -2
  113. package/cjs/inputs/Radio/index.js +56 -10
  114. package/cjs/inputs/Radio/index.js.map +3 -3
  115. package/cjs/inputs/Select/index.js +3 -4
  116. package/cjs/inputs/Select/index.js.map +3 -3
  117. package/cjs/inputs/inputsScenarios/index.js +4 -11
  118. package/cjs/inputs/inputsScenarios.js.map +2 -2
  119. package/cjs/lazy/index.js +320 -59
  120. package/cjs/lazy.js.map +2 -2
  121. package/cjs/locales/el.js.map +1 -1
  122. package/cjs/registry/index.js +118 -38
  123. package/cjs/registry.js.map +2 -2
  124. package/cjs/types.js.map +1 -1
  125. package/cjs/utils/index.js +2 -1
  126. package/cjs/utils.js.map +2 -2
  127. package/cjs/validators/index.js +16 -66
  128. package/cjs/validators/index.js.map +3 -3
  129. package/cjs/validators/utils/date/index.js +138 -0
  130. package/cjs/validators/utils/date.js.map +7 -0
  131. package/cjs/validators/utils/file/index.js +1 -1
  132. package/cjs/validators/utils/file.js.map +2 -2
  133. package/cjs/validators/utils/index.js +3 -1
  134. package/cjs/validators/utils/index.js.map +2 -2
  135. package/cjs/validators/utils/phone.js.map +2 -2
  136. package/cjs/validators/utils/postal_code.js.map +1 -1
  137. package/cjs/validators/utils/uuid4.js.map +2 -2
  138. package/index.d.ts +5 -8
  139. package/index.js +9 -152
  140. package/index.js.map +4 -4
  141. package/inputs/AutoCompleteInput/__stories__/Default/index.js +1 -7
  142. package/inputs/AutoCompleteInput/__stories__/Default.js.map +2 -2
  143. package/inputs/AutoCompleteInput/__stories__/Multiple/index.js +1 -8
  144. package/inputs/AutoCompleteInput/__stories__/Multiple.js.map +2 -2
  145. package/inputs/AutoCompleteInput/index.d.ts +1 -1
  146. package/inputs/AutoCompleteInput/index.js +12 -8
  147. package/inputs/AutoCompleteInput/index.js.map +2 -2
  148. package/inputs/Checkboxes/index.d.ts +1 -1
  149. package/inputs/Checkboxes/index.js +8 -6
  150. package/inputs/Checkboxes/index.js.map +2 -2
  151. package/inputs/DateInput/__stories__/Default/index.js +3 -8
  152. package/inputs/DateInput/__stories__/Default.js.map +2 -2
  153. package/inputs/DateInput/index.d.ts +1 -2
  154. package/inputs/DateInput/index.js +6 -4
  155. package/inputs/DateInput/index.js.map +2 -2
  156. package/inputs/FileInput/index.js +6 -7
  157. package/inputs/FileInput/index.js.map +2 -2
  158. package/inputs/ImageInput/ImageInput.stories/index.js +2 -2
  159. package/inputs/ImageInput/ImageInput.stories.d.ts +1 -1
  160. package/inputs/ImageInput/ImageInput.stories.js.map +2 -2
  161. package/inputs/ImageInput/__stories__/MaxSize/index.js +36 -0
  162. package/inputs/ImageInput/__stories__/MaxSize/package.json +6 -0
  163. package/inputs/ImageInput/__stories__/MaxSize.d.ts +3 -0
  164. package/inputs/ImageInput/__stories__/MaxSize.js.map +7 -0
  165. package/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +2 -1
  166. package/inputs/ImageInput/__stories__/WithInvalidImageDimension.js.map +2 -2
  167. package/inputs/ImageInput/index.js +8 -8
  168. package/inputs/ImageInput/index.js.map +2 -2
  169. package/inputs/Input/__stories__/LandlineNumber/index.js +1 -0
  170. package/inputs/Input/__stories__/LandlineNumber.js.map +2 -2
  171. package/inputs/Input/__stories__/MobilePhone/index.js +1 -0
  172. package/inputs/Input/__stories__/MobilePhone.js.map +2 -2
  173. package/inputs/Input/__stories__/PhoneNumber/index.js +1 -0
  174. package/inputs/Input/__stories__/PhoneNumber.js.map +2 -2
  175. package/inputs/Input/__stories__/PostalCode/index.js +1 -0
  176. package/inputs/Input/__stories__/PostalCode.js.map +2 -2
  177. package/inputs/Input/index.js +17 -4
  178. package/inputs/Input/index.js.map +3 -3
  179. package/inputs/Input/inputsInputScenarios.js.map +2 -2
  180. package/inputs/Label/index.d.ts +0 -2
  181. package/inputs/Label/index.js +2 -2
  182. package/inputs/Label/index.js.map +2 -2
  183. package/inputs/OtpInput/index.js.map +2 -2
  184. package/inputs/Radio/__stories__/Conditional.js.map +2 -2
  185. package/inputs/Radio/index.d.ts +5 -1
  186. package/inputs/Radio/index.js +57 -8
  187. package/inputs/Radio/index.js.map +2 -2
  188. package/inputs/Select/index.d.ts +1 -1
  189. package/inputs/Select/index.js +4 -2
  190. package/inputs/Select/index.js.map +2 -2
  191. package/inputs/inputsScenarios/index.js +4 -11
  192. package/inputs/inputsScenarios.d.ts +0 -42
  193. package/inputs/inputsScenarios.js.map +2 -2
  194. package/lazy/index.js +320 -59
  195. package/lazy.d.ts +17 -10
  196. package/lazy.js.map +2 -2
  197. package/locales/el.js.map +1 -1
  198. package/package.json +4 -4
  199. package/registry/index.js +118 -38
  200. package/registry.d.ts +1 -0
  201. package/registry.js.map +2 -2
  202. package/src/Field/FieldBase.tsx +1 -0
  203. package/src/Field/FieldBaseContainer.tsx +2 -2
  204. package/src/Field/FieldConditional.tsx +4 -0
  205. package/src/Field/index.tsx +4 -1
  206. package/src/Field/types.tsx +10 -8
  207. package/src/Field/utils/index.ts +18 -1
  208. package/src/FieldArray/index.test.tsx +14 -13
  209. package/src/FieldArray/index.tsx +9 -6
  210. package/src/FieldObject/index.tsx +8 -2
  211. package/src/Fieldset/index.tsx +5 -5
  212. package/src/Fieldset/types.tsx +2 -2
  213. package/src/FormBuilder/{FormBuilder.mdx → doc.mdx} +20 -33
  214. package/src/FormBuilder/index.test.tsx +11 -10
  215. package/src/FormBuilder/index.tsx +178 -7
  216. package/src/FormBuilder/scenarios.test.tsx +2 -2
  217. package/src/FormContext.tsx +1 -2
  218. package/src/MultiplicityField/add-objects.tsx +10 -8
  219. package/src/MultiplicityField/{MultiplicityField.mdx → doc.mdx} +12 -16
  220. package/src/MultiplicityField/index.test.tsx +26 -25
  221. package/src/MultiplicityField/index.tsx +15 -12
  222. package/src/MultiplicityField/types.ts +1 -2
  223. package/src/Questions/Questions.tsx +4 -4
  224. package/src/Questions/Step/StepArrayReview.tsx +1 -1
  225. package/src/Questions/Step/StepTitle.tsx +4 -3
  226. package/src/Questions/__snapshots__/index.spec.tsx.snap +8 -4
  227. package/src/Questions/{index.mdx → doc.mdx} +9 -12
  228. package/src/Questions/index.spec.tsx +6 -2
  229. package/src/Questions/index.test.tsx +11 -10
  230. package/src/create-simple-form.mdx +2 -6
  231. package/src/{index.mdx → doc.mdx} +4 -8
  232. package/src/index.ts +6 -0
  233. package/src/inputs/AutoCompleteInput/__stories__/Default.tsx +2 -10
  234. package/src/inputs/AutoCompleteInput/__stories__/Multiple.tsx +1 -8
  235. package/src/inputs/AutoCompleteInput/{index.mdx → doc.mdx} +2 -13
  236. package/src/inputs/AutoCompleteInput/index.test.tsx +14 -13
  237. package/src/inputs/AutoCompleteInput/index.tsx +36 -31
  238. package/src/inputs/Checkboxes/{index.mdx → doc.mdx} +5 -15
  239. package/src/inputs/Checkboxes/index.test.tsx +17 -16
  240. package/src/inputs/Checkboxes/index.tsx +10 -8
  241. package/src/inputs/DateInput/__stories__/Default.tsx +7 -12
  242. package/src/inputs/DateInput/{index.mdx → doc.mdx} +1 -8
  243. package/src/inputs/DateInput/index.test.tsx +11 -10
  244. package/src/inputs/DateInput/index.tsx +6 -4
  245. package/src/inputs/FileInput/{index.mdx → doc.mdx} +1 -5
  246. package/src/inputs/FileInput/index.test.tsx +11 -10
  247. package/src/inputs/FileInput/index.tsx +7 -8
  248. package/src/inputs/ImageInput/ImageInput.stories.js +1 -1
  249. package/src/inputs/ImageInput/__stories__/MaxSize.tsx +37 -0
  250. package/src/inputs/ImageInput/__stories__/WithInvalidImageDimension.tsx +2 -0
  251. package/src/inputs/ImageInput/doc.mdx +23 -0
  252. package/src/inputs/ImageInput/index.test.tsx +21 -16
  253. package/src/inputs/ImageInput/index.tsx +10 -15
  254. package/src/inputs/Input/__stories__/LandlineNumber.tsx +2 -1
  255. package/src/inputs/Input/__stories__/MobilePhone.tsx +1 -0
  256. package/src/inputs/Input/__stories__/PhoneNumber.tsx +1 -0
  257. package/src/inputs/Input/__stories__/PostalCode.tsx +1 -0
  258. package/src/inputs/Input/doc.mdx +56 -0
  259. package/src/inputs/Input/index.test.tsx +38 -37
  260. package/src/inputs/Input/index.tsx +32 -29
  261. package/src/inputs/Input/inputsInputScenarios.ts +244 -245
  262. package/src/inputs/Label/doc.mdx +14 -0
  263. package/src/inputs/Label/index.test.tsx +11 -10
  264. package/src/inputs/Label/index.tsx +2 -6
  265. package/src/inputs/OtpInput/{index.mdx → doc.mdx} +1 -8
  266. package/src/inputs/OtpInput/index.test.tsx +11 -10
  267. package/src/inputs/OtpInput/index.tsx +2 -1
  268. package/src/inputs/Radio/__stories__/Conditional.tsx +2 -1
  269. package/src/inputs/Radio/{index.mdx → doc.mdx} +5 -15
  270. package/src/inputs/Radio/index.test.tsx +17 -16
  271. package/src/inputs/Radio/index.tsx +76 -10
  272. package/src/inputs/Select/{index.mdx → doc.mdx} +1 -5
  273. package/src/inputs/Select/index.test.tsx +11 -10
  274. package/src/inputs/Select/index.tsx +5 -3
  275. package/src/inputs/inputsScenarios.ts +174 -181
  276. package/src/installation.mdx +2 -5
  277. package/src/lazy.js +322 -62
  278. package/src/locales/el.ts +1 -1
  279. package/src/registry.js +121 -45
  280. package/src/types.tsx +3 -2
  281. package/src/utils.ts +2 -2
  282. package/src/validators/index.ts +33 -71
  283. package/src/validators/utils/date.ts +107 -0
  284. package/src/validators/utils/file.ts +5 -3
  285. package/src/validators/utils/index.ts +1 -0
  286. package/src/validators/utils/phone.ts +1 -1
  287. package/src/validators/utils/postal_code.ts +1 -1
  288. package/src/validators/utils/uuid4.ts +2 -1
  289. package/src/validators/validators.spec.ts +3 -3
  290. package/types.d.ts +3 -3
  291. package/types.js.map +1 -1
  292. package/utils/index.js +2 -1
  293. package/utils.js.map +2 -2
  294. package/validators/index.js +20 -67
  295. package/validators/index.js.map +2 -2
  296. package/validators/utils/date/index.js +103 -0
  297. package/validators/utils/date/package.json +6 -0
  298. package/validators/utils/date.d.ts +9 -0
  299. package/validators/utils/date.js.map +7 -0
  300. package/validators/utils/file/index.js +1 -1
  301. package/validators/utils/file.js.map +2 -2
  302. package/validators/utils/index.d.ts +1 -0
  303. package/validators/utils/index.js +1 -0
  304. package/validators/utils/index.js.map +2 -2
  305. package/validators/utils/phone.d.ts +1 -1
  306. package/validators/utils/phone.js.map +2 -2
  307. package/validators/utils/postal_code.d.ts +1 -1
  308. package/validators/utils/postal_code.js.map +1 -1
  309. package/validators/utils/uuid4.js.map +2 -2
  310. package/src/index.tsx +0 -178
  311. package/src/inputs/ImageInput/index.mdx +0 -19
  312. package/src/inputs/Input/index.mdx +0 -95
  313. package/src/inputs/Label/index.mdx +0 -0
  314. /package/src/Field/{index.mdx → doc.mdx} +0 -0
@@ -0,0 +1,138 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var date_exports = {};
29
+ __export(date_exports, {
30
+ DATE_VALIDATOR: () => DATE_VALIDATOR,
31
+ EARLIER_THAN_VALIDATOR: () => EARLIER_THAN_VALIDATOR,
32
+ LATER_THAN_VALIDATOR: () => LATER_THAN_VALIDATOR
33
+ });
34
+ module.exports = __toCommonJS(date_exports);
35
+ var import_dayjs = __toESM(require("dayjs"));
36
+ var import_customParseFormat = __toESM(require("dayjs/plugin/customParseFormat"));
37
+ import_dayjs.default.extend(import_customParseFormat.default);
38
+ const VALID_DATE_FORMATS = ["DD/MM/YYYY"];
39
+ const DATE_CACHE = {};
40
+ const getDate = (v) => {
41
+ return DATE_CACHE[v] ? DATE_CACHE[v] : (0, import_dayjs.default)(v, VALID_DATE_FORMATS, true);
42
+ };
43
+ const checkPartialDate = (value) => {
44
+ console.log("value.split('/')", value.split("/"));
45
+ const [day, month, year] = value.split("/");
46
+ if (day && !month && !year) {
47
+ return "form.error.date.invalid_month_year";
48
+ }
49
+ if (!day && month && !year) {
50
+ return "form.error.date.invalid_day_year";
51
+ }
52
+ if (!day && !month && year) {
53
+ return "form.error.date.invalid_day_month";
54
+ }
55
+ if (day && month && !year) {
56
+ return "form.error.date.invalid_year";
57
+ }
58
+ if (day && !month && year) {
59
+ return "form.error.date.invalid_month";
60
+ }
61
+ if (!day && month && year) {
62
+ return "form.error.date.invalid_day";
63
+ } else {
64
+ return "form.error.date.invalid";
65
+ }
66
+ };
67
+ const LATER_THAN_VALIDATOR = (field) => {
68
+ let minDate;
69
+ const params = field.extra || {};
70
+ if (params.min === "now") {
71
+ const today = /* @__PURE__ */ new Date();
72
+ minDate = new Date(today);
73
+ } else {
74
+ minDate = getDate(params.min).toDate();
75
+ }
76
+ const minPreviousDate = new Date(minDate);
77
+ minPreviousDate.setDate(minDate.getDate() - 1);
78
+ return {
79
+ name: "later-than",
80
+ message: {
81
+ key: "form.error.date.later_than",
82
+ context: {
83
+ minDate: minPreviousDate.toLocaleDateString()
84
+ }
85
+ },
86
+ test: function(value) {
87
+ if (!value) return true;
88
+ const date = getDate(value);
89
+ const isValid = +date.toDate() > +minDate;
90
+ return isValid;
91
+ }
92
+ };
93
+ };
94
+ const EARLIER_THAN_VALIDATOR = (field) => {
95
+ let maxDate;
96
+ const params = field.extra || {};
97
+ if (params.max === "now") {
98
+ const today = /* @__PURE__ */ new Date();
99
+ maxDate = new Date(today);
100
+ } else {
101
+ maxDate = getDate(params.max).toDate();
102
+ }
103
+ const maxNextDate = new Date(maxDate);
104
+ maxNextDate.setDate(maxDate.getDate() + 1);
105
+ return {
106
+ name: "earlier-than",
107
+ message: {
108
+ key: "form.error.date.earlier_than",
109
+ context: {
110
+ maxDate: maxNextDate.toLocaleDateString()
111
+ }
112
+ },
113
+ test: function(value) {
114
+ if (!value) return true;
115
+ const date = getDate(value);
116
+ const isValid = +date.toDate() < +maxDate;
117
+ return isValid;
118
+ }
119
+ };
120
+ };
121
+ const DATE_VALIDATOR = {
122
+ name: "date-validator",
123
+ message: (v) => {
124
+ return checkPartialDate(v.value);
125
+ },
126
+ test: function(value) {
127
+ if (!value) return true;
128
+ const date = getDate(value);
129
+ return date.isValid();
130
+ }
131
+ };
132
+ // Annotate the CommonJS export names for ESM import in node:
133
+ 0 && (module.exports = {
134
+ DATE_VALIDATOR,
135
+ EARLIER_THAN_VALIDATOR,
136
+ LATER_THAN_VALIDATOR
137
+ });
138
+ //# sourceMappingURL=date.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/validators/utils/date.ts"],
4
+ "sourcesContent": ["import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\n\ndayjs.extend(customParseFormat);\n\nconst VALID_DATE_FORMATS = ['DD/MM/YYYY'];\nconst DATE_CACHE = {};\n\nconst getDate = (v: string) => {\n return DATE_CACHE[v] ? DATE_CACHE[v] : dayjs(v, VALID_DATE_FORMATS, true);\n};\n\n// Function to check partial date completion\nconst checkPartialDate = (value: string) => {\n console.log(\"value.split('/')\", value.split('/'));\n const [day, month, year] = value.split('/');\n if (day && !month && !year) {\n return 'form.error.date.invalid_month_year';\n }\n if (!day && month && !year) {\n return 'form.error.date.invalid_day_year';\n }\n if (!day && !month && year) {\n return 'form.error.date.invalid_day_month';\n }\n if (day && month && !year) {\n return 'form.error.date.invalid_year';\n }\n if (day && !month && year) {\n return 'form.error.date.invalid_month';\n }\n if (!day && month && year) {\n return 'form.error.date.invalid_day';\n } else {\n return 'form.error.date.invalid';\n }\n};\n\nexport const LATER_THAN_VALIDATOR = (field: FieldSpec): ValidatorSchema => {\n let minDate;\n const params = field.extra || {};\n if (params.min === 'now') {\n const today = new Date();\n minDate = new Date(today);\n } else {\n minDate = getDate(params.min).toDate();\n }\n const minPreviousDate = new Date(minDate);\n minPreviousDate.setDate(minDate.getDate() - 1);\n return {\n name: 'later-than',\n message: {\n key: 'form.error.date.later_than',\n context: {\n minDate: minPreviousDate.toLocaleDateString(),\n },\n },\n test: function (value: string) {\n if (!value) return true;\n const date = getDate(value);\n const isValid = +date.toDate() > +minDate;\n return isValid;\n },\n };\n};\n\nexport const EARLIER_THAN_VALIDATOR = (field: FieldSpec): ValidatorSchema => {\n let maxDate;\n const params = field.extra || {};\n if (params.max === 'now') {\n const today = new Date();\n maxDate = new Date(today);\n } else {\n maxDate = getDate(params.max).toDate();\n }\n const maxNextDate = new Date(maxDate);\n maxNextDate.setDate(maxDate.getDate() + 1);\n return {\n name: 'earlier-than',\n message: {\n key: 'form.error.date.earlier_than',\n context: {\n maxDate: maxNextDate.toLocaleDateString(),\n },\n },\n test: function (value: string) {\n if (!value) return true;\n const date = getDate(value);\n const isValid = +date.toDate() < +maxDate;\n return isValid;\n },\n };\n};\n\nexport const DATE_VALIDATOR = {\n name: 'date-validator',\n message: (v): string => {\n return checkPartialDate(v.value);\n },\n test: function (value: string) {\n if (!value) return true;\n const date = getDate(value);\n return date.isValid();\n },\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["dayjs", "customParseFormat"]
7
+ }
@@ -24,7 +24,7 @@ const DEFAULT_FILE_MAX_SIZE = 1e7;
24
24
  const FILE_MAX_SIZE_VALIDATOR = (field) => ({
25
25
  name: "file-max-size-validator",
26
26
  message: {
27
- key: "form.error.file_size",
27
+ key: field.type === "file" ? "form.error.file_size" : "form.error.image_size",
28
28
  context: {
29
29
  maxSizeToMb: (field?.extra?.limit.maxSize || DEFAULT_FILE_MAX_SIZE) / 1e6
30
30
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/validators/utils/file.ts"],
4
- "sourcesContent": ["import { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\n\nconst DEFAULT_FILE_MAX_SIZE = 10000000;\n\nexport const FILE_MAX_SIZE_VALIDATOR = (field: FieldSpec): ValidatorSchema => ({\n name: 'file-max-size-validator',\n message: {\n key: 'form.error.file_size',\n context: {\n maxSizeToMb: (field?.extra?.limit.maxSize || DEFAULT_FILE_MAX_SIZE) / 1000000,\n },\n },\n test: (value: File[]): boolean => {\n if (value) {\n for (const file of value) {\n const maxSize = field?.extra?.limit?.maxSize || DEFAULT_FILE_MAX_SIZE\n if (file.size > maxSize) {\n return false;\n }\n }\n }\n return true;\n },\n});\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,MAAM,wBAAwB;AAEvB,MAAM,0BAA0B,CAAC,WAAuC;AAAA,EAC7E,MAAM;AAAA,EACN,SAAS;AAAA,IACP,KAAK;AAAA,IACL,SAAS;AAAA,MACP,cAAc,OAAO,OAAO,MAAM,WAAW,yBAAyB;AAAA,IACxE;AAAA,EACF;AAAA,EACA,MAAM,CAAC,UAA2B;AAChC,QAAI,OAAO;AACT,iBAAW,QAAQ,OAAO;AACxB,cAAM,UAAU,OAAO,OAAO,OAAO,WAAW;AAChD,YAAI,KAAK,OAAO,SAAS;AACvB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;",
4
+ "sourcesContent": ["import { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\n\nconst DEFAULT_FILE_MAX_SIZE = 10000000;\n\nexport const FILE_MAX_SIZE_VALIDATOR = (field: FieldSpec): ValidatorSchema => ({\n name: 'file-max-size-validator',\n message: {\n key:\n field.type === 'file' ? 'form.error.file_size' : 'form.error.image_size',\n context: {\n maxSizeToMb:\n (field?.extra?.limit.maxSize || DEFAULT_FILE_MAX_SIZE) / 1000000,\n },\n },\n test: (value: File[]): boolean => {\n if (value) {\n for (const file of value) {\n const maxSize = field?.extra?.limit?.maxSize || DEFAULT_FILE_MAX_SIZE;\n if (file.size > maxSize) {\n return false;\n }\n }\n }\n return true;\n },\n});\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,MAAM,wBAAwB;AAEvB,MAAM,0BAA0B,CAAC,WAAuC;AAAA,EAC7E,MAAM;AAAA,EACN,SAAS;AAAA,IACP,KACE,MAAM,SAAS,SAAS,yBAAyB;AAAA,IACnD,SAAS;AAAA,MACP,cACG,OAAO,OAAO,MAAM,WAAW,yBAAyB;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM,CAAC,UAA2B;AAChC,QAAI,OAAO;AACT,iBAAW,QAAQ,OAAO;AACxB,cAAM,UAAU,OAAO,OAAO,OAAO,WAAW;AAChD,YAAI,KAAK,OAAO,SAAS;AACvB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }
@@ -43,6 +43,7 @@ __reExport(utils_exports, require("@digigov/form/validators/utils/phone"), modul
43
43
  __reExport(utils_exports, require("@digigov/form/validators/utils/postal_code"), module.exports);
44
44
  __reExport(utils_exports, require("@digigov/form/validators/utils/uuid4"), module.exports);
45
45
  __reExport(utils_exports, require("@digigov/form/validators/utils/text_limit"), module.exports);
46
+ __reExport(utils_exports, require("@digigov/form/validators/utils/date"), module.exports);
46
47
  function getYupField(field, yupTypeMap) {
47
48
  const yupField = yupTypeMap[field?.type || "string"] || yupTypeMap["string"];
48
49
  return yupField(field);
@@ -135,6 +136,7 @@ function getYupObjectShape(fields, yupTypeMap, validatorRegistry) {
135
136
  ...require("@digigov/form/validators/utils/phone"),
136
137
  ...require("@digigov/form/validators/utils/postal_code"),
137
138
  ...require("@digigov/form/validators/utils/uuid4"),
138
- ...require("@digigov/form/validators/utils/text_limit")
139
+ ...require("@digigov/form/validators/utils/text_limit"),
140
+ ...require("@digigov/form/validators/utils/date")
139
141
  });
140
142
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/validators/utils/index.ts"],
4
- "sourcesContent": ["import * as yup from 'yup';\nimport { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\n\nexport * from '@digigov/form/validators/utils/afm';\nexport * from '@digigov/form/validators/utils/file';\nexport * from '@digigov/form/validators/utils/iban';\nexport * from '@digigov/form/validators/utils/otp';\nexport * from '@digigov/form/validators/utils/image';\nexport * from '@digigov/form/validators/utils/phone';\nexport * from '@digigov/form/validators/utils/postal_code';\nexport * from '@digigov/form/validators/utils/uuid4';\nexport * from '@digigov/form/validators/utils/text_limit';\n\nexport function getYupField(field: FieldSpec, yupTypeMap: Record<string, any>) {\n const yupField = yupTypeMap[field?.type || 'string'] || yupTypeMap['string'];\n return yupField(field);\n}\nexport function computeShape(\n fields: FieldSpec[],\n yupTypeMap: Record<string, ValidatorSchema>,\n validatorRegistry: Record<string, ValidatorSchema[]> | undefined\n) {\n const fieldSchemas = {};\n const objectFields: Record<string, FieldSpec[]> = {};\n fields.forEach((field) => {\n let yupField = getYupField(field, yupTypeMap);\n if (field.condition) {\n for (const key in field.condition) {\n let then: any, otherwise: any;\n if (field.condition[key].then) {\n if (field.condition[key].then?.required === false) {\n then = yupField.nullable();\n } else if (field.condition[key].then?.required === true) {\n then = yupField.nullable().required('form.error.required');\n }\n }\n if (field.condition[key].else) {\n if (field.condition[key].else?.required === false) {\n otherwise = yupField.nullable();\n } else if (field.condition[key].else?.required === true) {\n otherwise = yupField.nullable().required('form.error.required');\n }\n }\n if (then || otherwise) {\n yupField = yupField.when(key, {\n is: (val) => {\n //@ts-ignore\n const is = field.condition[key].is;\n if (is === val || (Array.isArray(val) && val.includes(is))) {\n return true;\n } else {\n return false;\n }\n },\n then,\n otherwise,\n });\n }\n }\n } else if (field.required) {\n yupField = yupField.nullable().required('form.error.required');\n }\n if (validatorRegistry && field.type && validatorRegistry[field.type]) {\n validatorRegistry[field.type].forEach((validator: any) => {\n yupField = yupField.test(validator);\n });\n }\n if (field.validators) {\n field.validators.forEach((validator) => {\n yupField = yupField.test(validator);\n });\n }\n fieldSchemas[field.key] = yupField;\n });\n for (const objectKey in objectFields) {\n fieldSchemas[objectKey] = getYupObjectShape(\n objectFields[objectKey],\n yupTypeMap,\n validatorRegistry\n );\n }\n return fieldSchemas;\n}\n\nexport function getYupObjectShape(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fields: FieldSpec[] | any,\n yupTypeMap: Record<string, any>,\n validatorRegistry?: Record<string, ValidatorSchema[]>\n) {\n if (!fields.current) {\n const fieldSchemas = computeShape(fields, yupTypeMap, validatorRegistry);\n return yup.object().shape(fieldSchemas);\n }\n\n return yup.lazy(function () {\n const fieldSchemas = computeShape(\n Object.values(fields.current),\n yupTypeMap,\n validatorRegistry\n );\n return yup.object().shape(fieldSchemas);\n });\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as yup from 'yup';\nimport { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\n\nexport * from '@digigov/form/validators/utils/afm';\nexport * from '@digigov/form/validators/utils/file';\nexport * from '@digigov/form/validators/utils/iban';\nexport * from '@digigov/form/validators/utils/otp';\nexport * from '@digigov/form/validators/utils/image';\nexport * from '@digigov/form/validators/utils/phone';\nexport * from '@digigov/form/validators/utils/postal_code';\nexport * from '@digigov/form/validators/utils/uuid4';\nexport * from '@digigov/form/validators/utils/text_limit';\nexport * from '@digigov/form/validators/utils/date';\n\nexport function getYupField(field: FieldSpec, yupTypeMap: Record<string, any>) {\n const yupField = yupTypeMap[field?.type || 'string'] || yupTypeMap['string'];\n return yupField(field);\n}\nexport function computeShape(\n fields: FieldSpec[],\n yupTypeMap: Record<string, ValidatorSchema>,\n validatorRegistry: Record<string, ValidatorSchema[]> | undefined\n) {\n const fieldSchemas = {};\n const objectFields: Record<string, FieldSpec[]> = {};\n fields.forEach((field) => {\n let yupField = getYupField(field, yupTypeMap);\n if (field.condition) {\n for (const key in field.condition) {\n let then: any, otherwise: any;\n if (field.condition[key].then) {\n if (field.condition[key].then?.required === false) {\n then = yupField.nullable();\n } else if (field.condition[key].then?.required === true) {\n then = yupField.nullable().required('form.error.required');\n }\n }\n if (field.condition[key].else) {\n if (field.condition[key].else?.required === false) {\n otherwise = yupField.nullable();\n } else if (field.condition[key].else?.required === true) {\n otherwise = yupField.nullable().required('form.error.required');\n }\n }\n if (then || otherwise) {\n yupField = yupField.when(key, {\n is: (val) => {\n //@ts-ignore\n const is = field.condition[key].is;\n if (is === val || (Array.isArray(val) && val.includes(is))) {\n return true;\n } else {\n return false;\n }\n },\n then,\n otherwise,\n });\n }\n }\n } else if (field.required) {\n yupField = yupField.nullable().required('form.error.required');\n }\n if (validatorRegistry && field.type && validatorRegistry[field.type]) {\n validatorRegistry[field.type].forEach((validator: any) => {\n yupField = yupField.test(validator);\n });\n }\n if (field.validators) {\n field.validators.forEach((validator) => {\n yupField = yupField.test(validator);\n });\n }\n fieldSchemas[field.key] = yupField;\n });\n for (const objectKey in objectFields) {\n fieldSchemas[objectKey] = getYupObjectShape(\n objectFields[objectKey],\n yupTypeMap,\n validatorRegistry\n );\n }\n return fieldSchemas;\n}\n\nexport function getYupObjectShape(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fields: FieldSpec[] | any,\n yupTypeMap: Record<string, any>,\n validatorRegistry?: Record<string, ValidatorSchema[]>\n) {\n if (!fields.current) {\n const fieldSchemas = computeShape(fields, yupTypeMap, validatorRegistry);\n return yup.object().shape(fieldSchemas);\n }\n\n return yup.lazy(function () {\n const fieldSchemas = computeShape(\n Object.values(fields.current),\n yupTypeMap,\n validatorRegistry\n );\n return yup.object().shape(fieldSchemas);\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/validators/utils/phone.ts"],
4
- "sourcesContent": ["import { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\n\nexport type PhoneNumberType = 'landline' | 'mobile' | null;\n// add more countries from here libphonenumber-js/metadata.full.json\nconst countryPhoneData = {\n GR: [\n '30',\n '00',\n '5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}',\n [10, 11, 12],\n [\n ['(\\\\d{2})(\\\\d{4})(\\\\d{4})', '$1 $2 $3', ['21|7']],\n [\n '(\\\\d{4})(\\\\d{6})',\n '$1 $2',\n ['2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5'],\n ],\n ['(\\\\d{3})(\\\\d{3})(\\\\d{4})', '$1 $2 $3', ['[2689]']],\n ['(\\\\d{3})(\\\\d{3,4})(\\\\d{5})', '$1 $2 $3', ['8']],\n ],\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n [\n [\n '2(?:1\\\\d\\\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\\\d|2[1-5]|[34][1-4]|9[1-57]))\\\\d{6}',\n [10],\n ],\n ['68[57-9]\\\\d{7}|(?:69|94)\\\\d{8}', [10]],\n ['800\\\\d{7,9}'],\n ['90[19]\\\\d{7}', [10]],\n ['70\\\\d{8}', [10]],\n 0,\n ['5005000\\\\d{3}', [10]],\n 0,\n 0,\n ['8(?:0[16]|12|[27]5|50)\\\\d{7}', [10]],\n ],\n ],\n};\n\nfunction expandPhoneNumberStructure(compressed) {\n const countries = Object.keys(compressed);\n const expanded: any = {};\n for (const country of countries) {\n expanded[country] = {\n fixedLine: {\n possibleLengths: {\n _national: compressed[country][3].map(String),\n },\n nationalNumberPattern: compressed[country][11][0][0],\n },\n mobile: {\n nationalNumberPattern: compressed[country][11][1][0],\n },\n tollFree: {\n nationalNumberPattern: compressed[country][11][2][0],\n },\n premiumRate: {\n nationalNumberPattern: compressed[country][11][3][0],\n },\n sharedCost: {\n nationalNumberPattern: compressed[country][11][9][0],\n },\n personalNumber: {\n nationalNumberPattern: compressed[country][11][4][0],\n },\n uan: {\n nationalNumberPattern: compressed[country][11][6][0],\n },\n id: country,\n countryCode: compressed[country][0],\n internationalPrefix: compressed[country][1],\n };\n }\n return expanded;\n}\nconst PHONENUMBER_SPEC = expandPhoneNumberStructure(countryPhoneData);\nexport function discoverPhoneType(phoneNumber: string, config: any): string {\n const cleanNumber = phoneNumber\n .replace(/\\D/g, '')\n .replace(/\\s/g, '')\n .replace(/^\\+/, '')\n .replace(new RegExp('^' + config.internationalPrefix, ''), '')\n .replace(new RegExp('^' + config.countryCode, ''), '');\n const categories = {\n landline: config.fixedLine,\n mobile: config.mobile,\n 'toll-free': config.tollFree,\n 'premium-rate': config.premiumRate,\n };\n\n for (const [categoryName, categoryDetails] of Object.entries(categories)) {\n const pattern = new RegExp(\n '^(' + categoryDetails.nationalNumberPattern.replace(/\\s/g, '') + ')$',\n ''\n );\n if (cleanNumber.match(pattern)) {\n return categoryName; // Returns the category name if the number matches the pattern\n }\n }\n\n // If no category matches, return 'Unknown'\n return 'unknown';\n}\nfunction getNumberType(phoneNumber: string, country: string) {\n const spec = PHONENUMBER_SPEC[country.toUpperCase()];\n if (!spec) {\n throw new Error(`Country ${country} is not supported`);\n }\n const type = discoverPhoneType(phoneNumber, spec);\n return type;\n}\n\nfunction isPhoneNumberValid(\n phoneNumber: string,\n countries: string[],\n types = ['mobile', 'landline']\n) {\n return countries.some((country) => {\n const numberType = getNumberType(phoneNumber, country);\n if (numberType && types.includes(numberType)) {\n return true;\n }\n return false;\n });\n}\nfunction isNumberOfType(phoneNumber: string, country: string, type: string) {\n const numberType = getNumberType(phoneNumber, country);\n if (numberType === type) {\n return true;\n }\n return false;\n}\nexport function validatePhoneNumber(\n phoneNumber: string,\n countries: Array<string> = ['gr'],\n typeOfPhoneNumber?: PhoneNumberType\n): boolean {\n if (!countries || countries.length === 0) {\n return true;\n }\n return isPhoneNumberValid(\n phoneNumber,\n countries,\n typeOfPhoneNumber ? [typeOfPhoneNumber] : undefined\n );\n}\n\nfunction validateMobile(value): boolean {\n return isNumberOfType(value, 'gr', 'mobile');\n}\n\nexport const MOBILE_PHONE_VALIDATOR = {\n name: 'mobile-phone-validator',\n message: 'form.error.mobile_phone',\n test: (value): boolean => {\n if (value) {\n return validateMobile(value);\n }\n return true;\n },\n};\n\nexport const PHONE_NUMBER_VALIDATOR = (field: FieldSpec): ValidatorSchema => {\n const countryCodes = field?.extra?.countries;\n const typeOfPhone: PhoneNumberType | null = field?.extra?.phoneType;\n return {\n name: 'phone-number-validator',\n message: (): string => {\n if (typeOfPhone === 'mobile') {\n return 'form.error.mobile_phone';\n }\n if (typeOfPhone === 'landline') {\n return 'form.error.landline';\n } else {\n return 'form.error.phone_number';\n }\n },\n test: (value: string): boolean => {\n if (!value) {\n return true;\n }\n return validatePhoneNumber(value, countryCodes, typeOfPhone);\n },\n };\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\n\nexport type PhoneNumberType = 'landline' | 'mobile' | null;\n// add more countries from here libphonenumber-js/metadata.full.json\nconst countryPhoneData = {\n GR: [\n '30',\n '00',\n '5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}',\n [10, 11, 12],\n [\n ['(\\\\d{2})(\\\\d{4})(\\\\d{4})', '$1 $2 $3', ['21|7']],\n [\n '(\\\\d{4})(\\\\d{6})',\n '$1 $2',\n ['2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5'],\n ],\n ['(\\\\d{3})(\\\\d{3})(\\\\d{4})', '$1 $2 $3', ['[2689]']],\n ['(\\\\d{3})(\\\\d{3,4})(\\\\d{5})', '$1 $2 $3', ['8']],\n ],\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n [\n [\n '2(?:1\\\\d\\\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\\\d|2[1-5]|[34][1-4]|9[1-57]))\\\\d{6}',\n [10],\n ],\n ['68[57-9]\\\\d{7}|(?:69|94)\\\\d{8}', [10]],\n ['800\\\\d{7,9}'],\n ['90[19]\\\\d{7}', [10]],\n ['70\\\\d{8}', [10]],\n 0,\n ['5005000\\\\d{3}', [10]],\n 0,\n 0,\n ['8(?:0[16]|12|[27]5|50)\\\\d{7}', [10]],\n ],\n ],\n};\n\nfunction expandPhoneNumberStructure(compressed) {\n const countries = Object.keys(compressed);\n const expanded: any = {};\n for (const country of countries) {\n expanded[country] = {\n fixedLine: {\n possibleLengths: {\n _national: compressed[country][3].map(String),\n },\n nationalNumberPattern: compressed[country][11][0][0],\n },\n mobile: {\n nationalNumberPattern: compressed[country][11][1][0],\n },\n tollFree: {\n nationalNumberPattern: compressed[country][11][2][0],\n },\n premiumRate: {\n nationalNumberPattern: compressed[country][11][3][0],\n },\n sharedCost: {\n nationalNumberPattern: compressed[country][11][9][0],\n },\n personalNumber: {\n nationalNumberPattern: compressed[country][11][4][0],\n },\n uan: {\n nationalNumberPattern: compressed[country][11][6][0],\n },\n id: country,\n countryCode: compressed[country][0],\n internationalPrefix: compressed[country][1],\n };\n }\n return expanded;\n}\nconst PHONENUMBER_SPEC = expandPhoneNumberStructure(countryPhoneData);\nexport function discoverPhoneType(phoneNumber: string, config: any): string {\n const cleanNumber = phoneNumber\n .replace(/\\D/g, '')\n .replace(/\\s/g, '')\n .replace(/^\\+/, '')\n .replace(new RegExp('^' + config.internationalPrefix, ''), '')\n .replace(new RegExp('^' + config.countryCode, ''), '');\n const categories = {\n landline: config.fixedLine,\n mobile: config.mobile,\n 'toll-free': config.tollFree,\n 'premium-rate': config.premiumRate,\n };\n\n for (const [categoryName, categoryDetails] of Object.entries(categories)) {\n const pattern = new RegExp(\n '^(' + categoryDetails.nationalNumberPattern.replace(/\\s/g, '') + ')$',\n ''\n );\n if (cleanNumber.match(pattern)) {\n return categoryName; // Returns the category name if the number matches the pattern\n }\n }\n\n // If no category matches, return 'Unknown'\n return 'unknown';\n}\nfunction getNumberType(phoneNumber: string, country: string) {\n const spec = PHONENUMBER_SPEC[country.toUpperCase()];\n if (!spec) {\n throw new Error(`Country ${country} is not supported`);\n }\n const type = discoverPhoneType(phoneNumber, spec);\n return type;\n}\n\nfunction isPhoneNumberValid(\n phoneNumber: string,\n countries: string[],\n types = ['mobile', 'landline']\n) {\n return countries.some((country) => {\n const numberType = getNumberType(phoneNumber, country);\n if (numberType && types.includes(numberType)) {\n return true;\n }\n return false;\n });\n}\nfunction isNumberOfType(phoneNumber: string, country: string, type: string) {\n const numberType = getNumberType(phoneNumber, country);\n if (numberType === type) {\n return true;\n }\n return false;\n}\nexport function validatePhoneNumber(\n phoneNumber: string,\n countries: string[] = ['gr'],\n typeOfPhoneNumber?: PhoneNumberType\n): boolean {\n if (!countries || countries.length === 0) {\n return true;\n }\n return isPhoneNumberValid(\n phoneNumber,\n countries,\n typeOfPhoneNumber ? [typeOfPhoneNumber] : undefined\n );\n}\n\nfunction validateMobile(value): boolean {\n return isNumberOfType(value, 'gr', 'mobile');\n}\n\nexport const MOBILE_PHONE_VALIDATOR = {\n name: 'mobile-phone-validator',\n message: 'form.error.mobile_phone',\n test: (value): boolean => {\n if (value) {\n return validateMobile(value);\n }\n return true;\n },\n};\n\nexport const PHONE_NUMBER_VALIDATOR = (field: FieldSpec): ValidatorSchema => {\n const countryCodes = field?.extra?.countries;\n const typeOfPhone: PhoneNumberType | null = field?.extra?.phoneType;\n return {\n name: 'phone-number-validator',\n message: (): string => {\n if (typeOfPhone === 'mobile') {\n return 'form.error.mobile_phone';\n }\n if (typeOfPhone === 'landline') {\n return 'form.error.landline';\n } else {\n return 'form.error.phone_number';\n }\n },\n test: (value: string): boolean => {\n if (!value) {\n return true;\n }\n return validatePhoneNumber(value, countryCodes, typeOfPhone);\n },\n };\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/validators/utils/postal_code.ts"],
4
- "sourcesContent": ["import { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\n\nconst CODE_REGEX = /^[12345678][0-9]{4}$/;\nexport function validatePostalCode(\n number: string,\n countries: Array<string>\n): boolean {\n if (!countries) {\n return false;\n } else {\n if (countries.length === 1 && countries[0].toUpperCase() === 'GR') {\n // Greek postal code must be 5 digits long and shouldn't start with 0 or 9.\n return CODE_REGEX.test(number);\n } else {\n return true;\n }\n }\n}\n\nexport const POSTALCODE_VALIDATOR = (field: FieldSpec): ValidatorSchema => {\n const countryCode = field?.extra?.countries;\n return {\n name: 'postal-code-validator',\n message: 'form.error.postalCode',\n test: (value: string): boolean => {\n if (!value) {\n return true;\n }\n return validatePostalCode(value, countryCode);\n },\n };\n};\n"],
4
+ "sourcesContent": ["import { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\n\nconst CODE_REGEX = /^[12345678][0-9]{4}$/;\nexport function validatePostalCode(\n number: string,\n countries: string[]\n): boolean {\n if (!countries) {\n return false;\n } else {\n if (countries.length === 1 && countries[0].toUpperCase() === 'GR') {\n // Greek postal code must be 5 digits long and shouldn't start with 0 or 9.\n return CODE_REGEX.test(number);\n } else {\n return true;\n }\n }\n}\n\nexport const POSTALCODE_VALIDATOR = (field: FieldSpec): ValidatorSchema => {\n const countryCode = field?.extra?.countries;\n return {\n name: 'postal-code-validator',\n message: 'form.error.postalCode',\n test: (value: string): boolean => {\n if (!value) {\n return true;\n }\n return validatePostalCode(value, countryCode);\n },\n };\n};\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,MAAM,aAAa;AACZ,SAAS,mBACd,QACA,WACS;AACT,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT,OAAO;AACL,QAAI,UAAU,WAAW,KAAK,UAAU,CAAC,EAAE,YAAY,MAAM,MAAM;AAEjE,aAAO,WAAW,KAAK,MAAM;AAAA,IAC/B,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,MAAM,uBAAuB,CAAC,UAAsC;AACzE,QAAM,cAAc,OAAO,OAAO;AAClC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM,CAAC,UAA2B;AAChC,UAAI,CAAC,OAAO;AACV,eAAO;AAAA,MACT;AACA,aAAO,mBAAmB,OAAO,WAAW;AAAA,IAC9C;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/validators/utils/uuid4.ts"],
4
- "sourcesContent": ["const 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;\n\nexport function validateUUID4(uuid4: string): boolean {\n if (uuid4.length !== 36) {\n // This uuid4 should be 36 characters long\n return false;\n }\n\n return UUID4_PATTERN.test(uuid4);\n}\n\nexport const UUID4_VALIDATOR = {\n name: 'uuid4-validator',\n message: 'form.error.uuid4',\n test: (value): boolean => {\n if (value) {\n return validateUUID4(value);\n }\n return true;\n },\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,gBAAgB;AAEf,SAAS,cAAc,OAAwB;AACpD,MAAI,MAAM,WAAW,IAAI;AAEvB,WAAO;AAAA,EACT;AAEA,SAAO,cAAc,KAAK,KAAK;AACjC;AAEO,MAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM,CAAC,UAAmB;AACxB,QAAI,OAAO;AACT,aAAO,cAAc,KAAK;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AACF;",
4
+ "sourcesContent": ["const UUID4_PATTERN =\n /^[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i;\n\nexport function validateUUID4(uuid4: string): boolean {\n if (uuid4.length !== 36) {\n // This uuid4 should be 36 characters long\n return false;\n }\n\n return UUID4_PATTERN.test(uuid4);\n}\n\nexport const UUID4_VALIDATOR = {\n name: 'uuid4-validator',\n message: 'form.error.uuid4',\n test: (value): boolean => {\n if (value) {\n return validateUUID4(value);\n }\n return true;\n },\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,gBACJ;AAEK,SAAS,cAAc,OAAwB;AACpD,MAAI,MAAM,WAAW,IAAI;AAEvB,WAAO;AAAA,EACT;AAEA,SAAO,cAAc,KAAK,KAAK;AACjC;AAEO,MAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM,CAAC,UAAmB;AACxB,QAAI,OAAO;AACT,aAAO,cAAc,KAAK;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }
package/index.d.ts CHANGED
@@ -1,9 +1,6 @@
1
- import React from 'react';
2
- import { FormBaseProps, FormBuilderProps } from '@digigov/form/types';
3
- declare const FormBase: React.ForwardRefExoticComponent<FormBaseProps & React.RefAttributes<HTMLFormElement>>;
4
- declare const useFormContext: () => import("@digigov/form/types").FormContextProps;
5
- declare const useFormValues: () => import("react-hook-form").FieldValues;
6
- declare const FormBuilder: React.ForwardRefExoticComponent<FormBuilderProps & React.RefAttributes<HTMLFormElement>>;
7
- export { FormBase, useFormContext, useFormValues, FormBuilder };
8
- export * from '@digigov/form/internal';
1
+ export { default as Field } from '@digigov/form/Field';
2
+ export { default as Fieldset } from '@digigov/form/Fieldset';
3
+ export * from '@digigov/form/inputs/Label';
4
+ import FormBuilder from '@digigov/form/FormBuilder';
5
+ export * from '@digigov/form/types';
9
6
  export default FormBuilder;
package/index.js CHANGED
@@ -1,160 +1,17 @@
1
- /** @license Digigov v2.0.0-85c27c19
1
+ /** @license Digigov v2.0.0-aefd0709
2
2
  *
3
3
  * This source code is licensed under the BSD-2-Clause license found in the
4
4
  * LICENSE file in the root directory of this source tree.
5
5
  */
6
- import React, { useCallback, useContext, useRef } from "react";
7
- import { useForm } from "react-hook-form";
8
- import Field from "@digigov/form/Field";
9
- import Fieldset from "@digigov/form/Fieldset";
10
- import { FormContext } from "@digigov/form/FormContext";
11
- import { yupResolver } from "@digigov/form/utils";
12
- import { useValidationSchema } from "@digigov/form/validators";
13
- import { Form } from "@digigov/react-core/Form";
14
- import { Button } from "@digigov/ui/form/Button";
15
- const FormBase = React.forwardRef(function FormBase2({
16
- onSubmit,
17
- children,
18
- registerField,
19
- fieldsMap,
20
- fieldsetsMap,
21
- resolver,
22
- mode,
23
- initial,
24
- reValidateMode,
25
- shouldFocusError,
26
- criteriaMode,
27
- componentRegistry,
28
- grid,
29
- ...props
30
- }, ref) {
31
- const form = useForm({
32
- resolver,
33
- mode,
34
- defaultValues: initial,
35
- reValidateMode,
36
- shouldFocusError,
37
- criteriaMode
38
- });
39
- const handleSubmit = useCallback(
40
- (data) => {
41
- onSubmit && onSubmit(data);
42
- },
43
- [onSubmit]
44
- );
45
- const submit = form.handleSubmit(handleSubmit);
46
- const ctx = {
47
- fieldsMap,
48
- fieldsetsMap,
49
- control: form.control,
50
- register: form.register,
51
- watch: form.watch,
52
- resetField: form.resetField,
53
- registerField,
54
- errors: form.formState.errors,
55
- formState: form.formState,
56
- reset: form.reset,
57
- trigger: form.trigger,
58
- getFieldState: form.getFieldState,
59
- setValue: form.setValue,
60
- clearErrors: form.clearErrors,
61
- getValues: form.getValues,
62
- unregister: form.unregister,
63
- componentRegistry,
64
- setError: form.setError,
65
- formRef: ref,
66
- submit
67
- };
68
- return /* @__PURE__ */ React.createElement(FormContext.Provider, { value: ctx }, /* @__PURE__ */ React.createElement(Form, { grid, onSubmit: submit, ref, ...props }, children));
69
- });
70
- const useFormContext = () => {
71
- return useContext(FormContext);
72
- };
73
- const useFormValues = () => {
74
- const ctx = useFormContext();
75
- return ctx.getValues();
76
- };
77
- const FormBuilder = React.forwardRef(function FormBuilder2({
78
- fields = [],
79
- fieldsets,
80
- initial = {},
81
- onSubmit,
82
- children,
83
- reValidateMode = "onSubmit",
84
- mode = "onSubmit",
85
- shouldFocusError = true,
86
- criteriaMode = "all",
87
- auto = false,
88
- validatorRegistry,
89
- componentRegistry,
90
- grid = false,
91
- ...props
92
- }, ref) {
93
- const fieldsState = useRef(fields);
94
- const setFieldsState = useCallback((newFields) => {
95
- fieldsState.current = newFields;
96
- }, []);
97
- const schema = useValidationSchema(fieldsState, validatorRegistry);
98
- const registerField = useCallback((field) => {
99
- const fieldIndex = fieldsState.current.findIndex(
100
- (f) => f.key === field.key
101
- );
102
- if (fieldIndex > -1) {
103
- fieldsState.current[fieldIndex] = field;
104
- } else {
105
- fieldsState.current.push(field);
106
- }
107
- setFieldsState(fieldsState.current);
108
- }, []);
109
- let resolver;
110
- let fieldsMap;
111
- let fieldsetsMap;
112
- let fieldChildren;
113
- if (schema) {
114
- resolver = yupResolver(schema);
115
- fieldsMap = fields ? fields.reduce((map, field) => ({ ...map, [field.key]: field }), {}) : {};
116
- fieldsetsMap = fieldsets && fieldsets.reduce(
117
- (map, fieldset) => ({ ...map, [fieldset.key]: fieldset }),
118
- {}
119
- );
120
- if (auto) {
121
- if (fieldsets) {
122
- fieldChildren = fieldsets.map((fieldset) => /* @__PURE__ */ React.createElement(Fieldset, { key: fieldset.key }));
123
- } else if (fields) {
124
- fieldChildren = fields.map((field) => /* @__PURE__ */ React.createElement(Field, { key: field.key, name: field.key }));
125
- }
126
- }
127
- }
128
- return /* @__PURE__ */ React.createElement(
129
- FormBase,
130
- {
131
- resolver,
132
- fieldsetsMap,
133
- fieldsMap,
134
- registerField,
135
- initial,
136
- reValidateMode,
137
- mode,
138
- shouldFocusError,
139
- criteriaMode,
140
- onSubmit,
141
- componentRegistry,
142
- ref,
143
- grid,
144
- ...props
145
- },
146
- fieldChildren,
147
- auto && /* @__PURE__ */ React.createElement(Button, { type: "submit" }, "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1"),
148
- children
149
- );
150
- });
151
- export * from "@digigov/form/internal";
6
+ import { default as default2 } from "@digigov/form/Field";
7
+ import { default as default3 } from "@digigov/form/Fieldset";
8
+ export * from "@digigov/form/inputs/Label";
9
+ import FormBuilder from "@digigov/form/FormBuilder";
10
+ export * from "@digigov/form/types";
152
11
  var src_default = FormBuilder;
153
12
  export {
154
- FormBase,
155
- FormBuilder,
156
- src_default as default,
157
- useFormContext,
158
- useFormValues
13
+ default2 as Field,
14
+ default3 as Fieldset,
15
+ src_default as default
159
16
  };
160
17
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.tsx"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback, useContext, useRef } from 'react';\nimport { useForm } from 'react-hook-form';\nimport Field from '@digigov/form/Field';\nimport Fieldset from '@digigov/form/Fieldset';\nimport { FormContext } from '@digigov/form/FormContext';\nimport { FormBaseProps, FormData, FormBuilderProps } from '@digigov/form/types';\nimport { yupResolver } from '@digigov/form/utils';\nimport { useValidationSchema } from '@digigov/form/validators';\nimport { Form } from '@digigov/react-core/Form';\nimport { Button } from '@digigov/ui/form/Button';\n\nconst FormBase = React.forwardRef(function FormBase(\n {\n onSubmit,\n children,\n registerField,\n fieldsMap,\n fieldsetsMap,\n resolver,\n mode,\n initial,\n reValidateMode,\n shouldFocusError,\n criteriaMode,\n componentRegistry,\n grid,\n ...props\n }: FormBaseProps,\n ref: React.Ref<HTMLFormElement>\n) {\n const form = useForm({\n resolver,\n mode,\n defaultValues: initial,\n reValidateMode,\n shouldFocusError,\n criteriaMode,\n });\n\n const handleSubmit = useCallback(\n (data: FormData): void => {\n onSubmit && onSubmit(data);\n },\n [onSubmit]\n );\n const submit = form.handleSubmit(handleSubmit);\n\n const ctx = {\n fieldsMap,\n fieldsetsMap,\n control: form.control,\n register: form.register,\n watch: form.watch,\n resetField: form.resetField,\n registerField: registerField,\n errors: form.formState.errors,\n formState: form.formState,\n reset: form.reset,\n trigger: form.trigger,\n getFieldState: form.getFieldState,\n setValue: form.setValue,\n clearErrors: form.clearErrors,\n getValues: form.getValues,\n unregister: form.unregister,\n componentRegistry,\n setError: form.setError,\n formRef: ref,\n submit,\n };\n return (\n <FormContext.Provider value={ctx}>\n <Form grid={grid} onSubmit={submit} ref={ref} {...props}>\n {children}\n </Form>\n </FormContext.Provider>\n );\n});\n\nconst useFormContext = () => {\n return useContext(FormContext);\n};\nconst useFormValues = () => {\n const ctx = useFormContext();\n return ctx.getValues();\n};\nconst FormBuilder = React.forwardRef(function FormBuilder(\n {\n fields = [],\n fieldsets,\n initial = {},\n onSubmit,\n children,\n reValidateMode = 'onSubmit',\n mode = 'onSubmit',\n shouldFocusError = true,\n criteriaMode = 'all',\n auto = false,\n validatorRegistry,\n componentRegistry,\n grid = false,\n ...props\n }: FormBuilderProps,\n ref: React.Ref<HTMLFormElement>\n): React.ReactElement {\n const fieldsState = useRef(fields);\n const setFieldsState = useCallback((newFields) => {\n fieldsState.current = newFields;\n }, []);\n const schema = useValidationSchema(fieldsState, validatorRegistry);\n const registerField = useCallback((field) => {\n const fieldIndex = fieldsState.current.findIndex(\n (f) => f.key === field.key\n );\n if (fieldIndex > -1) {\n fieldsState.current[fieldIndex] = field;\n } else {\n fieldsState.current.push(field);\n }\n setFieldsState(fieldsState.current);\n }, []);\n let resolver;\n let fieldsMap;\n let fieldsetsMap;\n let fieldChildren;\n if (schema) {\n resolver = yupResolver(schema);\n fieldsMap = fields\n ? fields.reduce((map, field) => ({ ...map, [field.key]: field }), {})\n : {};\n fieldsetsMap =\n fieldsets &&\n fieldsets.reduce(\n (map, fieldset) => ({ ...map, [fieldset.key]: fieldset }),\n {}\n );\n\n if (auto) {\n if (fieldsets) {\n fieldChildren = fieldsets.map((fieldset) => (\n <Fieldset key={fieldset.key} />\n ));\n } else if (fields) {\n fieldChildren = fields.map((field) => (\n <Field key={field.key} name={field.key} />\n ));\n }\n }\n }\n return (\n <FormBase\n resolver={resolver}\n fieldsetsMap={fieldsetsMap}\n fieldsMap={fieldsMap}\n registerField={registerField}\n initial={initial}\n reValidateMode={reValidateMode}\n mode={mode}\n shouldFocusError={shouldFocusError}\n criteriaMode={criteriaMode}\n onSubmit={onSubmit}\n componentRegistry={componentRegistry}\n ref={ref}\n grid={grid}\n {...props}\n >\n {fieldChildren}\n {auto && <Button type=\"submit\">\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1</Button>}\n {children}\n </FormBase>\n );\n});\n\nexport { FormBase, useFormContext, useFormValues, FormBuilder };\n\nexport * from '@digigov/form/internal';\n\nexport default FormBuilder;\n"],
5
- "mappings": "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",
6
- "names": ["FormBase", "FormBuilder"]
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": ["export { default as Field } from '@digigov/form/Field';\nexport { default as Fieldset } from '@digigov/form/Fieldset';\nexport * from '@digigov/form/inputs/Label';\nimport FormBuilder from '@digigov/form/FormBuilder';\nexport * from '@digigov/form/types';\nexport default FormBuilder;\n"],
5
+ "mappings": "AAAA,SAAoB,WAAXA,gBAAwB;AACjC,SAAoB,WAAXA,gBAA2B;AACpC,cAAc;AACd,OAAO,iBAAiB;AACxB,cAAc;AACd,IAAO,cAAQ;",
6
+ "names": ["default"]
7
7
  }
@@ -2,13 +2,7 @@ import React from "react";
2
2
  import { Field } from "@digigov/form/Field";
3
3
  import FormBuilder from "@digigov/form/FormBuilder";
4
4
  import Button from "@digigov/ui/form/Button";
5
- const results = [
6
- "\u0391\u03BC\u03B5\u03C1\u03B9\u03BA\u03AE",
7
- "\u0391\u03C3\u03AF\u03B1",
8
- "\u0391\u03C5\u03C3\u03C4\u03C1\u03B1\u03BB\u03AF\u03B1",
9
- "\u0391\u03C6\u03C1\u03B9\u03BA\u03AE",
10
- "\u0395\u03C5\u03C1\u03CE\u03C0\u03B7"
11
- ];
5
+ const results = ["\u0391\u03BC\u03B5\u03C1\u03B9\u03BA\u03AE", "\u0391\u03C3\u03AF\u03B1", "\u0391\u03C5\u03C3\u03C4\u03C1\u03B1\u03BB\u03AF\u03B1", "\u0391\u03C6\u03C1\u03B9\u03BA\u03AE", "\u0395\u03C5\u03C1\u03CE\u03C0\u03B7"];
12
6
  const fields = [
13
7
  {
14
8
  key: "autocomplete",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/inputs/AutoCompleteInput/__stories__/Default.tsx"],
4
- "sourcesContent": ["import React from 'react';\nimport { Field } from '@digigov/form/Field';\nimport FormBuilder from '@digigov/form/FormBuilder';\nimport { FieldSpec } from '@digigov/form/types';\nimport Button from '@digigov/ui/form/Button';\n\nconst results = [\n '\u0391\u03BC\u03B5\u03C1\u03B9\u03BA\u03AE',\n '\u0391\u03C3\u03AF\u03B1',\n '\u0391\u03C5\u03C3\u03C4\u03C1\u03B1\u03BB\u03AF\u03B1',\n '\u0391\u03C6\u03C1\u03B9\u03BA\u03AE',\n '\u0395\u03C5\u03C1\u03CE\u03C0\u03B7',\n];\n\nconst fields: FieldSpec[] = [\n {\n key: 'autocomplete',\n label: { primary: '\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03AE\u03C0\u03B5\u03B9\u03C1\u03BF' },\n required: true,\n type: 'choice:single',\n extra: {\n component: 'AutoComplete',\n options: results.map((r) => {\n return {\n label: {\n primary: r,\n secondary: `'\u0397\u03C0\u03B5\u03B9\u03C1\u03BF\u03C2: ${r}`,\n },\n value: r.toLowerCase(),\n };\n }),\n },\n },\n];\n\nconst initialValues = {};\n\nexport const Default = () => (\n\n <FormBuilder\n fields={fields}\n onSubmit={(data) => {\n console.log(data);\n }}\n initial={initialValues}\n >\n {fields.map((field) => (\n <Field key={field.key} name={field.key} />\n ))}\n <Button type=\"submit\">Submit</Button>\n </FormBuilder>\n\n);\nexport default Default;"],
5
- "mappings": "AAAA,OAAO,WAAW;AAClB,SAAS,aAAa;AACtB,OAAO,iBAAiB;AAExB,OAAO,YAAY;AAEnB,MAAM,UAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,SAAsB;AAAA,EAC1B;AAAA,IACE,KAAK;AAAA,IACL,OAAO,EAAE,SAAS,wFAAkB;AAAA,IACpC,UAAU;AAAA,IACV,MAAM;AAAA,IACN,OAAO;AAAA,MACL,WAAW;AAAA,MACX,SAAS,QAAQ,IAAI,CAAC,MAAM;AAC1B,eAAO;AAAA,UACL,OAAO;AAAA,YACL,SAAS;AAAA,YACT,WAAW,gDAAa,CAAC;AAAA,UAC3B;AAAA,UACA,OAAO,EAAE,YAAY;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,MAAM,gBAAgB,CAAC;AAEhB,MAAM,UAAU,MAErB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,UAAU,CAAC,SAAS;AAClB,cAAQ,IAAI,IAAI;AAAA,IAClB;AAAA,IACA,SAAS;AAAA;AAAA,EAER,OAAO,IAAI,CAAC,UACX,oCAAC,SAAM,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK,CACzC;AAAA,EACD,oCAAC,UAAO,MAAK,YAAS,QAAM;AAC9B;AAGF,IAAO,kBAAQ;",
4
+ "sourcesContent": ["import React from 'react';\nimport { Field } from '@digigov/form/Field';\nimport FormBuilder from '@digigov/form/FormBuilder';\nimport { FieldSpec } from '@digigov/form/types';\nimport Button from '@digigov/ui/form/Button';\n\nconst results = ['\u0391\u03BC\u03B5\u03C1\u03B9\u03BA\u03AE', '\u0391\u03C3\u03AF\u03B1', '\u0391\u03C5\u03C3\u03C4\u03C1\u03B1\u03BB\u03AF\u03B1', '\u0391\u03C6\u03C1\u03B9\u03BA\u03AE', '\u0395\u03C5\u03C1\u03CE\u03C0\u03B7'];\n\nconst fields: FieldSpec[] = [\n {\n key: 'autocomplete',\n label: { primary: '\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03AE\u03C0\u03B5\u03B9\u03C1\u03BF' },\n required: true,\n type: 'choice:single',\n extra: {\n component: 'AutoComplete',\n options: results.map((r) => {\n return {\n label: {\n primary: r,\n secondary: `'\u0397\u03C0\u03B5\u03B9\u03C1\u03BF\u03C2: ${r}`,\n },\n value: r.toLowerCase(),\n };\n }),\n },\n },\n];\n\nconst initialValues = {};\n\nexport const Default = () => (\n <FormBuilder\n fields={fields}\n onSubmit={(data) => {\n console.log(data);\n }}\n initial={initialValues}\n >\n {fields.map((field) => (\n <Field key={field.key} name={field.key} />\n ))}\n <Button type=\"submit\">Submit</Button>\n </FormBuilder>\n);\nexport default Default;\n"],
5
+ "mappings": "AAAA,OAAO,WAAW;AAClB,SAAS,aAAa;AACtB,OAAO,iBAAiB;AAExB,OAAO,YAAY;AAEnB,MAAM,UAAU,CAAC,8CAAW,4BAAQ,0DAAa,wCAAU,sCAAQ;AAEnE,MAAM,SAAsB;AAAA,EAC1B;AAAA,IACE,KAAK;AAAA,IACL,OAAO,EAAE,SAAS,wFAAkB;AAAA,IACpC,UAAU;AAAA,IACV,MAAM;AAAA,IACN,OAAO;AAAA,MACL,WAAW;AAAA,MACX,SAAS,QAAQ,IAAI,CAAC,MAAM;AAC1B,eAAO;AAAA,UACL,OAAO;AAAA,YACL,SAAS;AAAA,YACT,WAAW,gDAAa,CAAC;AAAA,UAC3B;AAAA,UACA,OAAO,EAAE,YAAY;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,MAAM,gBAAgB,CAAC;AAEhB,MAAM,UAAU,MACrB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,UAAU,CAAC,SAAS;AAClB,cAAQ,IAAI,IAAI;AAAA,IAClB;AAAA,IACA,SAAS;AAAA;AAAA,EAER,OAAO,IAAI,CAAC,UACX,oCAAC,SAAM,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK,CACzC;AAAA,EACD,oCAAC,UAAO,MAAK,YAAS,QAAM;AAC9B;AAEF,IAAO,kBAAQ;",
6
6
  "names": []
7
7
  }
@@ -2,13 +2,7 @@ import React from "react";
2
2
  import { Field } from "@digigov/form/Field";
3
3
  import FormBuilder from "@digigov/form/FormBuilder";
4
4
  import Button from "@digigov/ui/form/Button";
5
- const results = [
6
- "\u0391\u03BC\u03B5\u03C1\u03B9\u03BA\u03AE",
7
- "\u0391\u03C3\u03AF\u03B1",
8
- "\u0391\u03C5\u03C3\u03C4\u03C1\u03B1\u03BB\u03AF\u03B1",
9
- "\u0391\u03C6\u03C1\u03B9\u03BA\u03AE",
10
- "\u0395\u03C5\u03C1\u03CE\u03C0\u03B7"
11
- ];
5
+ const results = ["\u0391\u03BC\u03B5\u03C1\u03B9\u03BA\u03AE", "\u0391\u03C3\u03AF\u03B1", "\u0391\u03C5\u03C3\u03C4\u03C1\u03B1\u03BB\u03AF\u03B1", "\u0391\u03C6\u03C1\u03B9\u03BA\u03AE", "\u0395\u03C5\u03C1\u03CE\u03C0\u03B7"];
12
6
  const fields = [
13
7
  {
14
8
  key: "autocomplete",
@@ -17,7 +11,6 @@ const fields = [
17
11
  type: "choice:multiple",
18
12
  extra: {
19
13
  component: "AutoComplete",
20
- multiple: true,
21
14
  options: results.map((r) => {
22
15
  return {
23
16
  label: {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/inputs/AutoCompleteInput/__stories__/Multiple.tsx"],
4
- "sourcesContent": ["import React from 'react';\nimport { Field } from '@digigov/form/Field';\nimport FormBuilder from '@digigov/form/FormBuilder';\nimport { FieldSpec } from '@digigov/form/types';\nimport Button from '@digigov/ui/form/Button';\n\nconst results = [\n '\u0391\u03BC\u03B5\u03C1\u03B9\u03BA\u03AE',\n '\u0391\u03C3\u03AF\u03B1',\n '\u0391\u03C5\u03C3\u03C4\u03C1\u03B1\u03BB\u03AF\u03B1',\n '\u0391\u03C6\u03C1\u03B9\u03BA\u03AE',\n '\u0395\u03C5\u03C1\u03CE\u03C0\u03B7',\n];\n\nconst fields: FieldSpec[] = [\n {\n key: 'autocomplete',\n label: { primary: '\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03AE\u03C0\u03B5\u03B9\u03C1\u03BF' },\n required: true,\n type: 'choice:multiple',\n extra: {\n component: 'AutoComplete',\n multiple: true,\n options: results.map((r) => {\n return {\n label: {\n primary: r,\n secondary: `\u0389\u03C0\u03B5\u03B9\u03C1\u03BF\u03C2: ${r}`,\n },\n value: r.toLowerCase(),\n };\n }),\n },\n },\n];\n\nconst initialValues = {};\n\nexport const Multiple = () => (\n <FormBuilder\n fields={fields}\n onSubmit={(data) => {\n console.log(data);\n }}\n initial={initialValues}\n >\n {fields.map((field) => (\n <Field key={field.key} name={field.key} />\n ))}\n <Button type=\"submit\">Submit</Button>\n </FormBuilder>\n);\n\nexport default Multiple;\n"],
5
- "mappings": "AAAA,OAAO,WAAW;AAClB,SAAS,aAAa;AACtB,OAAO,iBAAiB;AAExB,OAAO,YAAY;AAEnB,MAAM,UAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,SAAsB;AAAA,EAC1B;AAAA,IACE,KAAK;AAAA,IACL,OAAO,EAAE,SAAS,wFAAkB;AAAA,IACpC,UAAU;AAAA,IACV,MAAM;AAAA,IACN,OAAO;AAAA,MACL,WAAW;AAAA,MACX,UAAU;AAAA,MACV,SAAS,QAAQ,IAAI,CAAC,MAAM;AAC1B,eAAO;AAAA,UACL,OAAO;AAAA,YACL,SAAS;AAAA,YACT,WAAW,+CAAY,CAAC;AAAA,UAC1B;AAAA,UACA,OAAO,EAAE,YAAY;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,MAAM,gBAAgB,CAAC;AAEhB,MAAM,WAAW,MACtB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,UAAU,CAAC,SAAS;AAClB,cAAQ,IAAI,IAAI;AAAA,IAClB;AAAA,IACA,SAAS;AAAA;AAAA,EAER,OAAO,IAAI,CAAC,UACX,oCAAC,SAAM,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK,CACzC;AAAA,EACD,oCAAC,UAAO,MAAK,YAAS,QAAM;AAC9B;AAGF,IAAO,mBAAQ;",
4
+ "sourcesContent": ["import React from 'react';\nimport { Field } from '@digigov/form/Field';\nimport FormBuilder from '@digigov/form/FormBuilder';\nimport { FieldSpec } from '@digigov/form/types';\nimport Button from '@digigov/ui/form/Button';\n\nconst results = ['\u0391\u03BC\u03B5\u03C1\u03B9\u03BA\u03AE', '\u0391\u03C3\u03AF\u03B1', '\u0391\u03C5\u03C3\u03C4\u03C1\u03B1\u03BB\u03AF\u03B1', '\u0391\u03C6\u03C1\u03B9\u03BA\u03AE', '\u0395\u03C5\u03C1\u03CE\u03C0\u03B7'];\n\nconst fields: FieldSpec[] = [\n {\n key: 'autocomplete',\n label: { primary: '\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03AE\u03C0\u03B5\u03B9\u03C1\u03BF' },\n required: true,\n type: 'choice:multiple',\n extra: {\n component: 'AutoComplete',\n options: results.map((r) => {\n return {\n label: {\n primary: r,\n secondary: `\u0389\u03C0\u03B5\u03B9\u03C1\u03BF\u03C2: ${r}`,\n },\n value: r.toLowerCase(),\n };\n }),\n },\n },\n];\n\nconst initialValues = {};\n\nexport const Multiple = () => (\n <FormBuilder\n fields={fields}\n onSubmit={(data) => {\n console.log(data);\n }}\n initial={initialValues}\n >\n {fields.map((field) => (\n <Field key={field.key} name={field.key} />\n ))}\n <Button type=\"submit\">Submit</Button>\n </FormBuilder>\n);\n\nexport default Multiple;\n"],
5
+ "mappings": "AAAA,OAAO,WAAW;AAClB,SAAS,aAAa;AACtB,OAAO,iBAAiB;AAExB,OAAO,YAAY;AAEnB,MAAM,UAAU,CAAC,8CAAW,4BAAQ,0DAAa,wCAAU,sCAAQ;AAEnE,MAAM,SAAsB;AAAA,EAC1B;AAAA,IACE,KAAK;AAAA,IACL,OAAO,EAAE,SAAS,wFAAkB;AAAA,IACpC,UAAU;AAAA,IACV,MAAM;AAAA,IACN,OAAO;AAAA,MACL,WAAW;AAAA,MACX,SAAS,QAAQ,IAAI,CAAC,MAAM;AAC1B,eAAO;AAAA,UACL,OAAO;AAAA,YACL,SAAS;AAAA,YACT,WAAW,+CAAY,CAAC;AAAA,UAC1B;AAAA,UACA,OAAO,EAAE,YAAY;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,MAAM,gBAAgB,CAAC;AAEhB,MAAM,WAAW,MACtB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,UAAU,CAAC,SAAS;AAClB,cAAQ,IAAI,IAAI;AAAA,IAClB;AAAA,IACA,SAAS;AAAA;AAAA,EAER,OAAO,IAAI,CAAC,UACX,oCAAC,SAAM,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK,CACzC;AAAA,EACD,oCAAC,UAAO,MAAK,YAAS,QAAM;AAC9B;AAGF,IAAO,mBAAQ;",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,7 @@ import { ControlledFieldProps } from '@digigov/form/Field/types';
3
3
  import { FieldOptionProps } from '@digigov/form/inputs/Label';
4
4
  import { AutoCompleteProps as UIAutoCompleteProps } from '@digigov/ui/form/AutoComplete';
5
5
  export interface AutoCompleteInputExtra extends Omit<UIAutoCompleteProps, 'source' | 'id' | 'templates' | 'defaultValue' | 'onConfirm' | 'dropdownArrow'> {
6
- options: Array<FieldOptionProps>;
6
+ options: FieldOptionProps[];
7
7
  }
8
8
  export interface AutoCompleteInputProps extends Omit<ControlledFieldProps, 'value' | 'onChange' | 'extra'> {
9
9
  extra: AutoCompleteInputExtra;