@nolwenture/formik-jsonschema-form 0.26.2 → 0.26.4

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 (473) hide show
  1. package/dist/cjs/FileUploadContext.js +15 -0
  2. package/dist/cjs/Form.js +79 -0
  3. package/dist/cjs/Form.stories.js +230 -0
  4. package/dist/cjs/Form.test.js +13 -0
  5. package/dist/cjs/FormEditor.js +47 -0
  6. package/dist/cjs/FormEditor.stories.js +12 -0
  7. package/dist/cjs/FormPdf.js +78 -0
  8. package/dist/cjs/FormPdf.stories.js +134 -0
  9. package/dist/cjs/FormPdf.test.js +15 -0
  10. package/dist/cjs/fields/AnyField.js +26 -0
  11. package/dist/cjs/fields/ArrayField.js +115 -0
  12. package/dist/cjs/fields/BooleanField.js +22 -0
  13. package/dist/cjs/fields/DateField.js +15 -0
  14. package/dist/cjs/fields/FileUploadField.js +65 -0
  15. package/dist/cjs/fields/MultipleChoiceField.js +32 -0
  16. package/dist/cjs/fields/NullField.js +12 -0
  17. package/dist/cjs/fields/NumberField.js +12 -0
  18. package/dist/cjs/fields/ObjectField.js +73 -0
  19. package/dist/cjs/fields/RadioField.js +15 -0
  20. package/dist/cjs/fields/SchemaField.js +39 -0
  21. package/dist/cjs/fields/SearchMultiTagSelectField.js +18 -0
  22. package/dist/cjs/fields/SearchableSelectField.js +132 -0
  23. package/dist/cjs/fields/StringField.js +38 -0
  24. package/dist/cjs/fields/TextAreaField.js +15 -0
  25. package/dist/cjs/fields/ToggleField.js +15 -0
  26. package/dist/cjs/fields/index.js +32 -0
  27. package/dist/cjs/fields/stories/AnyField.stories.js +73 -0
  28. package/dist/cjs/fields/stories/ArrayField.stories.js +218 -0
  29. package/dist/cjs/fields/stories/BooleanField.stories.js +30 -0
  30. package/dist/cjs/fields/stories/DateField.stories.js +28 -0
  31. package/dist/cjs/fields/stories/FileUploadField.stories.js +63 -0
  32. package/dist/cjs/fields/stories/MultipleChoiceField.stories.js +80 -0
  33. package/dist/cjs/fields/stories/NullField.stories.js +32 -0
  34. package/dist/cjs/fields/stories/NumberField.stories.js +27 -0
  35. package/dist/cjs/fields/stories/ObjectField.stories.js +88 -0
  36. package/dist/cjs/fields/stories/RadioField.stories.js +36 -0
  37. package/dist/cjs/fields/stories/SchemaField.stories.js +95 -0
  38. package/dist/cjs/fields/stories/SearchMultiTagSelectField.stories.js +52 -0
  39. package/dist/cjs/fields/stories/StringField.stories.js +69 -0
  40. package/dist/cjs/fields/stories/TextAreaField.stories.js +28 -0
  41. package/dist/cjs/fields/stories/ToggleField.stories.js +28 -0
  42. package/dist/cjs/fields/types.js +13 -0
  43. package/dist/cjs/formEditorSchemas.js +195 -0
  44. package/dist/cjs/hooks/__tests__/useExtractUiSchema.test.js +47 -0
  45. package/dist/cjs/hooks/__tests__/useSetDefault.test.js +67 -0
  46. package/dist/cjs/hooks/index.js +18 -0
  47. package/dist/cjs/hooks/useExtractUiSchema.js +27 -0
  48. package/dist/cjs/hooks/useSetDefault.js +23 -0
  49. package/dist/cjs/index.js +35 -0
  50. package/dist/cjs/pdfFields/AnyField.js +26 -0
  51. package/dist/cjs/pdfFields/ArrayField.js +30 -0
  52. package/dist/cjs/pdfFields/BooleanField.js +31 -0
  53. package/dist/cjs/pdfFields/DateField.js +12 -0
  54. package/dist/cjs/pdfFields/EJSField.js +41 -0
  55. package/dist/cjs/pdfFields/MultipleChoiceField.js +23 -0
  56. package/dist/cjs/pdfFields/NullField.js +11 -0
  57. package/dist/cjs/pdfFields/NumberField.js +12 -0
  58. package/dist/cjs/pdfFields/ObjectField.js +49 -0
  59. package/dist/cjs/pdfFields/RadioField.js +15 -0
  60. package/dist/cjs/pdfFields/SchemaField.js +39 -0
  61. package/dist/cjs/pdfFields/SearchMultiTagSelectField.js +16 -0
  62. package/dist/cjs/pdfFields/SearchableSelectField.js +13 -0
  63. package/dist/cjs/pdfFields/StringField.js +23 -0
  64. package/dist/cjs/pdfFields/TextAreaField.js +17 -0
  65. package/dist/cjs/pdfFields/ToggleField.js +15 -0
  66. package/dist/cjs/pdfFields/index.js +32 -0
  67. package/dist/cjs/pdfFields/types.js +13 -0
  68. package/dist/cjs/pdfTemplates/ArrayFieldTemplate.js +20 -0
  69. package/dist/cjs/pdfTemplates/CollapsibleObjectFieldTemplate.js +24 -0
  70. package/dist/cjs/pdfTemplates/FieldTemplate.js +19 -0
  71. package/dist/cjs/pdfTemplates/ObjectFieldTemplate.js +22 -0
  72. package/dist/cjs/pdfTemplates/index.js +20 -0
  73. package/dist/cjs/sampleData/ageFieldDefinition.js +8 -0
  74. package/dist/cjs/sampleData/collapsibleSchema.js +30 -0
  75. package/dist/cjs/sampleData/completeSchema.js +351 -0
  76. package/dist/cjs/sampleData/conditionsSchema.js +85 -0
  77. package/dist/cjs/sampleData/ejsSchema.js +28 -0
  78. package/dist/cjs/sampleData/fileUpload.js +43 -0
  79. package/dist/cjs/sampleData/generatedSchema.js +22 -0
  80. package/dist/cjs/sampleData/index.js +24 -0
  81. package/dist/cjs/sampleData/multipleChoiceSchema.js +134 -0
  82. package/dist/cjs/sampleData/pdfProExampleSchema.js +188 -0
  83. package/dist/cjs/sampleData/refDefSchema.js +301 -0
  84. package/dist/cjs/sampleData/requiredInputSchema.js +70 -0
  85. package/dist/cjs/sampleData/simpleData.js +20 -0
  86. package/dist/cjs/setupTests.js +7 -0
  87. package/dist/cjs/styledComponents.js +640 -0
  88. package/dist/cjs/templates/ArrayFieldTemplate.js +38 -0
  89. package/dist/cjs/templates/CollapsibleObjectFieldTemplate.js +34 -0
  90. package/dist/cjs/templates/FieldTemplate.js +28 -0
  91. package/dist/cjs/templates/ObjectFieldTemplate.js +32 -0
  92. package/dist/cjs/templates/index.js +20 -0
  93. package/dist/cjs/types.js +10 -0
  94. package/dist/cjs/utils/__tests/createInitialValues.test.js +106 -0
  95. package/dist/cjs/utils/__tests/createValidationSchema.test.js +946 -0
  96. package/dist/cjs/utils/__tests/deepOverlap.test.js +43 -0
  97. package/dist/cjs/utils/__tests/getEnums.test.js +61 -0
  98. package/dist/cjs/utils/__tests/getTitleAndDescription.test.js +55 -0
  99. package/dist/cjs/utils/__tests/getTypes.test.js +64 -0
  100. package/dist/cjs/utils/__tests/hasReferences.test.js +102 -0
  101. package/dist/cjs/utils/__tests/mergeSchemas.test.js +42 -0
  102. package/dist/cjs/utils/__tests/orderByUiSchema.test.js +65 -0
  103. package/dist/cjs/utils/__tests/resolveSchema.test.js +118 -0
  104. package/dist/cjs/utils/__tests/solveReferences.test.js +58 -0
  105. package/dist/cjs/utils/__tests/testSchemas.js +102 -0
  106. package/dist/cjs/utils/createInitialValues.js +38 -0
  107. package/dist/cjs/utils/createValidationSchema.js +239 -0
  108. package/dist/cjs/utils/deepOverlap.js +18 -0
  109. package/dist/cjs/utils/getEnums.js +50 -0
  110. package/dist/cjs/utils/getStyle.js +21 -0
  111. package/dist/cjs/utils/getTitleAndDescription.js +18 -0
  112. package/dist/cjs/utils/getTypes.js +60 -0
  113. package/dist/cjs/utils/hasReferences.js +15 -0
  114. package/dist/cjs/utils/index.js +36 -0
  115. package/dist/cjs/utils/mergeSchemas.js +30 -0
  116. package/dist/cjs/utils/orderByUiSchema.js +28 -0
  117. package/dist/cjs/utils/resolveSchema.js +117 -0
  118. package/dist/cjs/utils/solveReferences.js +16 -0
  119. package/dist/esm/FileUploadContext.d.ts +18 -0
  120. package/dist/esm/Form.d.ts +4 -0
  121. package/dist/esm/Form.stories.d.ts +19 -0
  122. package/dist/esm/Form.test.d.ts +1 -0
  123. package/dist/esm/FormEditor.d.ts +8 -0
  124. package/dist/esm/FormEditor.stories.d.ts +6 -0
  125. package/dist/esm/FormPdf.d.ts +6 -0
  126. package/dist/esm/FormPdf.stories.d.ts +11 -0
  127. package/dist/esm/FormPdf.test.d.ts +1 -0
  128. package/dist/esm/fields/AnyField.d.ts +3 -0
  129. package/dist/esm/fields/ArrayField.d.ts +3 -0
  130. package/dist/esm/fields/BooleanField.d.ts +3 -0
  131. package/dist/esm/fields/DateField.d.ts +3 -0
  132. package/dist/esm/fields/FileUploadField.d.ts +3 -0
  133. package/dist/esm/fields/MultipleChoiceField.d.ts +3 -0
  134. package/dist/esm/fields/NullField.d.ts +3 -0
  135. package/dist/esm/fields/NumberField.d.ts +3 -0
  136. package/dist/esm/fields/ObjectField.d.ts +3 -0
  137. package/dist/esm/fields/RadioField.d.ts +3 -0
  138. package/dist/esm/fields/SchemaField.d.ts +3 -0
  139. package/dist/esm/fields/SearchMultiTagSelectField.d.ts +3 -0
  140. package/dist/esm/fields/SearchableSelectField.d.ts +3 -0
  141. package/dist/esm/fields/StringField.d.ts +3 -0
  142. package/dist/esm/fields/TextAreaField.d.ts +3 -0
  143. package/dist/esm/fields/ToggleField.d.ts +3 -0
  144. package/dist/esm/fields/index.js +16 -0
  145. package/dist/esm/fields/stories/AnyField.stories.d.ts +5 -0
  146. package/dist/esm/fields/stories/ArrayField.stories.d.ts +8 -0
  147. package/dist/esm/fields/stories/BooleanField.stories.d.ts +5 -0
  148. package/dist/esm/fields/stories/DateField.stories.d.ts +5 -0
  149. package/dist/esm/fields/stories/FileUploadField.stories.d.ts +15 -0
  150. package/dist/esm/fields/stories/MultipleChoiceField.stories.d.ts +6 -0
  151. package/dist/esm/fields/stories/NullField.stories.d.ts +5 -0
  152. package/dist/esm/fields/stories/NumberField.stories.d.ts +5 -0
  153. package/dist/esm/fields/stories/ObjectField.stories.d.ts +5 -0
  154. package/dist/esm/fields/stories/RadioField.stories.d.ts +5 -0
  155. package/dist/esm/fields/stories/SchemaField.stories.d.ts +1730 -0
  156. package/dist/esm/fields/stories/SearchMultiTagSelectField.stories.d.ts +5 -0
  157. package/dist/esm/fields/stories/StringField.stories.d.ts +7 -0
  158. package/dist/esm/fields/stories/TextAreaField.stories.d.ts +5 -0
  159. package/dist/esm/fields/stories/ToggleField.stories.d.ts +5 -0
  160. package/dist/esm/fields/types.d.ts +10 -0
  161. package/dist/esm/formEditorSchemas.d.ts +3 -0
  162. package/dist/esm/hooks/__tests__/useExtractUiSchema.test.d.ts +1 -0
  163. package/dist/esm/hooks/__tests__/useSetDefault.test.d.ts +1 -0
  164. package/dist/esm/hooks/index.js +2 -0
  165. package/dist/esm/hooks/useExtractUiSchema.d.ts +8 -0
  166. package/dist/esm/hooks/useSetDefault.d.ts +2 -0
  167. package/dist/esm/index.js +6 -0
  168. package/dist/esm/pdfFields/AnyField.d.ts +3 -0
  169. package/dist/esm/pdfFields/ArrayField.d.ts +3 -0
  170. package/dist/esm/pdfFields/BooleanField.d.ts +3 -0
  171. package/dist/esm/pdfFields/DateField.d.ts +3 -0
  172. package/dist/esm/pdfFields/EJSField.d.ts +3 -0
  173. package/dist/esm/pdfFields/MultipleChoiceField.d.ts +3 -0
  174. package/dist/esm/pdfFields/NullField.d.ts +3 -0
  175. package/dist/esm/pdfFields/NumberField.d.ts +3 -0
  176. package/dist/esm/pdfFields/ObjectField.d.ts +3 -0
  177. package/dist/esm/pdfFields/RadioField.d.ts +3 -0
  178. package/dist/esm/pdfFields/SchemaField.d.ts +3 -0
  179. package/dist/esm/pdfFields/SearchMultiTagSelectField.d.ts +3 -0
  180. package/dist/esm/pdfFields/SearchableSelectField.d.ts +3 -0
  181. package/dist/esm/pdfFields/StringField.d.ts +3 -0
  182. package/dist/esm/pdfFields/TextAreaField.d.ts +3 -0
  183. package/dist/esm/pdfFields/ToggleField.d.ts +3 -0
  184. package/dist/esm/pdfFields/index.js +16 -0
  185. package/dist/esm/pdfFields/types.d.ts +10 -0
  186. package/dist/esm/pdfTemplates/ArrayFieldTemplate.d.ts +3 -0
  187. package/dist/esm/pdfTemplates/CollapsibleObjectFieldTemplate.d.ts +3 -0
  188. package/dist/esm/pdfTemplates/FieldTemplate.d.ts +3 -0
  189. package/dist/esm/pdfTemplates/ObjectFieldTemplate.d.ts +3 -0
  190. package/dist/esm/sampleData/ageFieldDefinition.d.ts +2 -0
  191. package/dist/esm/sampleData/collapsibleSchema.d.ts +3 -0
  192. package/dist/esm/sampleData/completeSchema.d.ts +4 -0
  193. package/dist/esm/sampleData/conditionsSchema.d.ts +3 -0
  194. package/dist/esm/sampleData/ejsSchema.d.ts +6 -0
  195. package/dist/esm/sampleData/fileUpload.d.ts +7 -0
  196. package/dist/esm/sampleData/generatedSchema.d.ts +2 -0
  197. package/dist/esm/sampleData/index.js +8 -0
  198. package/dist/esm/sampleData/multipleChoiceSchema.d.ts +9 -0
  199. package/dist/esm/sampleData/pdfProExampleSchema.d.ts +21 -0
  200. package/dist/esm/sampleData/refDefSchema.d.ts +3 -0
  201. package/dist/esm/sampleData/requiredInputSchema.d.ts +3 -0
  202. package/dist/esm/sampleData/simpleData.d.ts +7 -0
  203. package/dist/esm/setupTests.d.ts +1 -0
  204. package/dist/esm/styledComponents.d.ts +275 -0
  205. package/dist/esm/templates/ArrayFieldTemplate.d.ts +3 -0
  206. package/dist/esm/templates/CollapsibleObjectFieldTemplate.d.ts +3 -0
  207. package/dist/esm/templates/FieldTemplate.d.ts +3 -0
  208. package/dist/esm/templates/ObjectFieldTemplate.d.ts +3 -0
  209. package/dist/esm/templates/index.d.ts +4 -0
  210. package/dist/esm/templates/index.js +4 -0
  211. package/dist/esm/types.d.ts +337 -0
  212. package/dist/esm/utils/__tests/createInitialValues.test.d.ts +1 -0
  213. package/dist/esm/utils/__tests/createValidationSchema.test.d.ts +1 -0
  214. package/dist/esm/utils/__tests/deepOverlap.test.d.ts +1 -0
  215. package/dist/esm/utils/__tests/getEnums.test.d.ts +1 -0
  216. package/dist/esm/utils/__tests/getTitleAndDescription.test.d.ts +1 -0
  217. package/dist/esm/utils/__tests/getTypes.test.d.ts +1 -0
  218. package/dist/esm/utils/__tests/hasReferences.test.d.ts +1 -0
  219. package/dist/esm/utils/__tests/mergeSchemas.test.d.ts +1 -0
  220. package/dist/esm/utils/__tests/orderByUiSchema.test.d.ts +1 -0
  221. package/dist/esm/utils/__tests/resolveSchema.test.d.ts +1 -0
  222. package/dist/esm/utils/__tests/solveReferences.test.d.ts +1 -0
  223. package/dist/esm/utils/__tests/testSchemas.d.ts +5 -0
  224. package/dist/esm/utils/createInitialValues.d.ts +7 -0
  225. package/dist/esm/utils/createValidationSchema.d.ts +12 -0
  226. package/dist/esm/utils/deepOverlap.d.ts +1 -0
  227. package/dist/esm/utils/getEnums.d.ts +26 -0
  228. package/dist/esm/utils/getStyle.d.ts +5 -0
  229. package/dist/esm/utils/getTitleAndDescription.d.ts +12 -0
  230. package/dist/esm/utils/getTypes.d.ts +5 -0
  231. package/dist/esm/utils/hasReferences.d.ts +2 -0
  232. package/dist/esm/utils/index.d.ts +11 -0
  233. package/dist/esm/utils/mergeSchemas.d.ts +1 -0
  234. package/dist/esm/utils/orderByUiSchema.d.ts +1 -0
  235. package/dist/esm/utils/resolveSchema.d.ts +4 -0
  236. package/dist/esm/utils/solveReferences.d.ts +10 -0
  237. package/package.json +19 -5
  238. /package/dist/{FileUploadContext.d.ts → cjs/FileUploadContext.d.ts} +0 -0
  239. /package/dist/{Form.d.ts → cjs/Form.d.ts} +0 -0
  240. /package/dist/{Form.stories.d.ts → cjs/Form.stories.d.ts} +0 -0
  241. /package/dist/{Form.test.d.ts → cjs/Form.test.d.ts} +0 -0
  242. /package/dist/{FormEditor.d.ts → cjs/FormEditor.d.ts} +0 -0
  243. /package/dist/{FormEditor.stories.d.ts → cjs/FormEditor.stories.d.ts} +0 -0
  244. /package/dist/{FormPdf.d.ts → cjs/FormPdf.d.ts} +0 -0
  245. /package/dist/{FormPdf.stories.d.ts → cjs/FormPdf.stories.d.ts} +0 -0
  246. /package/dist/{FormPdf.test.d.ts → cjs/FormPdf.test.d.ts} +0 -0
  247. /package/dist/{fields → cjs/fields}/AnyField.d.ts +0 -0
  248. /package/dist/{fields → cjs/fields}/ArrayField.d.ts +0 -0
  249. /package/dist/{fields → cjs/fields}/BooleanField.d.ts +0 -0
  250. /package/dist/{fields → cjs/fields}/DateField.d.ts +0 -0
  251. /package/dist/{fields → cjs/fields}/FileUploadField.d.ts +0 -0
  252. /package/dist/{fields → cjs/fields}/MultipleChoiceField.d.ts +0 -0
  253. /package/dist/{fields → cjs/fields}/NullField.d.ts +0 -0
  254. /package/dist/{fields → cjs/fields}/NumberField.d.ts +0 -0
  255. /package/dist/{fields → cjs/fields}/ObjectField.d.ts +0 -0
  256. /package/dist/{fields → cjs/fields}/RadioField.d.ts +0 -0
  257. /package/dist/{fields → cjs/fields}/SchemaField.d.ts +0 -0
  258. /package/dist/{fields → cjs/fields}/SearchMultiTagSelectField.d.ts +0 -0
  259. /package/dist/{fields → cjs/fields}/SearchableSelectField.d.ts +0 -0
  260. /package/dist/{fields → cjs/fields}/StringField.d.ts +0 -0
  261. /package/dist/{fields → cjs/fields}/TextAreaField.d.ts +0 -0
  262. /package/dist/{fields → cjs/fields}/ToggleField.d.ts +0 -0
  263. /package/dist/{fields → cjs/fields}/index.d.ts +0 -0
  264. /package/dist/{fields → cjs/fields}/stories/AnyField.stories.d.ts +0 -0
  265. /package/dist/{fields → cjs/fields}/stories/ArrayField.stories.d.ts +0 -0
  266. /package/dist/{fields → cjs/fields}/stories/BooleanField.stories.d.ts +0 -0
  267. /package/dist/{fields → cjs/fields}/stories/DateField.stories.d.ts +0 -0
  268. /package/dist/{fields → cjs/fields}/stories/FileUploadField.stories.d.ts +0 -0
  269. /package/dist/{fields → cjs/fields}/stories/MultipleChoiceField.stories.d.ts +0 -0
  270. /package/dist/{fields → cjs/fields}/stories/NullField.stories.d.ts +0 -0
  271. /package/dist/{fields → cjs/fields}/stories/NumberField.stories.d.ts +0 -0
  272. /package/dist/{fields → cjs/fields}/stories/ObjectField.stories.d.ts +0 -0
  273. /package/dist/{fields → cjs/fields}/stories/RadioField.stories.d.ts +0 -0
  274. /package/dist/{fields → cjs/fields}/stories/SchemaField.stories.d.ts +0 -0
  275. /package/dist/{fields → cjs/fields}/stories/SearchMultiTagSelectField.stories.d.ts +0 -0
  276. /package/dist/{fields → cjs/fields}/stories/StringField.stories.d.ts +0 -0
  277. /package/dist/{fields → cjs/fields}/stories/TextAreaField.stories.d.ts +0 -0
  278. /package/dist/{fields → cjs/fields}/stories/ToggleField.stories.d.ts +0 -0
  279. /package/dist/{fields → cjs/fields}/types.d.ts +0 -0
  280. /package/dist/{formEditorSchemas.d.ts → cjs/formEditorSchemas.d.ts} +0 -0
  281. /package/dist/{hooks → cjs/hooks}/__tests__/useExtractUiSchema.test.d.ts +0 -0
  282. /package/dist/{hooks → cjs/hooks}/__tests__/useSetDefault.test.d.ts +0 -0
  283. /package/dist/{hooks → cjs/hooks}/index.d.ts +0 -0
  284. /package/dist/{hooks → cjs/hooks}/useExtractUiSchema.d.ts +0 -0
  285. /package/dist/{hooks → cjs/hooks}/useSetDefault.d.ts +0 -0
  286. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  287. /package/dist/{pdfFields → cjs/pdfFields}/AnyField.d.ts +0 -0
  288. /package/dist/{pdfFields → cjs/pdfFields}/ArrayField.d.ts +0 -0
  289. /package/dist/{pdfFields → cjs/pdfFields}/BooleanField.d.ts +0 -0
  290. /package/dist/{pdfFields → cjs/pdfFields}/DateField.d.ts +0 -0
  291. /package/dist/{pdfFields → cjs/pdfFields}/EJSField.d.ts +0 -0
  292. /package/dist/{pdfFields → cjs/pdfFields}/MultipleChoiceField.d.ts +0 -0
  293. /package/dist/{pdfFields → cjs/pdfFields}/NullField.d.ts +0 -0
  294. /package/dist/{pdfFields → cjs/pdfFields}/NumberField.d.ts +0 -0
  295. /package/dist/{pdfFields → cjs/pdfFields}/ObjectField.d.ts +0 -0
  296. /package/dist/{pdfFields → cjs/pdfFields}/RadioField.d.ts +0 -0
  297. /package/dist/{pdfFields → cjs/pdfFields}/SchemaField.d.ts +0 -0
  298. /package/dist/{pdfFields → cjs/pdfFields}/SearchMultiTagSelectField.d.ts +0 -0
  299. /package/dist/{pdfFields → cjs/pdfFields}/SearchableSelectField.d.ts +0 -0
  300. /package/dist/{pdfFields → cjs/pdfFields}/StringField.d.ts +0 -0
  301. /package/dist/{pdfFields → cjs/pdfFields}/TextAreaField.d.ts +0 -0
  302. /package/dist/{pdfFields → cjs/pdfFields}/ToggleField.d.ts +0 -0
  303. /package/dist/{pdfFields → cjs/pdfFields}/index.d.ts +0 -0
  304. /package/dist/{pdfFields → cjs/pdfFields}/types.d.ts +0 -0
  305. /package/dist/{pdfTemplates → cjs/pdfTemplates}/ArrayFieldTemplate.d.ts +0 -0
  306. /package/dist/{pdfTemplates → cjs/pdfTemplates}/CollapsibleObjectFieldTemplate.d.ts +0 -0
  307. /package/dist/{pdfTemplates → cjs/pdfTemplates}/FieldTemplate.d.ts +0 -0
  308. /package/dist/{pdfTemplates → cjs/pdfTemplates}/ObjectFieldTemplate.d.ts +0 -0
  309. /package/dist/{pdfTemplates → cjs/pdfTemplates}/index.d.ts +0 -0
  310. /package/dist/{sampleData → cjs/sampleData}/ageFieldDefinition.d.ts +0 -0
  311. /package/dist/{sampleData → cjs/sampleData}/collapsibleSchema.d.ts +0 -0
  312. /package/dist/{sampleData → cjs/sampleData}/completeSchema.d.ts +0 -0
  313. /package/dist/{sampleData → cjs/sampleData}/conditionsSchema.d.ts +0 -0
  314. /package/dist/{sampleData → cjs/sampleData}/ejsSchema.d.ts +0 -0
  315. /package/dist/{sampleData → cjs/sampleData}/fileUpload.d.ts +0 -0
  316. /package/dist/{sampleData → cjs/sampleData}/generatedSchema.d.ts +0 -0
  317. /package/dist/{sampleData → cjs/sampleData}/index.d.ts +0 -0
  318. /package/dist/{sampleData → cjs/sampleData}/multipleChoiceSchema.d.ts +0 -0
  319. /package/dist/{sampleData → cjs/sampleData}/pdfProExampleSchema.d.ts +0 -0
  320. /package/dist/{sampleData → cjs/sampleData}/refDefSchema.d.ts +0 -0
  321. /package/dist/{sampleData → cjs/sampleData}/requiredInputSchema.d.ts +0 -0
  322. /package/dist/{sampleData → cjs/sampleData}/simpleData.d.ts +0 -0
  323. /package/dist/{setupTests.d.ts → cjs/setupTests.d.ts} +0 -0
  324. /package/dist/{styledComponents.d.ts → cjs/styledComponents.d.ts} +0 -0
  325. /package/dist/{templates → cjs/templates}/ArrayFieldTemplate.d.ts +0 -0
  326. /package/dist/{templates → cjs/templates}/CollapsibleObjectFieldTemplate.d.ts +0 -0
  327. /package/dist/{templates → cjs/templates}/FieldTemplate.d.ts +0 -0
  328. /package/dist/{templates → cjs/templates}/ObjectFieldTemplate.d.ts +0 -0
  329. /package/dist/{templates → cjs/templates}/index.d.ts +0 -0
  330. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  331. /package/dist/{utils → cjs/utils}/__tests/createInitialValues.test.d.ts +0 -0
  332. /package/dist/{utils → cjs/utils}/__tests/createValidationSchema.test.d.ts +0 -0
  333. /package/dist/{utils → cjs/utils}/__tests/deepOverlap.test.d.ts +0 -0
  334. /package/dist/{utils → cjs/utils}/__tests/getEnums.test.d.ts +0 -0
  335. /package/dist/{utils → cjs/utils}/__tests/getTitleAndDescription.test.d.ts +0 -0
  336. /package/dist/{utils → cjs/utils}/__tests/getTypes.test.d.ts +0 -0
  337. /package/dist/{utils → cjs/utils}/__tests/hasReferences.test.d.ts +0 -0
  338. /package/dist/{utils → cjs/utils}/__tests/mergeSchemas.test.d.ts +0 -0
  339. /package/dist/{utils → cjs/utils}/__tests/orderByUiSchema.test.d.ts +0 -0
  340. /package/dist/{utils → cjs/utils}/__tests/resolveSchema.test.d.ts +0 -0
  341. /package/dist/{utils → cjs/utils}/__tests/solveReferences.test.d.ts +0 -0
  342. /package/dist/{utils → cjs/utils}/__tests/testSchemas.d.ts +0 -0
  343. /package/dist/{utils → cjs/utils}/createInitialValues.d.ts +0 -0
  344. /package/dist/{utils → cjs/utils}/createValidationSchema.d.ts +0 -0
  345. /package/dist/{utils → cjs/utils}/deepOverlap.d.ts +0 -0
  346. /package/dist/{utils → cjs/utils}/getEnums.d.ts +0 -0
  347. /package/dist/{utils → cjs/utils}/getStyle.d.ts +0 -0
  348. /package/dist/{utils → cjs/utils}/getTitleAndDescription.d.ts +0 -0
  349. /package/dist/{utils → cjs/utils}/getTypes.d.ts +0 -0
  350. /package/dist/{utils → cjs/utils}/hasReferences.d.ts +0 -0
  351. /package/dist/{utils → cjs/utils}/index.d.ts +0 -0
  352. /package/dist/{utils → cjs/utils}/mergeSchemas.d.ts +0 -0
  353. /package/dist/{utils → cjs/utils}/orderByUiSchema.d.ts +0 -0
  354. /package/dist/{utils → cjs/utils}/resolveSchema.d.ts +0 -0
  355. /package/dist/{utils → cjs/utils}/solveReferences.d.ts +0 -0
  356. /package/dist/{FileUploadContext.js → esm/FileUploadContext.js} +0 -0
  357. /package/dist/{Form.js → esm/Form.js} +0 -0
  358. /package/dist/{Form.stories.js → esm/Form.stories.js} +0 -0
  359. /package/dist/{Form.test.js → esm/Form.test.js} +0 -0
  360. /package/dist/{FormEditor.js → esm/FormEditor.js} +0 -0
  361. /package/dist/{FormEditor.stories.js → esm/FormEditor.stories.js} +0 -0
  362. /package/dist/{FormPdf.js → esm/FormPdf.js} +0 -0
  363. /package/dist/{FormPdf.stories.js → esm/FormPdf.stories.js} +0 -0
  364. /package/dist/{FormPdf.test.js → esm/FormPdf.test.js} +0 -0
  365. /package/dist/{fields → esm/fields}/AnyField.js +0 -0
  366. /package/dist/{fields → esm/fields}/ArrayField.js +0 -0
  367. /package/dist/{fields → esm/fields}/BooleanField.js +0 -0
  368. /package/dist/{fields → esm/fields}/DateField.js +0 -0
  369. /package/dist/{fields → esm/fields}/FileUploadField.js +0 -0
  370. /package/dist/{fields → esm/fields}/MultipleChoiceField.js +0 -0
  371. /package/dist/{fields → esm/fields}/NullField.js +0 -0
  372. /package/dist/{fields → esm/fields}/NumberField.js +0 -0
  373. /package/dist/{fields → esm/fields}/ObjectField.js +0 -0
  374. /package/dist/{fields → esm/fields}/RadioField.js +0 -0
  375. /package/dist/{fields → esm/fields}/SchemaField.js +0 -0
  376. /package/dist/{fields → esm/fields}/SearchMultiTagSelectField.js +0 -0
  377. /package/dist/{fields → esm/fields}/SearchableSelectField.js +0 -0
  378. /package/dist/{fields → esm/fields}/StringField.js +0 -0
  379. /package/dist/{fields → esm/fields}/TextAreaField.js +0 -0
  380. /package/dist/{fields → esm/fields}/ToggleField.js +0 -0
  381. /package/dist/{fields/index.js → esm/fields/index.d.ts} +0 -0
  382. /package/dist/{fields → esm/fields}/stories/AnyField.stories.js +0 -0
  383. /package/dist/{fields → esm/fields}/stories/ArrayField.stories.js +0 -0
  384. /package/dist/{fields → esm/fields}/stories/BooleanField.stories.js +0 -0
  385. /package/dist/{fields → esm/fields}/stories/DateField.stories.js +0 -0
  386. /package/dist/{fields → esm/fields}/stories/FileUploadField.stories.js +0 -0
  387. /package/dist/{fields → esm/fields}/stories/MultipleChoiceField.stories.js +0 -0
  388. /package/dist/{fields → esm/fields}/stories/NullField.stories.js +0 -0
  389. /package/dist/{fields → esm/fields}/stories/NumberField.stories.js +0 -0
  390. /package/dist/{fields → esm/fields}/stories/ObjectField.stories.js +0 -0
  391. /package/dist/{fields → esm/fields}/stories/RadioField.stories.js +0 -0
  392. /package/dist/{fields → esm/fields}/stories/SchemaField.stories.js +0 -0
  393. /package/dist/{fields → esm/fields}/stories/SearchMultiTagSelectField.stories.js +0 -0
  394. /package/dist/{fields → esm/fields}/stories/StringField.stories.js +0 -0
  395. /package/dist/{fields → esm/fields}/stories/TextAreaField.stories.js +0 -0
  396. /package/dist/{fields → esm/fields}/stories/ToggleField.stories.js +0 -0
  397. /package/dist/{fields → esm/fields}/types.js +0 -0
  398. /package/dist/{formEditorSchemas.js → esm/formEditorSchemas.js} +0 -0
  399. /package/dist/{hooks → esm/hooks}/__tests__/useExtractUiSchema.test.js +0 -0
  400. /package/dist/{hooks → esm/hooks}/__tests__/useSetDefault.test.js +0 -0
  401. /package/dist/{hooks/index.js → esm/hooks/index.d.ts} +0 -0
  402. /package/dist/{hooks → esm/hooks}/useExtractUiSchema.js +0 -0
  403. /package/dist/{hooks → esm/hooks}/useSetDefault.js +0 -0
  404. /package/dist/{index.js → esm/index.d.ts} +0 -0
  405. /package/dist/{pdfFields → esm/pdfFields}/AnyField.js +0 -0
  406. /package/dist/{pdfFields → esm/pdfFields}/ArrayField.js +0 -0
  407. /package/dist/{pdfFields → esm/pdfFields}/BooleanField.js +0 -0
  408. /package/dist/{pdfFields → esm/pdfFields}/DateField.js +0 -0
  409. /package/dist/{pdfFields → esm/pdfFields}/EJSField.js +0 -0
  410. /package/dist/{pdfFields → esm/pdfFields}/MultipleChoiceField.js +0 -0
  411. /package/dist/{pdfFields → esm/pdfFields}/NullField.js +0 -0
  412. /package/dist/{pdfFields → esm/pdfFields}/NumberField.js +0 -0
  413. /package/dist/{pdfFields → esm/pdfFields}/ObjectField.js +0 -0
  414. /package/dist/{pdfFields → esm/pdfFields}/RadioField.js +0 -0
  415. /package/dist/{pdfFields → esm/pdfFields}/SchemaField.js +0 -0
  416. /package/dist/{pdfFields → esm/pdfFields}/SearchMultiTagSelectField.js +0 -0
  417. /package/dist/{pdfFields → esm/pdfFields}/SearchableSelectField.js +0 -0
  418. /package/dist/{pdfFields → esm/pdfFields}/StringField.js +0 -0
  419. /package/dist/{pdfFields → esm/pdfFields}/TextAreaField.js +0 -0
  420. /package/dist/{pdfFields → esm/pdfFields}/ToggleField.js +0 -0
  421. /package/dist/{pdfFields/index.js → esm/pdfFields/index.d.ts} +0 -0
  422. /package/dist/{pdfFields → esm/pdfFields}/types.js +0 -0
  423. /package/dist/{pdfTemplates → esm/pdfTemplates}/ArrayFieldTemplate.js +0 -0
  424. /package/dist/{pdfTemplates → esm/pdfTemplates}/CollapsibleObjectFieldTemplate.js +0 -0
  425. /package/dist/{pdfTemplates → esm/pdfTemplates}/FieldTemplate.js +0 -0
  426. /package/dist/{pdfTemplates → esm/pdfTemplates}/ObjectFieldTemplate.js +0 -0
  427. /package/dist/{pdfTemplates/index.js → esm/pdfTemplates/index.d.ts} +0 -0
  428. /package/dist/{templates → esm/pdfTemplates}/index.js +0 -0
  429. /package/dist/{sampleData → esm/sampleData}/ageFieldDefinition.js +0 -0
  430. /package/dist/{sampleData → esm/sampleData}/collapsibleSchema.js +0 -0
  431. /package/dist/{sampleData → esm/sampleData}/completeSchema.js +0 -0
  432. /package/dist/{sampleData → esm/sampleData}/conditionsSchema.js +0 -0
  433. /package/dist/{sampleData → esm/sampleData}/ejsSchema.js +0 -0
  434. /package/dist/{sampleData → esm/sampleData}/fileUpload.js +0 -0
  435. /package/dist/{sampleData → esm/sampleData}/generatedSchema.js +0 -0
  436. /package/dist/{sampleData/index.js → esm/sampleData/index.d.ts} +0 -0
  437. /package/dist/{sampleData → esm/sampleData}/multipleChoiceSchema.js +0 -0
  438. /package/dist/{sampleData → esm/sampleData}/pdfProExampleSchema.js +0 -0
  439. /package/dist/{sampleData → esm/sampleData}/refDefSchema.js +0 -0
  440. /package/dist/{sampleData → esm/sampleData}/requiredInputSchema.js +0 -0
  441. /package/dist/{sampleData → esm/sampleData}/simpleData.js +0 -0
  442. /package/dist/{setupTests.js → esm/setupTests.js} +0 -0
  443. /package/dist/{styledComponents.js → esm/styledComponents.js} +0 -0
  444. /package/dist/{templates → esm/templates}/ArrayFieldTemplate.js +0 -0
  445. /package/dist/{templates → esm/templates}/CollapsibleObjectFieldTemplate.js +0 -0
  446. /package/dist/{templates → esm/templates}/FieldTemplate.js +0 -0
  447. /package/dist/{templates → esm/templates}/ObjectFieldTemplate.js +0 -0
  448. /package/dist/{types.js → esm/types.js} +0 -0
  449. /package/dist/{utils → esm/utils}/__tests/createInitialValues.test.js +0 -0
  450. /package/dist/{utils → esm/utils}/__tests/createValidationSchema.test.js +0 -0
  451. /package/dist/{utils → esm/utils}/__tests/deepOverlap.test.js +0 -0
  452. /package/dist/{utils → esm/utils}/__tests/getEnums.test.js +0 -0
  453. /package/dist/{utils → esm/utils}/__tests/getTitleAndDescription.test.js +0 -0
  454. /package/dist/{utils → esm/utils}/__tests/getTypes.test.js +0 -0
  455. /package/dist/{utils → esm/utils}/__tests/hasReferences.test.js +0 -0
  456. /package/dist/{utils → esm/utils}/__tests/mergeSchemas.test.js +0 -0
  457. /package/dist/{utils → esm/utils}/__tests/orderByUiSchema.test.js +0 -0
  458. /package/dist/{utils → esm/utils}/__tests/resolveSchema.test.js +0 -0
  459. /package/dist/{utils → esm/utils}/__tests/solveReferences.test.js +0 -0
  460. /package/dist/{utils → esm/utils}/__tests/testSchemas.js +0 -0
  461. /package/dist/{utils → esm/utils}/createInitialValues.js +0 -0
  462. /package/dist/{utils → esm/utils}/createValidationSchema.js +0 -0
  463. /package/dist/{utils → esm/utils}/deepOverlap.js +0 -0
  464. /package/dist/{utils → esm/utils}/getEnums.js +0 -0
  465. /package/dist/{utils → esm/utils}/getStyle.js +0 -0
  466. /package/dist/{utils → esm/utils}/getTitleAndDescription.js +0 -0
  467. /package/dist/{utils → esm/utils}/getTypes.js +0 -0
  468. /package/dist/{utils → esm/utils}/hasReferences.js +0 -0
  469. /package/dist/{utils → esm/utils}/index.js +0 -0
  470. /package/dist/{utils → esm/utils}/mergeSchemas.js +0 -0
  471. /package/dist/{utils → esm/utils}/orderByUiSchema.js +0 -0
  472. /package/dist/{utils → esm/utils}/resolveSchema.js +0 -0
  473. /package/dist/{utils → esm/utils}/solveReferences.js +0 -0
@@ -0,0 +1,946 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ageFieldDefinition_1 = require("../../sampleData/ageFieldDefinition");
4
+ const createValidationSchema_1 = require("../createValidationSchema");
5
+ const exampleSchema = {
6
+ title: "TITLE",
7
+ required: ["name", "age", "feeling"],
8
+ properties: {
9
+ name: { type: "string", title: "Full name" },
10
+ age: { $ref: "#/definitions/age" },
11
+ feeling: { type: "boolean", title: "Feeling happy today?" },
12
+ arrayOfObject: {
13
+ type: "array",
14
+ title: "Array of objects",
15
+ items: {
16
+ type: "object",
17
+ title: "Favourites",
18
+ required: ["favouriteFood"],
19
+ properties: {
20
+ favouriteFood: { type: "string", title: "Favourite food" },
21
+ favouriteSong: { type: "string", title: "Favourite song" },
22
+ },
23
+ },
24
+ additionalItems: {
25
+ type: "object",
26
+ title: "Second favourites",
27
+ required: ["anotherFavouriteSong"],
28
+ properties: {
29
+ anotherFavouriteFood: {
30
+ type: "string",
31
+ title: "Another favourite food",
32
+ },
33
+ anotherFavouriteSong: {
34
+ type: "string",
35
+ title: "Another favourite song",
36
+ },
37
+ },
38
+ },
39
+ },
40
+ nestedObject: {
41
+ type: "object",
42
+ title: "Nested Object",
43
+ required: ["tasks"],
44
+ properties: {
45
+ hobbies: { type: "string", title: "Hobbies" },
46
+ tasks: { type: "string", title: "Tasks" },
47
+ },
48
+ },
49
+ },
50
+ definitions: {
51
+ age: ageFieldDefinition_1.ageFieldDefinition,
52
+ },
53
+ };
54
+ const simpleExampleSchema = {
55
+ title: "TITLE",
56
+ required: ["lastName"],
57
+ properties: {
58
+ firstName: { type: "string", title: "First name" },
59
+ lastName: { type: "string", title: "Last name" },
60
+ age: { type: "number", title: "Age" },
61
+ drinksCoffee: { type: "boolean", title: "Do you drink coffee?" },
62
+ simpleArray: {
63
+ type: "array",
64
+ title: "Simple array",
65
+ items: [{ type: "string" }],
66
+ },
67
+ },
68
+ };
69
+ const dependenciesExampleSchema = {
70
+ properties: {
71
+ dependencyField: { type: "string" },
72
+ dependencySelect: {
73
+ type: "string",
74
+ oneOf: [
75
+ { const: "one", title: "One" },
76
+ { const: "two", title: "Two" },
77
+ ],
78
+ },
79
+ },
80
+ dependencies: {
81
+ dependencyField: {
82
+ properties: {
83
+ dependantField: { type: "string" },
84
+ },
85
+ required: ["dependantField"],
86
+ },
87
+ dependencySelect: {
88
+ oneOf: [
89
+ {
90
+ properties: {
91
+ dependencySelect: {
92
+ enum: ["one"],
93
+ },
94
+ },
95
+ },
96
+ {
97
+ properties: {
98
+ dependencySelect: {
99
+ enum: ["two"],
100
+ },
101
+ dependantOnTwo: {
102
+ type: "string",
103
+ },
104
+ },
105
+ required: ["dependantOnTwo"],
106
+ },
107
+ ],
108
+ },
109
+ },
110
+ };
111
+ const ifThenElseExampleSchema = {
112
+ type: "object",
113
+ properties: {
114
+ allOfBool1: { type: "boolean" },
115
+ allOfBool2: { type: "boolean" },
116
+ },
117
+ allOf: [
118
+ {
119
+ if: {
120
+ properties: {
121
+ allOfBool1: { const: true },
122
+ },
123
+ },
124
+ then: {
125
+ properties: {
126
+ firstTrueRequiredField: { type: "string" },
127
+ },
128
+ required: ["firstTrueRequiredField"],
129
+ },
130
+ else: {
131
+ properties: {
132
+ firstFalseRequiredField: { type: "string" },
133
+ },
134
+ required: ["firstFalseRequiredField"],
135
+ },
136
+ },
137
+ {
138
+ if: {
139
+ properties: {
140
+ allOfBool1: { const: false },
141
+ allOfBool2: { const: false },
142
+ },
143
+ },
144
+ then: {
145
+ properties: {
146
+ bothFalseRequiredField: { type: "string" },
147
+ },
148
+ required: ["bothFalseRequiredField"],
149
+ },
150
+ else: {
151
+ properties: {
152
+ oneOrMoreTrueRequiredField: { type: "string" },
153
+ },
154
+ required: ["oneOrMoreTrueRequiredField"],
155
+ },
156
+ },
157
+ ],
158
+ };
159
+ const allOfExample = {
160
+ type: "object",
161
+ properties: {
162
+ customerType: {
163
+ type: "string",
164
+ oneOf: [
165
+ { const: "BUSINESS", title: "Business" },
166
+ { const: "INDIVIDUAL", title: "Individual" },
167
+ { const: "UNKNOWN", title: "Unknown" },
168
+ ],
169
+ },
170
+ },
171
+ allOf: [
172
+ {
173
+ if: { properties: { customerType: { const: "BUSINESS" } } },
174
+ then: {
175
+ properties: {
176
+ businessName: { type: "string", title: "Company name" },
177
+ code: { type: "string", title: "Code" },
178
+ notRequired: { type: "string", title: "Not required" },
179
+ address: { $ref: "#/definitions/address" },
180
+ },
181
+ required: ["businessName", "code", "address"],
182
+ },
183
+ },
184
+ {
185
+ if: { properties: { customerType: { const: "INDIVIDUAL" } } },
186
+ then: {
187
+ properties: {
188
+ firstName: { type: "string", title: "First name" },
189
+ code: { type: "number", title: "Code" },
190
+ address: { $ref: "#/definitions/address" },
191
+ },
192
+ required: ["firstName", "code", "address"],
193
+ },
194
+ },
195
+ {
196
+ if: { properties: { customerType: { const: "UNKNOWN" } } },
197
+ then: {
198
+ properties: {
199
+ newCustomer: { type: "boolean", title: "New customer" },
200
+ code: { type: "boolean", title: "Code" },
201
+ extraField: { type: "number", title: "Extra field" },
202
+ address: { $ref: "#/definitions/address" },
203
+ },
204
+ required: ["newCustomer", "code", "address"],
205
+ },
206
+ },
207
+ ],
208
+ definitions: {
209
+ address: {
210
+ type: "object",
211
+ required: ["streetName", "city", "country"],
212
+ properties: {
213
+ streetName: {
214
+ type: "string",
215
+ title: "Street name",
216
+ },
217
+ city: {
218
+ type: "string",
219
+ title: "Town/City",
220
+ },
221
+ postcode: {
222
+ type: "string",
223
+ title: "Postcode",
224
+ },
225
+ state: {
226
+ type: "string",
227
+ title: "State/Province/Region",
228
+ },
229
+ country: {
230
+ type: "string",
231
+ title: "Country",
232
+ },
233
+ },
234
+ },
235
+ },
236
+ };
237
+ const anyOfExample = (required = []) => ({
238
+ type: "object",
239
+ title: "",
240
+ required,
241
+ properties: {
242
+ warningSymbols: {
243
+ type: "array",
244
+ anyOf: [
245
+ {
246
+ const: "GHS01",
247
+ title: "Räjähtävä",
248
+ },
249
+ {
250
+ const: "GHS02",
251
+ title: "Syttyvä",
252
+ },
253
+ {
254
+ const: "GHS03",
255
+ title: "Hapettava",
256
+ },
257
+ {
258
+ const: "GHS04",
259
+ title: "Paineen alaiset kaasut",
260
+ },
261
+ {
262
+ const: "GHS05",
263
+ title: "Syövyttävä",
264
+ },
265
+ {
266
+ const: "GHS06",
267
+ title: "Välittömästi myrkyllinen",
268
+ },
269
+ {
270
+ const: 5678,
271
+ title: "Haitallinen / ärsyttävä / herkistävä / vaarallinen otsonikerrokselle",
272
+ },
273
+ {
274
+ const: 6789,
275
+ title: "Vakava terveysvaara",
276
+ },
277
+ {
278
+ const: 7890,
279
+ title: "Ympäristölle vaarallinen",
280
+ },
281
+ ],
282
+ items: {
283
+ type: "string",
284
+ },
285
+ uniqueItems: true,
286
+ },
287
+ },
288
+ });
289
+ const nestedRequiredConditionalExampleSchema = {
290
+ type: "object",
291
+ properties: {
292
+ textField: { type: "string" },
293
+ checkbox: { type: "boolean" },
294
+ },
295
+ allOf: [
296
+ {
297
+ if: { properties: { checkbox: { const: true } } },
298
+ then: {
299
+ properties: {
300
+ myObject: {
301
+ type: "object",
302
+ properties: {
303
+ foo: { type: "string" },
304
+ nestedObject: {
305
+ type: "object",
306
+ properties: { nestedFoo: { type: "string" } },
307
+ required: ["nestedFoo"],
308
+ },
309
+ },
310
+ required: ["foo"],
311
+ },
312
+ },
313
+ required: ["myObject"],
314
+ },
315
+ },
316
+ ],
317
+ };
318
+ describe("Create Validation Schema", () => {
319
+ function listErrors(schema, data, definitions) {
320
+ const yupSchema = (0, createValidationSchema_1.createValidationSchema)(schema, definitions);
321
+ try {
322
+ // Cannot be strict, since forms always use string based values
323
+ yupSchema.validateSync(data, { abortEarly: false, strict: false });
324
+ }
325
+ catch (err) {
326
+ const error = err;
327
+ return error?.inner?.map((e, i) => `${e.path}: ${error.errors[i].replace(e?.path ?? "", "").trim()}`);
328
+ }
329
+ }
330
+ it("creates yup validationSchema based on given JSON schema", async () => {
331
+ const result = (0, createValidationSchema_1.createValidationSchema)(exampleSchema);
332
+ const expected = result.isValidSync({
333
+ name: "Jane",
334
+ age: 54,
335
+ feeling: false,
336
+ arrayOfObject: [
337
+ { favouriteFood: "Pizza!", favouriteSong: undefined },
338
+ {
339
+ anotherFavouriteFood: undefined,
340
+ anotherFavouriteSong: "On the turning away",
341
+ },
342
+ ],
343
+ nestedObject: {
344
+ hobbies: undefined,
345
+ tasks: "buy groceries",
346
+ },
347
+ });
348
+ expect(expected).toEqual(true);
349
+ });
350
+ it("throws error when required input is missing", async () => {
351
+ const result = (0, createValidationSchema_1.createValidationSchema)(simpleExampleSchema);
352
+ await expect(() => result.validate({
353
+ firstName: "Jane",
354
+ lastName: undefined,
355
+ age: 55,
356
+ })).rejects.toThrow("Required");
357
+ });
358
+ it("throws error when given input is not matching defined type", async () => {
359
+ const result = (0, createValidationSchema_1.createValidationSchema)(simpleExampleSchema);
360
+ // for 'number' type
361
+ await expect(() => result.validate({
362
+ firstName: "Ella",
363
+ lastName: "Myller",
364
+ age: true,
365
+ drinksCoffee: false,
366
+ simpleArray: [],
367
+ }, { strict: true })).rejects.toThrow("age must be a `number` type, but the final value was: `true`.");
368
+ // for 'string' type
369
+ await expect(() => result.validate({
370
+ firstName: 123,
371
+ lastName: "Myller",
372
+ age: 17,
373
+ drinksCoffee: false,
374
+ simpleArray: [],
375
+ }, { strict: true })).rejects.toThrow("firstName must be a `string` type, but the final value was: `123`.");
376
+ // for 'boolean' type
377
+ await expect(() => result.validate({
378
+ firstName: "Ella",
379
+ lastName: "Myller",
380
+ age: 17,
381
+ drinksCoffee: "Well, sometimes...",
382
+ simpleArray: [],
383
+ }, { strict: true })).rejects.toThrow('drinksCoffee must be a `boolean` type, but the final value was: `"Well, sometimes..."`.');
384
+ // for 'array' type
385
+ await expect(() => result.validate({
386
+ firstName: "Ella",
387
+ lastName: "Myller",
388
+ age: 17,
389
+ drinksCoffee: false,
390
+ simpleArray: "Hello :)",
391
+ }, { strict: true })).rejects.toThrow("Required");
392
+ });
393
+ describe("Conditionals", () => {
394
+ it("generates validation for dependencies without oneOf", () => {
395
+ const result = (0, createValidationSchema_1.createValidationSchema)(dependenciesExampleSchema);
396
+ const invalid = result.isValidSync({
397
+ dependencyField: "Hello",
398
+ });
399
+ const valid = result.isValidSync({
400
+ dependencyField: "Hello",
401
+ dependantField: "Hi",
402
+ });
403
+ expect(invalid).toEqual(false);
404
+ expect(valid).toEqual(true);
405
+ });
406
+ it("generates validation for dependencies with oneOf", () => {
407
+ const result = (0, createValidationSchema_1.createValidationSchema)(dependenciesExampleSchema);
408
+ const noDependantFields = result.isValidSync({
409
+ dependencySelect: "one",
410
+ });
411
+ const invalidWithDependantFields = result.isValidSync({
412
+ dependencySelect: "two",
413
+ });
414
+ const validWithDependantFields = result.isValidSync({
415
+ dependencySelect: "two",
416
+ dependantOnTwo: "value",
417
+ });
418
+ expect(noDependantFields).toEqual(true);
419
+ expect(invalidWithDependantFields).toEqual(false);
420
+ expect(validWithDependantFields).toEqual(true);
421
+ });
422
+ it("generates validation for if-then-else", () => {
423
+ const result = (0, createValidationSchema_1.createValidationSchema)(ifThenElseExampleSchema);
424
+ const bothFalseInvalid1 = result.isValidSync({
425
+ allOfBool1: false,
426
+ allOfBool2: false,
427
+ });
428
+ const bothFalseInvalid2 = result.isValidSync({
429
+ allOfBool1: false,
430
+ allOfBool2: false,
431
+ firstFalseRequiredField: ".",
432
+ });
433
+ const bothFalseInvalid3 = result.isValidSync({
434
+ allOfBool1: false,
435
+ allOfBool2: false,
436
+ bothFalseRequiredField: ".",
437
+ });
438
+ const bothFalseValid = result.isValidSync({
439
+ allOfBool1: false,
440
+ allOfBool2: false,
441
+ firstFalseRequiredField: ".",
442
+ bothFalseRequiredField: ".",
443
+ });
444
+ const firstFalseInvalid1 = result.isValidSync({
445
+ allOfBool1: false,
446
+ allOfBool2: true,
447
+ });
448
+ const firstFalseInvalid2 = result.isValidSync({
449
+ allOfBool1: false,
450
+ allOfBool2: true,
451
+ firstFalseRequiredField: ".",
452
+ });
453
+ const firstFalseInvalid3 = result.isValidSync({
454
+ allOfBool1: false,
455
+ allOfBool2: true,
456
+ oneOrMoreTrueRequiredField: ".",
457
+ });
458
+ const firstFalseValid = result.isValidSync({
459
+ allOfBool1: false,
460
+ allOfBool2: true,
461
+ firstFalseRequiredField: ".",
462
+ oneOrMoreTrueRequiredField: ".",
463
+ });
464
+ const firstTrueInvalid1 = result.isValidSync({
465
+ allOfBool1: true,
466
+ allOfBool2: false,
467
+ });
468
+ const firstTrueInvalid2 = result.isValidSync({
469
+ allOfBool1: true,
470
+ allOfBool2: false,
471
+ firstTrueRequiredField: ".",
472
+ });
473
+ const firstTrueInvalid3 = result.isValidSync({
474
+ allOfBool1: true,
475
+ allOfBool2: false,
476
+ oneOrMoreTrueRequiredField: ".",
477
+ });
478
+ const firstTrueValid = result.isValidSync({
479
+ allOfBool1: true,
480
+ allOfBool2: false,
481
+ firstTrueRequiredField: ".",
482
+ oneOrMoreTrueRequiredField: ".",
483
+ });
484
+ expect(bothFalseInvalid1).toEqual(false);
485
+ expect(bothFalseInvalid2).toEqual(false);
486
+ expect(bothFalseInvalid3).toEqual(false);
487
+ expect(bothFalseValid).toEqual(true);
488
+ expect(firstFalseInvalid1).toEqual(false);
489
+ expect(firstFalseInvalid2).toEqual(false);
490
+ expect(firstFalseInvalid3).toEqual(false);
491
+ expect(firstFalseValid).toEqual(true);
492
+ expect(firstTrueInvalid1).toEqual(false);
493
+ expect(firstTrueInvalid2).toEqual(false);
494
+ expect(firstTrueInvalid3).toEqual(false);
495
+ expect(firstTrueValid).toEqual(true);
496
+ });
497
+ it("generates validation for if-then", async () => {
498
+ const faultyBusiness = listErrors(allOfExample, {
499
+ customerType: "BUSINESS",
500
+ });
501
+ expect(faultyBusiness).toEqual(expect.arrayContaining([
502
+ "address.country: Required",
503
+ "address.city: Required",
504
+ "address.streetName: Required",
505
+ "businessName: Required",
506
+ "code: Required",
507
+ ]));
508
+ const business = listErrors(allOfExample, {
509
+ customerType: "BUSINESS",
510
+ businessName: ".",
511
+ code: ".",
512
+ address: {
513
+ streetName: ".",
514
+ city: ".",
515
+ country: ".",
516
+ },
517
+ });
518
+ expect(business).toEqual(undefined);
519
+ const faultyIndividual = listErrors(allOfExample, {
520
+ customerType: "INDIVIDUAL",
521
+ });
522
+ expect(faultyIndividual).toEqual(expect.arrayContaining([
523
+ "address.country: Required",
524
+ "address.city: Required",
525
+ "address.streetName: Required",
526
+ "firstName: Required",
527
+ "code: Required",
528
+ ]));
529
+ const individual = listErrors(allOfExample, {
530
+ customerType: "INDIVIDUAL",
531
+ firstName: ".",
532
+ code: 123,
533
+ address: {
534
+ streetName: ".",
535
+ city: ".",
536
+ country: ".",
537
+ },
538
+ });
539
+ expect(individual).toEqual(undefined);
540
+ const faultyUnknown = listErrors(allOfExample, {
541
+ customerType: "UNKNOWN",
542
+ });
543
+ expect(faultyUnknown).toEqual(expect.arrayContaining([
544
+ "address.country: Required",
545
+ "address.city: Required",
546
+ "address.streetName: Required",
547
+ "newCustomer: Required",
548
+ "code: Required",
549
+ ]));
550
+ const unknown = listErrors(allOfExample, {
551
+ customerType: "UNKNOWN",
552
+ newCustomer: true,
553
+ code: false,
554
+ address: {
555
+ streetName: ".",
556
+ city: ".",
557
+ country: ".",
558
+ },
559
+ });
560
+ expect(unknown).toEqual(undefined);
561
+ const yupSchema = (0, createValidationSchema_1.createValidationSchema)(allOfExample);
562
+ // Makes sure the context resets between function calls.
563
+ // eslint-disable-next-line
564
+ // @ts-expect-error
565
+ expect(yupSchema.fields.code.deps.length).toEqual(3);
566
+ });
567
+ it("generates validation for conditional objects with nested validations", () => {
568
+ const result = (0, createValidationSchema_1.createValidationSchema)(nestedRequiredConditionalExampleSchema);
569
+ const isValidWhenConditionNotNet = result.isValidSync({
570
+ checkbox: false,
571
+ });
572
+ const isNotValidWhenConditionMetAndMissingRequiredFields = result.isValidSync({
573
+ checkbox: true,
574
+ });
575
+ const isValidWhenConditionMetAndRequiredFieldsAreFilled = result.isValidSync({
576
+ checkbox: true,
577
+ myObject: {
578
+ foo: ".",
579
+ nestedObject: {
580
+ nestedFoo: ".",
581
+ },
582
+ },
583
+ });
584
+ expect(isValidWhenConditionNotNet).toEqual(true);
585
+ expect(isNotValidWhenConditionMetAndMissingRequiredFields).toEqual(false);
586
+ expect(isValidWhenConditionMetAndRequiredFieldsAreFilled).toEqual(true);
587
+ });
588
+ });
589
+ describe("Array", () => {
590
+ const createArraySchema = ({ items, additionalItems, }) => ({
591
+ title: "Array of objects Schema",
592
+ required: ["arrayOfObjects"],
593
+ properties: {
594
+ arrayOfObjects: {
595
+ type: "array",
596
+ title: "A list of fixed items",
597
+ items,
598
+ ...(additionalItems ? { additionalItems } : {}),
599
+ },
600
+ },
601
+ });
602
+ it("requires fields with array items and additionalItems", async () => {
603
+ const arraySchema = createArraySchema({
604
+ items: [
605
+ { title: "A string value", type: "string" },
606
+ { title: "An integer value", type: "integer" },
607
+ { title: "A number value", type: "number" },
608
+ {
609
+ title: "An arrayContaining value",
610
+ type: "array",
611
+ items: [{ title: "A string value", type: "string" }],
612
+ },
613
+ { title: "a boolean value", type: "boolean" },
614
+ {
615
+ type: "object",
616
+ title: "User",
617
+ required: ["name"],
618
+ properties: {
619
+ name: { type: "string", title: "Name" },
620
+ age: { type: "number", title: "Age" },
621
+ },
622
+ },
623
+ ],
624
+ additionalItems: {
625
+ title: "Additional item",
626
+ type: "number",
627
+ },
628
+ });
629
+ const faultyItem1 = listErrors(arraySchema, {
630
+ arrayOfObjects: [
631
+ ["array"],
632
+ 123.123,
633
+ 456,
634
+ ["array"],
635
+ false,
636
+ { name: "John", age: 27 },
637
+ ],
638
+ });
639
+ expect(faultyItem1).toEqual([
640
+ 'arrayOfObjects[0]: must be a `string` type, but the final value was: `[\n "\\"array\\""\n]`.',
641
+ ]);
642
+ const faultyItem2 = listErrors(arraySchema, {
643
+ arrayOfObjects: [
644
+ "string",
645
+ "not a number",
646
+ 456,
647
+ ["array"],
648
+ false,
649
+ { name: "John", age: 27 },
650
+ ],
651
+ });
652
+ expect(faultyItem2).toEqual([
653
+ 'arrayOfObjects[1]: must be a `number` type, but the final value was: `NaN` (cast from the value `"not a number"`).',
654
+ ]);
655
+ const faultyItem3 = listErrors(arraySchema, {
656
+ arrayOfObjects: [
657
+ "string",
658
+ 123.123,
659
+ false,
660
+ ["array"],
661
+ false,
662
+ { name: "John", age: 27 },
663
+ ],
664
+ });
665
+ expect(faultyItem3).toEqual([
666
+ "arrayOfObjects[2]: must be a `number` type, but the final value was: `NaN` (cast from the value `false`).",
667
+ ]);
668
+ const faultyItem4 = listErrors(arraySchema, {
669
+ arrayOfObjects: [
670
+ "string",
671
+ 123.123,
672
+ 456,
673
+ { id: 123 },
674
+ false,
675
+ { name: "John", age: 27 },
676
+ ],
677
+ });
678
+ expect(faultyItem4).toEqual(["arrayOfObjects[3]: Required"]);
679
+ const faultyItem5 = listErrors(arraySchema, {
680
+ arrayOfObjects: [
681
+ "string",
682
+ 123.123,
683
+ 456,
684
+ ["array"],
685
+ 3.154,
686
+ { name: "John", age: 27 },
687
+ ],
688
+ });
689
+ expect(faultyItem5).toEqual([
690
+ "arrayOfObjects[4]: must be a `boolean` type, but the final value was: `3.154`.",
691
+ ]);
692
+ const faultyItem6 = listErrors(arraySchema, {
693
+ arrayOfObjects: [
694
+ "string",
695
+ 123.123,
696
+ 456,
697
+ ["array"],
698
+ false,
699
+ "faulty value",
700
+ ],
701
+ });
702
+ expect(faultyItem6).toEqual([
703
+ 'arrayOfObjects[5]: must be a `object` type, but the final value was: `"faulty value"`.',
704
+ ]);
705
+ const objectPropertyRequired = listErrors(arraySchema, {
706
+ arrayOfObjects: ["string", 123.123, 456, ["array"], false, { age: 27 }],
707
+ });
708
+ expect(objectPropertyRequired).toEqual([
709
+ "arrayOfObjects[5].name: Required",
710
+ ]);
711
+ const allRequired = listErrors(arraySchema, {
712
+ arrayOfObjects: [
713
+ undefined,
714
+ undefined,
715
+ undefined,
716
+ [],
717
+ undefined,
718
+ undefined,
719
+ ],
720
+ });
721
+ expect(allRequired).toEqual([
722
+ "arrayOfObjects[0]: Required",
723
+ "arrayOfObjects[1]: Required",
724
+ "arrayOfObjects[2]: Required",
725
+ "arrayOfObjects[3]: Required",
726
+ "arrayOfObjects[4]: Required",
727
+ "arrayOfObjects[5].name: Required",
728
+ ]);
729
+ const correct = listErrors(arraySchema, {
730
+ arrayOfObjects: [
731
+ "string",
732
+ 123.123,
733
+ 456,
734
+ ["array"],
735
+ false,
736
+ { name: "John", age: 27 },
737
+ ],
738
+ });
739
+ expect(correct).toEqual(undefined);
740
+ });
741
+ it("required fields with array items only", async () => {
742
+ const arraySchema = createArraySchema({
743
+ items: [
744
+ { title: "A string value", type: "string" },
745
+ { title: "An integer value", type: "integer" },
746
+ { title: "A boolean value", type: "boolean" },
747
+ { title: "A number value", type: "number" },
748
+ ],
749
+ });
750
+ const faulty = listErrors(arraySchema, {
751
+ arrayOfObjects: ["name", undefined, undefined, {}],
752
+ });
753
+ expect(faulty).toEqual([
754
+ "arrayOfObjects[1]: Required",
755
+ "arrayOfObjects[2]: Required",
756
+ "arrayOfObjects[3]: must be a `number` type, but the final value was: `NaN` (cast from the value `{}`).",
757
+ ]);
758
+ const coprrecorrect = listErrors(arraySchema, {
759
+ arrayOfObjects: ["name", 123, true, 123.141241],
760
+ });
761
+ expect(coprrecorrect).toEqual(undefined);
762
+ });
763
+ it("requires fields with array items and additionalItems with definitions", async () => {
764
+ const arraySchema = {
765
+ title: "TITLE",
766
+ properties: {
767
+ arrayOfDefinitions: {
768
+ type: "array",
769
+ title: "Array of objects",
770
+ items: [{ $ref: "#/definitions/commodity" }],
771
+ additionalItems: { $ref: "#/definitions/commodity" },
772
+ },
773
+ },
774
+ };
775
+ const definitions = {
776
+ commodity: {
777
+ type: "object",
778
+ title: "Item",
779
+ required: ["commodityId"],
780
+ properties: {
781
+ commodityId: {
782
+ $ref: "#/definitions/selection",
783
+ },
784
+ insuredValue: {
785
+ type: "number",
786
+ title: "Insured value in USD",
787
+ },
788
+ },
789
+ },
790
+ selection: {
791
+ type: "string",
792
+ title: "HS Code",
793
+ oneOf: [
794
+ { const: "1", title: "One" },
795
+ { const: "2", title: "Two" },
796
+ { const: "3", title: "Three" },
797
+ ],
798
+ },
799
+ };
800
+ const faulty = listErrors(arraySchema, { arrayOfDefinitions: [true, 123, []] }, definitions);
801
+ expect(faulty).toEqual([
802
+ "arrayOfDefinitions[0]: must be a `object` type, but the final value was: `true`.",
803
+ "arrayOfDefinitions[1]: must be a `object` type, but the final value was: `123`.",
804
+ "arrayOfDefinitions[2]: must be a `object` type, but the final value was: `[]`.",
805
+ ]);
806
+ const correct = listErrors(arraySchema, {
807
+ arrayOfDefinitions: [
808
+ { commodityId: "1", insuredValue: 123 },
809
+ { commodityId: "2", insuredValue: 456 },
810
+ { commodityId: "3", insuredValue: 789 },
811
+ ],
812
+ }, definitions);
813
+ expect(correct).toEqual(undefined);
814
+ });
815
+ it("validates anyOf correctly", async () => {
816
+ const optionalInput = listErrors(anyOfExample(), { warningSymbols: [] });
817
+ expect(optionalInput).toEqual(undefined);
818
+ const requiredInput = listErrors(anyOfExample(["warningSymbols"]), {
819
+ warningSymbols: [],
820
+ });
821
+ expect(requiredInput).toEqual(["warningSymbols: Required"]);
822
+ const requiredInput2 = listErrors(anyOfExample(["warningSymbols"]), {
823
+ warningSymbols: [6789],
824
+ });
825
+ expect(requiredInput2).toEqual(undefined);
826
+ const wrongInput = listErrors(anyOfExample(), {
827
+ // false and 1234 are stringified
828
+ warningSymbols: [false, {}, [], 1234, "invalid value"],
829
+ });
830
+ expect(wrongInput).toEqual([
831
+ "warningSymbols[0]: must be one of the following values: GHS01, GHS02, GHS03, GHS04, GHS05, GHS06, 5678, 6789, 7890",
832
+ "warningSymbols[1]: must be one of the following values: GHS01, GHS02, GHS03, GHS04, GHS05, GHS06, 5678, 6789, 7890",
833
+ "warningSymbols[2]: must be one of the following values: GHS01, GHS02, GHS03, GHS04, GHS05, GHS06, 5678, 6789, 7890",
834
+ "warningSymbols[3]: must be one of the following values: GHS01, GHS02, GHS03, GHS04, GHS05, GHS06, 5678, 6789, 7890",
835
+ "warningSymbols[4]: must be one of the following values: GHS01, GHS02, GHS03, GHS04, GHS05, GHS06, 5678, 6789, 7890",
836
+ ]);
837
+ const validInput = listErrors(anyOfExample(), {
838
+ warningSymbols: ["GHS01", "GHS05", 7890],
839
+ });
840
+ expect(validInput).toEqual(undefined);
841
+ });
842
+ });
843
+ describe("Infinite loop validation", () => {
844
+ const definitions = {
845
+ Organization: {
846
+ type: "array",
847
+ additionalItems: {
848
+ type: "object",
849
+ properties: {
850
+ name: { title: "Name", type: "string" },
851
+ subOrganizations: {
852
+ $ref: "#/definitions/Organization",
853
+ },
854
+ },
855
+ },
856
+ },
857
+ };
858
+ const treeSchema = {
859
+ title: "Form editor",
860
+ type: "object",
861
+ properties: {
862
+ organization: {
863
+ type: "object",
864
+ properties: {
865
+ name: { title: "Title", type: "string" },
866
+ subOrganizations: {
867
+ $ref: "#/definitions/Organization",
868
+ },
869
+ },
870
+ },
871
+ },
872
+ };
873
+ it("does not throw RangeError: Maximum call stack size exceeded", async () => {
874
+ const validInput1 = listErrors(treeSchema, {
875
+ organization: {
876
+ name: "Org A",
877
+ subOrganizations: [],
878
+ },
879
+ }, definitions);
880
+ expect(validInput1).toEqual(undefined);
881
+ const validInput2 = listErrors(treeSchema, {
882
+ organization: {
883
+ name: "Org A",
884
+ subOrganizations: [
885
+ {
886
+ name: "Sub A1",
887
+ subOrganizations: [
888
+ {
889
+ name: "Sub A2",
890
+ subOrganizations: [
891
+ {
892
+ name: "Sub A3",
893
+ subOrganizations: [
894
+ {
895
+ name: "Sub A4",
896
+ subOrganizations: [
897
+ {
898
+ name: "Sub A5",
899
+ subOrganizations: [
900
+ {
901
+ name: "Sub A6",
902
+ subOrganizations: [
903
+ {
904
+ name: "Sub A7",
905
+ subOrganizations: [
906
+ {
907
+ name: "Sub A8",
908
+ subOrganizations: [],
909
+ },
910
+ ],
911
+ },
912
+ ],
913
+ },
914
+ ],
915
+ },
916
+ ],
917
+ },
918
+ ],
919
+ },
920
+ ],
921
+ },
922
+ ],
923
+ },
924
+ {
925
+ name: "Sub B1",
926
+ subOrganizations: [
927
+ {
928
+ name: "Sub B2",
929
+ subOrganizations: [],
930
+ },
931
+ ],
932
+ },
933
+ ],
934
+ },
935
+ }, definitions);
936
+ expect(validInput2).toEqual(undefined);
937
+ const invalidInput = listErrors(treeSchema, {
938
+ organization: {
939
+ name: "Org A",
940
+ subOrganizations: 123,
941
+ },
942
+ }, definitions);
943
+ expect(invalidInput).toEqual(["organization.subOrganizations: Required"]);
944
+ });
945
+ });
946
+ });