@nolwenture/formik-jsonschema-form 2.0.2 → 3.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (811) hide show
  1. package/README.md +18 -0
  2. package/dist/cjs/common/types/index.js +2 -0
  3. package/dist/cjs/index.js +15 -5
  4. package/dist/cjs/v3/codemod/bindings.js +124 -0
  5. package/dist/cjs/v3/codemod/cli.js +89 -0
  6. package/dist/cjs/v3/codemod/migrate.js +21 -0
  7. package/dist/cjs/v3/codemod/package.js +5 -0
  8. package/dist/cjs/v3/codemod/slots.js +27 -0
  9. package/dist/cjs/v3/codemod/transform.js +61 -0
  10. package/dist/cjs/v3/document/fromDocument.js +50 -0
  11. package/dist/cjs/v3/document/index.js +9 -0
  12. package/dist/cjs/v3/document/render.js +22 -0
  13. package/dist/cjs/v3/raw/compat/v2utils.js +39 -0
  14. package/dist/cjs/v3/raw/core/arrays.js +55 -0
  15. package/dist/cjs/v3/raw/core/choiceStyle.js +14 -0
  16. package/dist/cjs/v3/raw/core/conditionals.js +88 -0
  17. package/dist/cjs/v3/raw/core/dates.js +74 -0
  18. package/dist/cjs/v3/raw/core/defaults.js +31 -0
  19. package/dist/cjs/v3/raw/core/enums.js +37 -0
  20. package/dist/cjs/v3/raw/core/initialValues.js +68 -0
  21. package/dist/cjs/v3/raw/core/issues.js +42 -0
  22. package/dist/cjs/v3/raw/core/json.js +58 -0
  23. package/dist/cjs/v3/raw/core/merge.js +51 -0
  24. package/dist/cjs/v3/raw/core/paths.js +88 -0
  25. package/dist/cjs/v3/raw/core/policies/fileUploadView.js +4 -0
  26. package/dist/cjs/v3/raw/core/policies/optionalNumberInitial.js +7 -0
  27. package/dist/cjs/v3/raw/core/policies/storedFormats.js +5 -0
  28. package/dist/cjs/v3/raw/core/refs.js +104 -0
  29. package/dist/cjs/v3/raw/core/schemaType.js +75 -0
  30. package/dist/cjs/v3/raw/core/titles.js +30 -0
  31. package/dist/cjs/v3/raw/core/trail.js +18 -0
  32. package/dist/cjs/v3/raw/core/uiProps.js +72 -0
  33. package/dist/cjs/v3/raw/core/uiSchema.js +56 -0
  34. package/dist/cjs/v3/raw/dom/bind.js +84 -0
  35. package/dist/cjs/v3/raw/dom/build.js +27 -0
  36. package/dist/cjs/v3/raw/dom/controller.js +87 -0
  37. package/dist/cjs/v3/raw/dom/core.js +67 -0
  38. package/dist/cjs/v3/raw/dom/delegate.js +31 -0
  39. package/dist/cjs/v3/raw/dom/effects.js +67 -0
  40. package/dist/cjs/v3/raw/dom/elements.js +88 -0
  41. package/dist/cjs/v3/raw/dom/emitter.js +47 -0
  42. package/dist/cjs/v3/raw/dom/nodes.js +25 -0
  43. package/dist/cjs/v3/raw/dom/render.js +122 -0
  44. package/dist/cjs/v3/raw/dom/upload.js +186 -0
  45. package/dist/cjs/v3/raw/i18n/en.js +47 -0
  46. package/dist/cjs/v3/raw/i18n/fi.js +44 -0
  47. package/dist/cjs/v3/raw/i18n/index.js +14 -0
  48. package/dist/cjs/v3/raw/index.js +98 -0
  49. package/dist/cjs/v3/raw/model/classes.js +9 -0
  50. package/dist/cjs/v3/raw/model/form/actions.js +154 -0
  51. package/dist/cjs/v3/raw/model/form/any.js +27 -0
  52. package/dist/cjs/v3/raw/model/form/appearance.js +32 -0
  53. package/dist/cjs/v3/raw/model/form/array.js +69 -0
  54. package/dist/cjs/v3/raw/model/form/choice.js +74 -0
  55. package/dist/cjs/v3/raw/model/form/chrome.js +65 -0
  56. package/dist/cjs/v3/raw/model/form/componentTable.js +148 -0
  57. package/dist/cjs/v3/raw/model/form/date.js +53 -0
  58. package/dist/cjs/v3/raw/model/form/dispatch.js +119 -0
  59. package/dist/cjs/v3/raw/model/form/iconData.js +19 -0
  60. package/dist/cjs/v3/raw/model/form/icons.js +10 -0
  61. package/dist/cjs/v3/raw/model/form/index.js +43 -0
  62. package/dist/cjs/v3/raw/model/form/leaf.js +99 -0
  63. package/dist/cjs/v3/raw/model/form/markup.js +46 -0
  64. package/dist/cjs/v3/raw/model/form/object.js +105 -0
  65. package/dist/cjs/v3/raw/model/form/parts.js +26 -0
  66. package/dist/cjs/v3/raw/model/form/searchable.js +81 -0
  67. package/dist/cjs/v3/raw/model/form/templated.js +22 -0
  68. package/dist/cjs/v3/raw/model/form/upload.js +88 -0
  69. package/dist/cjs/v3/raw/model/styledChains.js +43 -0
  70. package/dist/cjs/v3/raw/model/view/build.js +165 -0
  71. package/dist/cjs/v3/raw/model/view/fields.js +102 -0
  72. package/dist/cjs/v3/raw/model/view/index.js +10 -0
  73. package/dist/cjs/v3/raw/model/view/markup.js +62 -0
  74. package/dist/cjs/v3/raw/model/view/toVNode.js +67 -0
  75. package/dist/cjs/v3/raw/model/view/values.js +58 -0
  76. package/dist/cjs/v3/raw/model/vnode.js +21 -0
  77. package/dist/cjs/v3/raw/sanitize/index.js +10 -0
  78. package/dist/cjs/v3/raw/sanitize/sanitizeHtml.js +128 -0
  79. package/dist/cjs/v3/raw/serialize/toDOM.js +150 -0
  80. package/dist/cjs/v3/raw/serialize/toString.js +58 -0
  81. package/dist/cjs/v3/raw/store/createStore.js +133 -0
  82. package/dist/cjs/v3/raw/styles/color.js +112 -0
  83. package/dist/cjs/v3/raw/styles/colorNames.js +30 -0
  84. package/dist/cjs/v3/raw/styles/defaultStyles.js +114 -0
  85. package/dist/cjs/v3/raw/styles/index.js +24 -0
  86. package/dist/cjs/v3/raw/styles/themeToCssVars.js +60 -0
  87. package/dist/cjs/v3/raw/styles/vars.js +28 -0
  88. package/dist/cjs/v3/raw/validation/arrays.js +78 -0
  89. package/dist/cjs/v3/raw/validation/conditions.js +63 -0
  90. package/dist/cjs/v3/raw/validation/index.js +182 -0
  91. package/dist/cjs/v3/raw/validation/keywords.js +113 -0
  92. package/dist/cjs/v3/raw/validation/messages.js +14 -0
  93. package/dist/cjs/v3/raw/validation/patterns.js +74 -0
  94. package/dist/cjs/v3/react/chain.js +7 -0
  95. package/dist/cjs/v3/react/compat.js +11 -0
  96. package/dist/cjs/v3/react/componentsProp.js +23 -0
  97. package/dist/cjs/v3/react/defined.js +6 -0
  98. package/dist/cjs/v3/react/ejs/EJSField.js +75 -0
  99. package/dist/cjs/v3/react/ejs/index.js +8 -0
  100. package/dist/cjs/v3/react/form/components.js +105 -0
  101. package/dist/cjs/v3/react/form/fields.js +75 -0
  102. package/dist/cjs/v3/react/form/host.js +100 -0
  103. package/dist/cjs/{Form/FormRegistry.js → v3/react/form/registry.js} +6 -7
  104. package/dist/cjs/v3/react/form/root.js +42 -0
  105. package/dist/cjs/v3/react/form/runtime.js +117 -0
  106. package/dist/cjs/v3/react/form/templates.js +58 -0
  107. package/dist/cjs/v3/react/form/upload.js +173 -0
  108. package/dist/cjs/v3/react/form/uploadContexts.js +27 -0
  109. package/dist/cjs/v3/react/form/useSetDefault.js +21 -0
  110. package/dist/cjs/v3/react/hostCore.js +59 -0
  111. package/dist/cjs/v3/react/index.js +45 -0
  112. package/dist/cjs/v3/react/selector.js +17 -0
  113. package/dist/cjs/v3/react/slots.js +19 -0
  114. package/dist/cjs/v3/react/toReact.js +63 -0
  115. package/dist/cjs/v3/react/view/components.js +63 -0
  116. package/dist/cjs/v3/react/view/fields.js +46 -0
  117. package/dist/cjs/v3/react/view/host.js +36 -0
  118. package/dist/cjs/v3/react/view/registry.js +20 -0
  119. package/dist/cjs/v3/react/view/root.js +37 -0
  120. package/dist/cjs/v3/react/view/templates.js +50 -0
  121. package/dist/esm/common/types/index.js +2 -0
  122. package/dist/esm/index.js +8 -5
  123. package/dist/esm/v3/document/fromDocument.js +46 -0
  124. package/dist/esm/v3/document/index.js +4 -0
  125. package/dist/esm/v3/document/render.js +18 -0
  126. package/dist/esm/v3/raw/compat/v2utils.js +15 -0
  127. package/dist/esm/v3/raw/core/arrays.js +49 -0
  128. package/dist/esm/v3/raw/core/choiceStyle.js +10 -0
  129. package/dist/esm/v3/raw/core/conditionals.js +82 -0
  130. package/dist/esm/v3/raw/core/dates.js +66 -0
  131. package/dist/esm/v3/raw/core/defaults.js +25 -0
  132. package/dist/esm/v3/raw/core/enums.js +32 -0
  133. package/dist/esm/v3/raw/core/initialValues.js +65 -0
  134. package/dist/esm/v3/raw/core/issues.js +36 -0
  135. package/dist/esm/v3/raw/core/json.js +49 -0
  136. package/dist/esm/v3/raw/core/merge.js +47 -0
  137. package/dist/esm/v3/raw/core/paths.js +79 -0
  138. package/dist/esm/v3/raw/core/policies/fileUploadView.js +1 -0
  139. package/dist/esm/v3/raw/core/policies/optionalNumberInitial.js +3 -0
  140. package/dist/esm/v3/raw/core/policies/storedFormats.js +2 -0
  141. package/dist/esm/v3/raw/core/refs.js +97 -0
  142. package/dist/esm/v3/raw/core/schemaType.js +68 -0
  143. package/dist/esm/v3/raw/core/titles.js +25 -0
  144. package/dist/esm/v3/raw/core/trail.js +14 -0
  145. package/dist/esm/v3/raw/core/uiProps.js +68 -0
  146. package/dist/esm/v3/raw/core/uiSchema.js +47 -0
  147. package/dist/esm/v3/raw/dom/bind.js +80 -0
  148. package/dist/esm/v3/raw/dom/build.js +23 -0
  149. package/dist/esm/v3/raw/dom/controller.js +83 -0
  150. package/dist/esm/v3/raw/dom/core.js +63 -0
  151. package/dist/esm/v3/raw/dom/delegate.js +25 -0
  152. package/dist/esm/v3/raw/dom/effects.js +62 -0
  153. package/dist/esm/v3/raw/dom/elements.js +84 -0
  154. package/dist/esm/v3/raw/dom/emitter.js +43 -0
  155. package/dist/esm/v3/raw/dom/nodes.js +20 -0
  156. package/dist/esm/v3/raw/dom/render.js +118 -0
  157. package/dist/esm/v3/raw/dom/upload.js +182 -0
  158. package/dist/esm/v3/raw/i18n/en.js +44 -0
  159. package/dist/esm/v3/raw/i18n/fi.js +41 -0
  160. package/dist/esm/v3/raw/i18n/index.js +9 -0
  161. package/dist/esm/v3/raw/index.js +33 -0
  162. package/dist/esm/v3/raw/model/classes.js +5 -0
  163. package/dist/esm/v3/raw/model/form/actions.js +150 -0
  164. package/dist/esm/v3/raw/model/form/any.js +23 -0
  165. package/dist/esm/v3/raw/model/form/appearance.js +27 -0
  166. package/dist/esm/v3/raw/model/form/array.js +65 -0
  167. package/dist/esm/v3/raw/model/form/choice.js +65 -0
  168. package/dist/esm/v3/raw/model/form/chrome.js +58 -0
  169. package/dist/esm/v3/raw/model/form/componentTable.js +145 -0
  170. package/dist/esm/v3/raw/model/form/date.js +48 -0
  171. package/dist/esm/v3/raw/model/form/dispatch.js +114 -0
  172. package/dist/esm/v3/raw/model/form/iconData.js +16 -0
  173. package/dist/esm/v3/raw/model/form/icons.js +6 -0
  174. package/dist/esm/v3/raw/model/form/index.js +32 -0
  175. package/dist/esm/v3/raw/model/form/leaf.js +89 -0
  176. package/dist/esm/v3/raw/model/form/markup.js +35 -0
  177. package/dist/esm/v3/raw/model/form/object.js +100 -0
  178. package/dist/esm/v3/raw/model/form/parts.js +21 -0
  179. package/dist/esm/v3/raw/model/form/searchable.js +76 -0
  180. package/dist/esm/v3/raw/model/form/templated.js +17 -0
  181. package/dist/esm/v3/raw/model/form/upload.js +81 -0
  182. package/dist/esm/v3/raw/model/styledChains.js +40 -0
  183. package/dist/esm/v3/raw/model/view/build.js +158 -0
  184. package/dist/esm/v3/raw/model/view/fields.js +90 -0
  185. package/dist/esm/v3/raw/model/view/index.js +6 -0
  186. package/dist/esm/v3/raw/model/view/markup.js +48 -0
  187. package/dist/esm/v3/raw/model/view/toVNode.js +63 -0
  188. package/dist/esm/v3/raw/model/view/values.js +50 -0
  189. package/dist/esm/v3/raw/model/vnode.js +13 -0
  190. package/dist/esm/v3/raw/sanitize/index.js +2 -0
  191. package/dist/esm/v3/raw/sanitize/sanitizeHtml.js +119 -0
  192. package/dist/esm/v3/raw/serialize/toDOM.js +145 -0
  193. package/dist/esm/v3/raw/serialize/toString.js +52 -0
  194. package/dist/esm/v3/raw/store/createStore.js +126 -0
  195. package/dist/esm/v3/raw/styles/color.js +104 -0
  196. package/dist/esm/v3/raw/styles/colorNames.js +27 -0
  197. package/dist/esm/v3/raw/styles/defaultStyles.js +111 -0
  198. package/dist/esm/v3/raw/styles/index.js +14 -0
  199. package/dist/esm/v3/raw/styles/themeToCssVars.js +55 -0
  200. package/dist/esm/v3/raw/styles/vars.js +24 -0
  201. package/dist/esm/v3/raw/validation/arrays.js +40 -0
  202. package/dist/esm/v3/raw/validation/conditions.js +60 -0
  203. package/dist/esm/v3/raw/validation/index.js +146 -0
  204. package/dist/esm/v3/raw/validation/keywords.js +73 -0
  205. package/dist/esm/v3/raw/validation/messages.js +10 -0
  206. package/dist/esm/v3/raw/validation/patterns.js +68 -0
  207. package/dist/esm/v3/react/chain.js +4 -0
  208. package/dist/esm/v3/react/compat.js +8 -0
  209. package/dist/esm/v3/react/componentsProp.js +18 -0
  210. package/dist/esm/v3/react/defined.js +2 -0
  211. package/dist/esm/v3/react/ejs/EJSField.js +67 -0
  212. package/dist/esm/v3/react/ejs/index.js +3 -0
  213. package/dist/esm/v3/react/form/components.js +101 -0
  214. package/dist/esm/v3/react/form/fields.js +70 -0
  215. package/dist/esm/v3/react/form/host.js +95 -0
  216. package/dist/esm/{Form/FormRegistry.js → v3/react/form/registry.js} +5 -3
  217. package/dist/esm/v3/react/form/root.js +38 -0
  218. package/dist/esm/v3/react/form/runtime.js +113 -0
  219. package/dist/esm/v3/react/form/templates.js +55 -0
  220. package/dist/esm/v3/react/form/upload.js +168 -0
  221. package/dist/esm/v3/react/form/uploadContexts.js +24 -0
  222. package/dist/esm/v3/react/form/useSetDefault.js +17 -0
  223. package/dist/esm/v3/react/hostCore.js +52 -0
  224. package/dist/esm/v3/react/index.js +18 -0
  225. package/dist/esm/v3/react/selector.js +13 -0
  226. package/dist/esm/v3/react/slots.js +15 -0
  227. package/dist/esm/v3/react/toReact.js +58 -0
  228. package/dist/esm/v3/react/view/components.js +59 -0
  229. package/dist/esm/v3/react/view/fields.js +43 -0
  230. package/dist/esm/v3/react/view/host.js +32 -0
  231. package/dist/esm/v3/react/view/registry.js +16 -0
  232. package/dist/esm/v3/react/view/root.js +33 -0
  233. package/dist/esm/v3/react/view/templates.js +47 -0
  234. package/dist/types/common/types/Form.d.ts +9 -32
  235. package/dist/types/common/types/Utils.d.ts +11 -0
  236. package/dist/types/common/types/index.d.ts +2 -0
  237. package/dist/types/index.d.ts +6 -4
  238. package/dist/types/v3/codemod/bindings.d.ts +18 -0
  239. package/dist/types/v3/codemod/cli.d.ts +2 -0
  240. package/dist/types/v3/codemod/migrate.d.ts +8 -0
  241. package/dist/types/v3/codemod/package.d.ts +2 -0
  242. package/dist/types/v3/codemod/slots.d.ts +13 -0
  243. package/dist/types/v3/codemod/transform.d.ts +29 -0
  244. package/dist/types/v3/document/fromDocument.d.ts +22 -0
  245. package/dist/types/v3/document/index.d.ts +4 -0
  246. package/dist/types/v3/document/render.d.ts +11 -0
  247. package/dist/types/v3/raw/compat/v2utils.d.ts +14 -0
  248. package/dist/types/v3/raw/core/arrays.d.ts +22 -0
  249. package/dist/types/v3/raw/core/choiceStyle.d.ts +4 -0
  250. package/dist/types/v3/raw/core/conditionals.d.ts +6 -0
  251. package/dist/types/v3/raw/core/dates.d.ts +8 -0
  252. package/dist/types/v3/raw/core/defaults.d.ts +15 -0
  253. package/dist/types/v3/raw/core/enums.d.ts +18 -0
  254. package/dist/types/v3/raw/core/initialValues.d.ts +12 -0
  255. package/dist/types/v3/raw/core/issues.d.ts +17 -0
  256. package/dist/types/v3/raw/core/json.d.ts +52 -0
  257. package/dist/types/v3/raw/core/merge.d.ts +6 -0
  258. package/dist/types/v3/raw/core/paths.d.ts +17 -0
  259. package/dist/types/v3/raw/core/policies/fileUploadView.d.ts +2 -0
  260. package/dist/types/v3/raw/core/policies/optionalNumberInitial.d.ts +4 -0
  261. package/dist/types/v3/raw/core/policies/storedFormats.d.ts +4 -0
  262. package/dist/types/v3/raw/core/refs.d.ts +41 -0
  263. package/dist/types/v3/raw/core/schemaType.d.ts +16 -0
  264. package/dist/types/v3/raw/core/titles.d.ts +2 -0
  265. package/dist/types/v3/raw/core/trail.d.ts +5 -0
  266. package/dist/types/v3/raw/core/uiProps.d.ts +12 -0
  267. package/dist/types/v3/raw/core/uiSchema.d.ts +19 -0
  268. package/dist/types/v3/raw/dom/bind.d.ts +2 -0
  269. package/dist/types/v3/raw/dom/build.d.ts +10 -0
  270. package/dist/types/v3/raw/dom/controller.d.ts +37 -0
  271. package/dist/types/v3/raw/dom/core.d.ts +43 -0
  272. package/dist/types/v3/raw/dom/delegate.d.ts +18 -0
  273. package/dist/types/v3/raw/dom/effects.d.ts +18 -0
  274. package/dist/types/v3/raw/dom/elements.d.ts +17 -0
  275. package/dist/types/v3/raw/dom/emitter.d.ts +8 -0
  276. package/dist/types/v3/raw/dom/nodes.d.ts +3 -0
  277. package/dist/types/v3/raw/dom/render.d.ts +2 -0
  278. package/dist/types/v3/raw/dom/types.d.ts +112 -0
  279. package/dist/types/v3/raw/dom/upload.d.ts +16 -0
  280. package/dist/types/v3/raw/i18n/en.d.ts +42 -0
  281. package/dist/types/v3/raw/i18n/fi.d.ts +2 -0
  282. package/dist/types/v3/raw/i18n/index.d.ts +9 -0
  283. package/dist/types/v3/raw/index.d.ts +43 -0
  284. package/dist/types/v3/raw/model/classes.d.ts +2 -0
  285. package/dist/types/v3/raw/model/form/actions.d.ts +41 -0
  286. package/dist/types/v3/raw/model/form/any.d.ts +5 -0
  287. package/dist/types/v3/raw/model/form/appearance.d.ts +9 -0
  288. package/dist/types/v3/raw/model/form/array.d.ts +4 -0
  289. package/dist/types/v3/raw/model/form/choice.d.ts +16 -0
  290. package/dist/types/v3/raw/model/form/chrome.d.ts +20 -0
  291. package/dist/types/v3/raw/model/form/componentTable.d.ts +2 -0
  292. package/dist/types/v3/raw/model/form/date.d.ts +13 -0
  293. package/dist/types/v3/raw/model/form/dispatch.d.ts +13 -0
  294. package/dist/types/v3/raw/model/form/iconData.d.ts +4 -0
  295. package/dist/types/v3/raw/model/form/icons.d.ts +2 -0
  296. package/dist/types/v3/raw/model/form/index.d.ts +38 -0
  297. package/dist/types/v3/raw/model/form/leaf.d.ts +29 -0
  298. package/dist/types/v3/raw/model/form/markup.d.ts +39 -0
  299. package/dist/types/v3/raw/model/form/object.d.ts +9 -0
  300. package/dist/types/v3/raw/model/form/parts.d.ts +10 -0
  301. package/dist/types/v3/raw/model/form/searchable.d.ts +5 -0
  302. package/dist/types/v3/raw/model/form/templated.d.ts +14 -0
  303. package/dist/types/v3/raw/model/form/types.d.ts +179 -0
  304. package/dist/types/v3/raw/model/form/upload.d.ts +28 -0
  305. package/dist/types/v3/raw/model/host.d.ts +46 -0
  306. package/dist/types/v3/raw/model/styledChains.d.ts +1 -0
  307. package/dist/types/v3/raw/model/view/build.d.ts +21 -0
  308. package/dist/types/v3/raw/model/view/fields.d.ts +31 -0
  309. package/dist/types/v3/raw/model/view/index.d.ts +6 -0
  310. package/dist/types/v3/raw/model/view/markup.d.ts +39 -0
  311. package/dist/types/v3/raw/model/view/toVNode.d.ts +3 -0
  312. package/dist/types/v3/raw/model/view/types.d.ts +109 -0
  313. package/dist/types/v3/raw/model/view/values.d.ts +10 -0
  314. package/dist/types/v3/raw/model/vnode.d.ts +24 -0
  315. package/dist/types/v3/raw/sanitize/index.d.ts +2 -0
  316. package/dist/types/v3/raw/sanitize/sanitizeHtml.d.ts +30 -0
  317. package/dist/types/v3/raw/serialize/toDOM.d.ts +14 -0
  318. package/dist/types/v3/raw/serialize/toString.d.ts +4 -0
  319. package/dist/types/v3/raw/store/createStore.d.ts +39 -0
  320. package/dist/types/v3/raw/styles/color.d.ts +15 -0
  321. package/dist/types/v3/raw/styles/colorNames.d.ts +1 -0
  322. package/dist/types/v3/raw/styles/defaultStyles.d.ts +1 -0
  323. package/dist/types/v3/raw/styles/index.d.ts +8 -0
  324. package/dist/types/v3/raw/styles/themeToCssVars.d.ts +4 -0
  325. package/dist/types/v3/raw/styles/vars.d.ts +43 -0
  326. package/dist/types/v3/raw/validation/arrays.d.ts +16 -0
  327. package/dist/types/v3/raw/validation/conditions.d.ts +10 -0
  328. package/dist/types/v3/raw/validation/index.d.ts +30 -0
  329. package/dist/types/v3/raw/validation/keywords.d.ts +10 -0
  330. package/dist/types/v3/raw/validation/messages.d.ts +8 -0
  331. package/dist/types/v3/raw/validation/patterns.d.ts +8 -0
  332. package/dist/types/v3/react/chain.d.ts +1 -0
  333. package/dist/types/v3/react/compat.d.ts +4 -0
  334. package/dist/types/v3/react/componentsProp.d.ts +5 -0
  335. package/dist/types/v3/react/defined.d.ts +1 -0
  336. package/dist/types/v3/react/ejs/EJSField.d.ts +14 -0
  337. package/dist/types/v3/react/ejs/index.d.ts +1 -0
  338. package/dist/types/v3/react/form/components.d.ts +3 -0
  339. package/dist/types/v3/react/form/fields.d.ts +8 -0
  340. package/dist/types/v3/react/form/host.d.ts +9 -0
  341. package/dist/types/v3/react/form/registry.d.ts +46 -0
  342. package/dist/types/v3/react/form/root.d.ts +32 -0
  343. package/dist/types/v3/react/form/runtime.d.ts +3 -0
  344. package/dist/types/v3/react/form/templates.d.ts +1 -0
  345. package/dist/types/v3/react/form/upload.d.ts +3 -0
  346. package/dist/types/v3/react/form/uploadContexts.d.ts +34 -0
  347. package/dist/types/v3/react/form/useSetDefault.d.ts +5 -0
  348. package/dist/types/v3/react/hostCore.d.ts +24 -0
  349. package/dist/types/v3/react/index.d.ts +23 -0
  350. package/dist/types/v3/react/selector.d.ts +10 -0
  351. package/dist/types/v3/react/slots.d.ts +4 -0
  352. package/dist/types/v3/react/toReact.d.ts +10 -0
  353. package/dist/types/v3/react/view/components.d.ts +8 -0
  354. package/dist/types/v3/react/view/fields.d.ts +4 -0
  355. package/dist/types/v3/react/view/host.d.ts +6 -0
  356. package/dist/types/v3/react/view/registry.d.ts +34 -0
  357. package/dist/types/v3/react/view/root.d.ts +32 -0
  358. package/dist/types/v3/react/view/templates.d.ts +15 -0
  359. package/package.json +97 -11
  360. package/styles.css +187 -0
  361. package/dist/cjs/Form/Form.js +0 -38
  362. package/dist/cjs/Form/components/Clickable.js +0 -11
  363. package/dist/cjs/Form/components/ErrorMessage.js +0 -23
  364. package/dist/cjs/Form/components/FieldInfo.js +0 -144
  365. package/dist/cjs/Form/components/FieldInput.js +0 -86
  366. package/dist/cjs/Form/components/Form.js +0 -52
  367. package/dist/cjs/Form/components/Icon.js +0 -5
  368. package/dist/cjs/Form/components/RequiredIndicator.js +0 -9
  369. package/dist/cjs/Form/components/index.js +0 -58
  370. package/dist/cjs/Form/fields/AnyField/AnyField.js +0 -30
  371. package/dist/cjs/Form/fields/AnyField/index.js +0 -38
  372. package/dist/cjs/Form/fields/AnyField/styledComponents.js +0 -6
  373. package/dist/cjs/Form/fields/ArrayField/ArrayField.js +0 -130
  374. package/dist/cjs/Form/fields/ArrayField/index.js +0 -38
  375. package/dist/cjs/Form/fields/ArrayField/styledComponents.js +0 -22
  376. package/dist/cjs/Form/fields/BooleanField/BooleanField.js +0 -26
  377. package/dist/cjs/Form/fields/BooleanField/index.js +0 -38
  378. package/dist/cjs/Form/fields/BooleanField/styledComponents.js +0 -18
  379. package/dist/cjs/Form/fields/DateField/DateField.js +0 -26
  380. package/dist/cjs/Form/fields/DateField/DateInput.js +0 -121
  381. package/dist/cjs/Form/fields/DateField/dateParsing.js +0 -68
  382. package/dist/cjs/Form/fields/DateField/index.js +0 -42
  383. package/dist/cjs/Form/fields/DateField/styledComponents.js +0 -60
  384. package/dist/cjs/Form/fields/FileUploadField/FileUploadField.js +0 -69
  385. package/dist/cjs/Form/fields/FileUploadField/FileUploadFieldInput.js +0 -21
  386. package/dist/cjs/Form/fields/FileUploadField/index.js +0 -41
  387. package/dist/cjs/Form/fields/FileUploadField/styledComponents.js +0 -63
  388. package/dist/cjs/Form/fields/FilesUploadField/FilesUploadField.js +0 -102
  389. package/dist/cjs/Form/fields/FilesUploadField/FilesUploadFieldInput.js +0 -174
  390. package/dist/cjs/Form/fields/FilesUploadField/index.js +0 -41
  391. package/dist/cjs/Form/fields/FilesUploadField/styledComponents.js +0 -217
  392. package/dist/cjs/Form/fields/MultipleChoiceField/MultipleChoiceField.js +0 -35
  393. package/dist/cjs/Form/fields/MultipleChoiceField/MultipleChoiceFieldInput.js +0 -40
  394. package/dist/cjs/Form/fields/MultipleChoiceField/index.js +0 -41
  395. package/dist/cjs/Form/fields/MultipleChoiceField/styledComponents.js +0 -24
  396. package/dist/cjs/Form/fields/NullField/NullField.js +0 -15
  397. package/dist/cjs/Form/fields/NullField/index.js +0 -37
  398. package/dist/cjs/Form/fields/NumberField/NumberField.js +0 -16
  399. package/dist/cjs/Form/fields/NumberField/index.js +0 -38
  400. package/dist/cjs/Form/fields/NumberField/styledComponents.js +0 -6
  401. package/dist/cjs/Form/fields/ObjectField/ObjectField.js +0 -190
  402. package/dist/cjs/Form/fields/ObjectField/ObjectFieldSection.js +0 -17
  403. package/dist/cjs/Form/fields/ObjectField/index.js +0 -41
  404. package/dist/cjs/Form/fields/ObjectField/styledComponents.js +0 -50
  405. package/dist/cjs/Form/fields/ObjectField/types.js +0 -10
  406. package/dist/cjs/Form/fields/RadioField/RadioField.js +0 -19
  407. package/dist/cjs/Form/fields/RadioField/RadioFieldInput.js +0 -11
  408. package/dist/cjs/Form/fields/RadioField/index.js +0 -41
  409. package/dist/cjs/Form/fields/RadioField/styledComponents.js +0 -78
  410. package/dist/cjs/Form/fields/SchemaField/SchemaField.js +0 -38
  411. package/dist/cjs/Form/fields/SchemaField/index.js +0 -37
  412. package/dist/cjs/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.js +0 -20
  413. package/dist/cjs/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectFieldInput.js +0 -27
  414. package/dist/cjs/Form/fields/SearchableMultiTagSelectField/index.js +0 -41
  415. package/dist/cjs/Form/fields/SearchableMultiTagSelectField/styledComponents.js +0 -71
  416. package/dist/cjs/Form/fields/SearchableSelectField/SearchableSelectField.js +0 -147
  417. package/dist/cjs/Form/fields/SearchableSelectField/index.js +0 -40
  418. package/dist/cjs/Form/fields/SearchableSelectField/styledComponents.js +0 -53
  419. package/dist/cjs/Form/fields/StringField/StringField.js +0 -44
  420. package/dist/cjs/Form/fields/StringField/index.js +0 -37
  421. package/dist/cjs/Form/fields/StringField/styledComponents.js +0 -6
  422. package/dist/cjs/Form/fields/TextAreaField/TextAreaField.js +0 -21
  423. package/dist/cjs/Form/fields/TextAreaField/index.js +0 -38
  424. package/dist/cjs/Form/fields/TextAreaField/styledComponents.js +0 -17
  425. package/dist/cjs/Form/fields/ToggleField/ToggleField.js +0 -19
  426. package/dist/cjs/Form/fields/ToggleField/ToggleFieldInput.js +0 -11
  427. package/dist/cjs/Form/fields/ToggleField/index.js +0 -41
  428. package/dist/cjs/Form/fields/ToggleField/styledComponents.js +0 -58
  429. package/dist/cjs/Form/fields/index.js +0 -93
  430. package/dist/cjs/Form/hooks/index.js +0 -17
  431. package/dist/cjs/Form/hooks/useSetDefault.js +0 -32
  432. package/dist/cjs/Form/index.js +0 -26
  433. package/dist/cjs/Form/styles/common.js +0 -259
  434. package/dist/cjs/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +0 -36
  435. package/dist/cjs/Form/templates/ArrayFieldTemplate/index.js +0 -38
  436. package/dist/cjs/Form/templates/ArrayFieldTemplate/styledComponents.js +0 -28
  437. package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js +0 -41
  438. package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/index.js +0 -38
  439. package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.js +0 -55
  440. package/dist/cjs/Form/templates/FieldTemplate/FieldTemplate.js +0 -28
  441. package/dist/cjs/Form/templates/FieldTemplate/index.js +0 -37
  442. package/dist/cjs/Form/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +0 -32
  443. package/dist/cjs/Form/templates/ObjectFieldTemplate/index.js +0 -38
  444. package/dist/cjs/Form/templates/ObjectFieldTemplate/styledComponents.js +0 -57
  445. package/dist/cjs/Form/templates/index.js +0 -55
  446. package/dist/cjs/Form/types/index.js +0 -17
  447. package/dist/cjs/FormView/FormView.js +0 -36
  448. package/dist/cjs/FormView/FormViewRegistry.js +0 -19
  449. package/dist/cjs/FormView/components/Field.js +0 -131
  450. package/dist/cjs/FormView/components/Form.js +0 -9
  451. package/dist/cjs/FormView/components/Icon.js +0 -7
  452. package/dist/cjs/FormView/components/index.js +0 -56
  453. package/dist/cjs/FormView/fields/AnyField.js +0 -26
  454. package/dist/cjs/FormView/fields/ArrayField.js +0 -32
  455. package/dist/cjs/FormView/fields/BooleanField.js +0 -33
  456. package/dist/cjs/FormView/fields/DateField.js +0 -12
  457. package/dist/cjs/FormView/fields/EJSField.js +0 -39
  458. package/dist/cjs/FormView/fields/FileUploadField.js +0 -7
  459. package/dist/cjs/FormView/fields/FilesUploadField.js +0 -7
  460. package/dist/cjs/FormView/fields/MultipleChoiceField.js +0 -30
  461. package/dist/cjs/FormView/fields/NullField.js +0 -14
  462. package/dist/cjs/FormView/fields/NumberField.js +0 -12
  463. package/dist/cjs/FormView/fields/ObjectField/ObjectField.js +0 -57
  464. package/dist/cjs/FormView/fields/ObjectField/ObjectFieldSection.js +0 -11
  465. package/dist/cjs/FormView/fields/ObjectField/index.js +0 -41
  466. package/dist/cjs/FormView/fields/ObjectField/styledComponents.js +0 -6
  467. package/dist/cjs/FormView/fields/RadioField.js +0 -15
  468. package/dist/cjs/FormView/fields/SchemaField.js +0 -38
  469. package/dist/cjs/FormView/fields/SearchableMultiTagSelectField.js +0 -14
  470. package/dist/cjs/FormView/fields/SearchableSelectField.js +0 -13
  471. package/dist/cjs/FormView/fields/StringField.js +0 -24
  472. package/dist/cjs/FormView/fields/TextAreaField.js +0 -18
  473. package/dist/cjs/FormView/fields/ToggleField.js +0 -15
  474. package/dist/cjs/FormView/fields/index.js +0 -81
  475. package/dist/cjs/FormView/index.js +0 -25
  476. package/dist/cjs/FormView/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +0 -20
  477. package/dist/cjs/FormView/templates/ArrayFieldTemplate/index.js +0 -38
  478. package/dist/cjs/FormView/templates/ArrayFieldTemplate/styledComponents.js +0 -15
  479. package/dist/cjs/FormView/templates/FieldTemplate/FieldTemplate.js +0 -18
  480. package/dist/cjs/FormView/templates/FieldTemplate/index.js +0 -37
  481. package/dist/cjs/FormView/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +0 -30
  482. package/dist/cjs/FormView/templates/ObjectFieldTemplate/index.js +0 -38
  483. package/dist/cjs/FormView/templates/ObjectFieldTemplate/styledComponents.js +0 -65
  484. package/dist/cjs/FormView/templates/index.js +0 -52
  485. package/dist/cjs/common/FileUploadContext.js +0 -15
  486. package/dist/cjs/common/FilesUploadContext.js +0 -14
  487. package/dist/cjs/common/constants.js +0 -13
  488. package/dist/cjs/common/index.js +0 -20
  489. package/dist/cjs/utils/createInitialValues.js +0 -38
  490. package/dist/cjs/utils/createValidationSchema.js +0 -397
  491. package/dist/cjs/utils/deepOverlap.js +0 -18
  492. package/dist/cjs/utils/extractUiSchema.js +0 -22
  493. package/dist/cjs/utils/getEnums.js +0 -56
  494. package/dist/cjs/utils/getHiddenProperties.js +0 -11
  495. package/dist/cjs/utils/getStyle.js +0 -21
  496. package/dist/cjs/utils/getTitleAndDescription.js +0 -19
  497. package/dist/cjs/utils/getTypes.js +0 -60
  498. package/dist/cjs/utils/immutablySwapItems.js +0 -10
  499. package/dist/cjs/utils/index.js +0 -31
  500. package/dist/cjs/utils/mergeSchemas.js +0 -30
  501. package/dist/cjs/utils/orderAdditionalProperties.js +0 -12
  502. package/dist/cjs/utils/orderByUiSchema.js +0 -29
  503. package/dist/cjs/utils/resolveSchema.js +0 -117
  504. package/dist/cjs/utils/setTitleValues.js +0 -25
  505. package/dist/cjs/utils/solveReferences.js +0 -25
  506. package/dist/esm/Form/Form.js +0 -34
  507. package/dist/esm/Form/components/Clickable.js +0 -7
  508. package/dist/esm/Form/components/ErrorMessage.js +0 -16
  509. package/dist/esm/Form/components/FieldInfo.js +0 -140
  510. package/dist/esm/Form/components/FieldInput.js +0 -50
  511. package/dist/esm/Form/components/Form.js +0 -13
  512. package/dist/esm/Form/components/Icon.js +0 -2
  513. package/dist/esm/Form/components/RequiredIndicator.js +0 -6
  514. package/dist/esm/Form/components/index.js +0 -22
  515. package/dist/esm/Form/fields/AnyField/AnyField.js +0 -26
  516. package/dist/esm/Form/fields/AnyField/index.js +0 -2
  517. package/dist/esm/Form/fields/AnyField/styledComponents.js +0 -3
  518. package/dist/esm/Form/fields/ArrayField/ArrayField.js +0 -126
  519. package/dist/esm/Form/fields/ArrayField/index.js +0 -2
  520. package/dist/esm/Form/fields/ArrayField/styledComponents.js +0 -16
  521. package/dist/esm/Form/fields/BooleanField/BooleanField.js +0 -22
  522. package/dist/esm/Form/fields/BooleanField/index.js +0 -2
  523. package/dist/esm/Form/fields/BooleanField/styledComponents.js +0 -15
  524. package/dist/esm/Form/fields/DateField/DateField.js +0 -22
  525. package/dist/esm/Form/fields/DateField/DateInput.js +0 -117
  526. package/dist/esm/Form/fields/DateField/dateParsing.js +0 -62
  527. package/dist/esm/Form/fields/DateField/index.js +0 -3
  528. package/dist/esm/Form/fields/DateField/styledComponents.js +0 -54
  529. package/dist/esm/Form/fields/FileUploadField/FileUploadField.js +0 -65
  530. package/dist/esm/Form/fields/FileUploadField/FileUploadFieldInput.js +0 -17
  531. package/dist/esm/Form/fields/FileUploadField/index.js +0 -5
  532. package/dist/esm/Form/fields/FileUploadField/styledComponents.js +0 -57
  533. package/dist/esm/Form/fields/FilesUploadField/FilesUploadField.js +0 -98
  534. package/dist/esm/Form/fields/FilesUploadField/FilesUploadFieldInput.js +0 -137
  535. package/dist/esm/Form/fields/FilesUploadField/index.js +0 -5
  536. package/dist/esm/Form/fields/FilesUploadField/styledComponents.js +0 -211
  537. package/dist/esm/Form/fields/MultipleChoiceField/MultipleChoiceField.js +0 -31
  538. package/dist/esm/Form/fields/MultipleChoiceField/MultipleChoiceFieldInput.js +0 -36
  539. package/dist/esm/Form/fields/MultipleChoiceField/index.js +0 -5
  540. package/dist/esm/Form/fields/MultipleChoiceField/styledComponents.js +0 -18
  541. package/dist/esm/Form/fields/NullField/NullField.js +0 -11
  542. package/dist/esm/Form/fields/NullField/index.js +0 -1
  543. package/dist/esm/Form/fields/NumberField/NumberField.js +0 -12
  544. package/dist/esm/Form/fields/NumberField/index.js +0 -2
  545. package/dist/esm/Form/fields/NumberField/styledComponents.js +0 -3
  546. package/dist/esm/Form/fields/ObjectField/ObjectField.js +0 -186
  547. package/dist/esm/Form/fields/ObjectField/ObjectFieldSection.js +0 -13
  548. package/dist/esm/Form/fields/ObjectField/index.js +0 -5
  549. package/dist/esm/Form/fields/ObjectField/styledComponents.js +0 -47
  550. package/dist/esm/Form/fields/ObjectField/types.js +0 -7
  551. package/dist/esm/Form/fields/RadioField/RadioField.js +0 -15
  552. package/dist/esm/Form/fields/RadioField/RadioFieldInput.js +0 -7
  553. package/dist/esm/Form/fields/RadioField/index.js +0 -5
  554. package/dist/esm/Form/fields/RadioField/styledComponents.js +0 -75
  555. package/dist/esm/Form/fields/SchemaField/SchemaField.js +0 -34
  556. package/dist/esm/Form/fields/SchemaField/index.js +0 -1
  557. package/dist/esm/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.js +0 -16
  558. package/dist/esm/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectFieldInput.js +0 -23
  559. package/dist/esm/Form/fields/SearchableMultiTagSelectField/index.js +0 -5
  560. package/dist/esm/Form/fields/SearchableMultiTagSelectField/styledComponents.js +0 -68
  561. package/dist/esm/Form/fields/SearchableSelectField/SearchableSelectField.js +0 -143
  562. package/dist/esm/Form/fields/SearchableSelectField/index.js +0 -4
  563. package/dist/esm/Form/fields/SearchableSelectField/styledComponents.js +0 -50
  564. package/dist/esm/Form/fields/StringField/StringField.js +0 -40
  565. package/dist/esm/Form/fields/StringField/index.js +0 -1
  566. package/dist/esm/Form/fields/StringField/styledComponents.js +0 -3
  567. package/dist/esm/Form/fields/TextAreaField/TextAreaField.js +0 -17
  568. package/dist/esm/Form/fields/TextAreaField/index.js +0 -2
  569. package/dist/esm/Form/fields/TextAreaField/styledComponents.js +0 -11
  570. package/dist/esm/Form/fields/ToggleField/ToggleField.js +0 -15
  571. package/dist/esm/Form/fields/ToggleField/ToggleFieldInput.js +0 -7
  572. package/dist/esm/Form/fields/ToggleField/index.js +0 -5
  573. package/dist/esm/Form/fields/ToggleField/styledComponents.js +0 -55
  574. package/dist/esm/Form/fields/index.js +0 -57
  575. package/dist/esm/Form/hooks/index.js +0 -1
  576. package/dist/esm/Form/hooks/useSetDefault.js +0 -28
  577. package/dist/esm/Form/index.js +0 -7
  578. package/dist/esm/Form/styles/common.js +0 -256
  579. package/dist/esm/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +0 -32
  580. package/dist/esm/Form/templates/ArrayFieldTemplate/index.js +0 -2
  581. package/dist/esm/Form/templates/ArrayFieldTemplate/styledComponents.js +0 -24
  582. package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js +0 -37
  583. package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/index.js +0 -2
  584. package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.js +0 -51
  585. package/dist/esm/Form/templates/FieldTemplate/FieldTemplate.js +0 -24
  586. package/dist/esm/Form/templates/FieldTemplate/index.js +0 -1
  587. package/dist/esm/Form/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +0 -28
  588. package/dist/esm/Form/templates/ObjectFieldTemplate/index.js +0 -2
  589. package/dist/esm/Form/templates/ObjectFieldTemplate/styledComponents.js +0 -53
  590. package/dist/esm/Form/templates/index.js +0 -19
  591. package/dist/esm/Form/types/index.js +0 -1
  592. package/dist/esm/FormView/FormView.js +0 -29
  593. package/dist/esm/FormView/FormViewRegistry.js +0 -13
  594. package/dist/esm/FormView/components/Field.js +0 -123
  595. package/dist/esm/FormView/components/Form.js +0 -6
  596. package/dist/esm/FormView/components/Icon.js +0 -4
  597. package/dist/esm/FormView/components/index.js +0 -17
  598. package/dist/esm/FormView/fields/AnyField.js +0 -22
  599. package/dist/esm/FormView/fields/ArrayField.js +0 -28
  600. package/dist/esm/FormView/fields/BooleanField.js +0 -29
  601. package/dist/esm/FormView/fields/DateField.js +0 -8
  602. package/dist/esm/FormView/fields/EJSField.js +0 -32
  603. package/dist/esm/FormView/fields/FileUploadField.js +0 -3
  604. package/dist/esm/FormView/fields/FilesUploadField.js +0 -3
  605. package/dist/esm/FormView/fields/MultipleChoiceField.js +0 -26
  606. package/dist/esm/FormView/fields/NullField.js +0 -10
  607. package/dist/esm/FormView/fields/NumberField.js +0 -8
  608. package/dist/esm/FormView/fields/ObjectField/ObjectField.js +0 -53
  609. package/dist/esm/FormView/fields/ObjectField/ObjectFieldSection.js +0 -7
  610. package/dist/esm/FormView/fields/ObjectField/index.js +0 -5
  611. package/dist/esm/FormView/fields/ObjectField/styledComponents.js +0 -3
  612. package/dist/esm/FormView/fields/RadioField.js +0 -11
  613. package/dist/esm/FormView/fields/SchemaField.js +0 -34
  614. package/dist/esm/FormView/fields/SearchableMultiTagSelectField.js +0 -10
  615. package/dist/esm/FormView/fields/SearchableSelectField.js +0 -9
  616. package/dist/esm/FormView/fields/StringField.js +0 -20
  617. package/dist/esm/FormView/fields/TextAreaField.js +0 -14
  618. package/dist/esm/FormView/fields/ToggleField.js +0 -11
  619. package/dist/esm/FormView/fields/index.js +0 -45
  620. package/dist/esm/FormView/index.js +0 -6
  621. package/dist/esm/FormView/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +0 -16
  622. package/dist/esm/FormView/templates/ArrayFieldTemplate/index.js +0 -2
  623. package/dist/esm/FormView/templates/ArrayFieldTemplate/styledComponents.js +0 -11
  624. package/dist/esm/FormView/templates/FieldTemplate/FieldTemplate.js +0 -14
  625. package/dist/esm/FormView/templates/FieldTemplate/index.js +0 -1
  626. package/dist/esm/FormView/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +0 -26
  627. package/dist/esm/FormView/templates/ObjectFieldTemplate/index.js +0 -2
  628. package/dist/esm/FormView/templates/ObjectFieldTemplate/styledComponents.js +0 -58
  629. package/dist/esm/FormView/templates/index.js +0 -16
  630. package/dist/esm/common/FileUploadContext.js +0 -12
  631. package/dist/esm/common/FilesUploadContext.js +0 -11
  632. package/dist/esm/common/constants.js +0 -10
  633. package/dist/esm/common/index.js +0 -4
  634. package/dist/esm/utils/createInitialValues.js +0 -35
  635. package/dist/esm/utils/createValidationSchema.js +0 -361
  636. package/dist/esm/utils/deepOverlap.js +0 -14
  637. package/dist/esm/utils/extractUiSchema.js +0 -18
  638. package/dist/esm/utils/getEnums.js +0 -51
  639. package/dist/esm/utils/getHiddenProperties.js +0 -7
  640. package/dist/esm/utils/getStyle.js +0 -18
  641. package/dist/esm/utils/getTitleAndDescription.js +0 -14
  642. package/dist/esm/utils/getTypes.js +0 -53
  643. package/dist/esm/utils/immutablySwapItems.js +0 -7
  644. package/dist/esm/utils/index.js +0 -15
  645. package/dist/esm/utils/mergeSchemas.js +0 -26
  646. package/dist/esm/utils/orderAdditionalProperties.js +0 -9
  647. package/dist/esm/utils/orderByUiSchema.js +0 -26
  648. package/dist/esm/utils/resolveSchema.js +0 -112
  649. package/dist/esm/utils/setTitleValues.js +0 -21
  650. package/dist/esm/utils/solveReferences.js +0 -22
  651. package/dist/types/Form/Form.d.ts +0 -2
  652. package/dist/types/Form/FormRegistry.d.ts +0 -3
  653. package/dist/types/Form/components/Clickable.d.ts +0 -15
  654. package/dist/types/Form/components/ErrorMessage.d.ts +0 -3
  655. package/dist/types/Form/components/FieldInfo.d.ts +0 -10
  656. package/dist/types/Form/components/FieldInput.d.ts +0 -19
  657. package/dist/types/Form/components/Form.d.ts +0 -6
  658. package/dist/types/Form/components/Icon.d.ts +0 -1
  659. package/dist/types/Form/components/RequiredIndicator.d.ts +0 -1
  660. package/dist/types/Form/components/index.d.ts +0 -249
  661. package/dist/types/Form/fields/AnyField/AnyField.d.ts +0 -2
  662. package/dist/types/Form/fields/AnyField/index.d.ts +0 -2
  663. package/dist/types/Form/fields/AnyField/styledComponents.d.ts +0 -3
  664. package/dist/types/Form/fields/ArrayField/ArrayField.d.ts +0 -2
  665. package/dist/types/Form/fields/ArrayField/index.d.ts +0 -2
  666. package/dist/types/Form/fields/ArrayField/styledComponents.d.ts +0 -13
  667. package/dist/types/Form/fields/BooleanField/BooleanField.d.ts +0 -2
  668. package/dist/types/Form/fields/BooleanField/index.d.ts +0 -2
  669. package/dist/types/Form/fields/BooleanField/styledComponents.d.ts +0 -3
  670. package/dist/types/Form/fields/DateField/DateField.d.ts +0 -2
  671. package/dist/types/Form/fields/DateField/DateInput.d.ts +0 -17
  672. package/dist/types/Form/fields/DateField/dateParsing.d.ts +0 -9
  673. package/dist/types/Form/fields/DateField/index.d.ts +0 -3
  674. package/dist/types/Form/fields/DateField/styledComponents.d.ts +0 -4
  675. package/dist/types/Form/fields/FileUploadField/FileUploadField.d.ts +0 -2
  676. package/dist/types/Form/fields/FileUploadField/FileUploadFieldInput.d.ts +0 -25
  677. package/dist/types/Form/fields/FileUploadField/index.d.ts +0 -17
  678. package/dist/types/Form/fields/FileUploadField/styledComponents.d.ts +0 -11
  679. package/dist/types/Form/fields/FilesUploadField/FilesUploadField.d.ts +0 -2
  680. package/dist/types/Form/fields/FilesUploadField/FilesUploadFieldInput.d.ts +0 -42
  681. package/dist/types/Form/fields/FilesUploadField/index.d.ts +0 -37
  682. package/dist/types/Form/fields/FilesUploadField/styledComponents.d.ts +0 -32
  683. package/dist/types/Form/fields/MultipleChoiceField/MultipleChoiceField.d.ts +0 -2
  684. package/dist/types/Form/fields/MultipleChoiceField/MultipleChoiceFieldInput.d.ts +0 -17
  685. package/dist/types/Form/fields/MultipleChoiceField/index.d.ts +0 -22
  686. package/dist/types/Form/fields/MultipleChoiceField/styledComponents.d.ts +0 -16
  687. package/dist/types/Form/fields/NullField/NullField.d.ts +0 -2
  688. package/dist/types/Form/fields/NullField/index.d.ts +0 -1
  689. package/dist/types/Form/fields/NumberField/NumberField.d.ts +0 -2
  690. package/dist/types/Form/fields/NumberField/index.d.ts +0 -2
  691. package/dist/types/Form/fields/NumberField/styledComponents.d.ts +0 -1
  692. package/dist/types/Form/fields/ObjectField/ObjectField.d.ts +0 -2
  693. package/dist/types/Form/fields/ObjectField/ObjectFieldSection.d.ts +0 -3
  694. package/dist/types/Form/fields/ObjectField/index.d.ts +0 -20
  695. package/dist/types/Form/fields/ObjectField/styledComponents.d.ts +0 -15
  696. package/dist/types/Form/fields/ObjectField/types.d.ts +0 -19
  697. package/dist/types/Form/fields/RadioField/RadioField.d.ts +0 -2
  698. package/dist/types/Form/fields/RadioField/RadioFieldInput.d.ts +0 -11
  699. package/dist/types/Form/fields/RadioField/index.d.ts +0 -22
  700. package/dist/types/Form/fields/RadioField/styledComponents.d.ts +0 -16
  701. package/dist/types/Form/fields/SchemaField/SchemaField.d.ts +0 -2
  702. package/dist/types/Form/fields/SchemaField/index.d.ts +0 -1
  703. package/dist/types/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.d.ts +0 -2
  704. package/dist/types/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectFieldInput.d.ts +0 -11
  705. package/dist/types/Form/fields/SearchableMultiTagSelectField/index.d.ts +0 -21
  706. package/dist/types/Form/fields/SearchableMultiTagSelectField/styledComponents.d.ts +0 -15
  707. package/dist/types/Form/fields/SearchableSelectField/SearchableSelectField.d.ts +0 -2
  708. package/dist/types/Form/fields/SearchableSelectField/index.d.ts +0 -2
  709. package/dist/types/Form/fields/SearchableSelectField/styledComponents.d.ts +0 -22
  710. package/dist/types/Form/fields/SearchableSelectField/types.d.ts +0 -25
  711. package/dist/types/Form/fields/StringField/StringField.d.ts +0 -2
  712. package/dist/types/Form/fields/StringField/index.d.ts +0 -1
  713. package/dist/types/Form/fields/StringField/styledComponents.d.ts +0 -3
  714. package/dist/types/Form/fields/TextAreaField/TextAreaField.d.ts +0 -2
  715. package/dist/types/Form/fields/TextAreaField/index.d.ts +0 -2
  716. package/dist/types/Form/fields/TextAreaField/styledComponents.d.ts +0 -5
  717. package/dist/types/Form/fields/ToggleField/ToggleField.d.ts +0 -2
  718. package/dist/types/Form/fields/ToggleField/ToggleFieldInput.d.ts +0 -6
  719. package/dist/types/Form/fields/ToggleField/index.d.ts +0 -13
  720. package/dist/types/Form/fields/ToggleField/styledComponents.d.ts +0 -7
  721. package/dist/types/Form/fields/index.d.ts +0 -191
  722. package/dist/types/Form/hooks/index.d.ts +0 -1
  723. package/dist/types/Form/hooks/useSetDefault.d.ts +0 -2
  724. package/dist/types/Form/index.d.ts +0 -8
  725. package/dist/types/Form/styles/common.d.ts +0 -2
  726. package/dist/types/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +0 -2
  727. package/dist/types/Form/templates/ArrayFieldTemplate/index.d.ts +0 -2
  728. package/dist/types/Form/templates/ArrayFieldTemplate/styledComponents.d.ts +0 -30
  729. package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.d.ts +0 -2
  730. package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/index.d.ts +0 -2
  731. package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.d.ts +0 -36
  732. package/dist/types/Form/templates/FieldTemplate/FieldTemplate.d.ts +0 -2
  733. package/dist/types/Form/templates/FieldTemplate/index.d.ts +0 -1
  734. package/dist/types/Form/templates/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +0 -2
  735. package/dist/types/Form/templates/ObjectFieldTemplate/index.d.ts +0 -2
  736. package/dist/types/Form/templates/ObjectFieldTemplate/styledComponents.d.ts +0 -27
  737. package/dist/types/Form/templates/index.d.ts +0 -57
  738. package/dist/types/Form/types/FormRegistryContext.d.ts +0 -23
  739. package/dist/types/Form/types/index.d.ts +0 -1
  740. package/dist/types/FormView/FormView.d.ts +0 -4
  741. package/dist/types/FormView/FormViewRegistry.d.ts +0 -3
  742. package/dist/types/FormView/components/Field.d.ts +0 -35
  743. package/dist/types/FormView/components/Form.d.ts +0 -1
  744. package/dist/types/FormView/components/Icon.d.ts +0 -1
  745. package/dist/types/FormView/components/index.d.ts +0 -53
  746. package/dist/types/FormView/fields/AnyField.d.ts +0 -2
  747. package/dist/types/FormView/fields/ArrayField.d.ts +0 -2
  748. package/dist/types/FormView/fields/BooleanField.d.ts +0 -2
  749. package/dist/types/FormView/fields/DateField.d.ts +0 -2
  750. package/dist/types/FormView/fields/EJSField.d.ts +0 -2
  751. package/dist/types/FormView/fields/FileUploadField.d.ts +0 -2
  752. package/dist/types/FormView/fields/FilesUploadField.d.ts +0 -2
  753. package/dist/types/FormView/fields/MultipleChoiceField.d.ts +0 -2
  754. package/dist/types/FormView/fields/NullField.d.ts +0 -2
  755. package/dist/types/FormView/fields/NumberField.d.ts +0 -2
  756. package/dist/types/FormView/fields/ObjectField/ObjectField.d.ts +0 -2
  757. package/dist/types/FormView/fields/ObjectField/ObjectFieldSection.d.ts +0 -7
  758. package/dist/types/FormView/fields/ObjectField/index.d.ts +0 -8
  759. package/dist/types/FormView/fields/ObjectField/styledComponents.d.ts +0 -2
  760. package/dist/types/FormView/fields/RadioField.d.ts +0 -2
  761. package/dist/types/FormView/fields/SchemaField.d.ts +0 -2
  762. package/dist/types/FormView/fields/SearchableMultiTagSelectField.d.ts +0 -2
  763. package/dist/types/FormView/fields/SearchableSelectField.d.ts +0 -2
  764. package/dist/types/FormView/fields/StringField.d.ts +0 -2
  765. package/dist/types/FormView/fields/TextAreaField.d.ts +0 -2
  766. package/dist/types/FormView/fields/ToggleField.d.ts +0 -2
  767. package/dist/types/FormView/fields/index.d.ts +0 -9
  768. package/dist/types/FormView/index.d.ts +0 -7
  769. package/dist/types/FormView/templates/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +0 -2
  770. package/dist/types/FormView/templates/ArrayFieldTemplate/index.d.ts +0 -2
  771. package/dist/types/FormView/templates/ArrayFieldTemplate/styledComponents.d.ts +0 -10
  772. package/dist/types/FormView/templates/FieldTemplate/FieldTemplate.d.ts +0 -2
  773. package/dist/types/FormView/templates/FieldTemplate/index.d.ts +0 -1
  774. package/dist/types/FormView/templates/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +0 -2
  775. package/dist/types/FormView/templates/ObjectFieldTemplate/index.d.ts +0 -2
  776. package/dist/types/FormView/templates/ObjectFieldTemplate/styledComponents.d.ts +0 -10
  777. package/dist/types/FormView/templates/index.d.ts +0 -23
  778. package/dist/types/FormView/types/FormViewRegistryContext.d.ts +0 -21
  779. package/dist/types/FormView/types/index.d.ts +0 -1
  780. package/dist/types/common/FileUploadContext.d.ts +0 -18
  781. package/dist/types/common/FilesUploadContext.d.ts +0 -17
  782. package/dist/types/common/constants.d.ts +0 -10
  783. package/dist/types/common/index.d.ts +0 -4
  784. package/dist/types/styles/types.d.ts +0 -216
  785. package/dist/types/utils/createInitialValues.d.ts +0 -7
  786. package/dist/types/utils/createValidationSchema.d.ts +0 -31
  787. package/dist/types/utils/deepOverlap.d.ts +0 -1
  788. package/dist/types/utils/extractUiSchema.d.ts +0 -9
  789. package/dist/types/utils/getEnums.d.ts +0 -30
  790. package/dist/types/utils/getHiddenProperties.d.ts +0 -2
  791. package/dist/types/utils/getStyle.d.ts +0 -5
  792. package/dist/types/utils/getTitleAndDescription.d.ts +0 -12
  793. package/dist/types/utils/getTypes.d.ts +0 -5
  794. package/dist/types/utils/immutablySwapItems.d.ts +0 -1
  795. package/dist/types/utils/index.d.ts +0 -15
  796. package/dist/types/utils/mergeSchemas.d.ts +0 -1
  797. package/dist/types/utils/orderAdditionalProperties.d.ts +0 -2
  798. package/dist/types/utils/orderByUiSchema.d.ts +0 -2
  799. package/dist/types/utils/resolveSchema.d.ts +0 -4
  800. package/dist/types/utils/setTitleValues.d.ts +0 -1
  801. package/dist/types/utils/solveReferences.d.ts +0 -10
  802. /package/dist/cjs/{Form/fields/SearchableSelectField/types.js → common/types/Utils.js} +0 -0
  803. /package/dist/cjs/{styles → v3/raw/dom}/types.js +0 -0
  804. /package/dist/cjs/{Form/types/FormRegistryContext.js → v3/raw/model/form/types.js} +0 -0
  805. /package/dist/cjs/{FormView/types/FormViewRegistryContext.js → v3/raw/model/host.js} +0 -0
  806. /package/dist/cjs/{FormView/types/index.js → v3/raw/model/view/types.js} +0 -0
  807. /package/dist/esm/{Form/fields/SearchableSelectField/types.js → common/types/Utils.js} +0 -0
  808. /package/dist/esm/{styles → v3/raw/dom}/types.js +0 -0
  809. /package/dist/esm/{Form/types/FormRegistryContext.js → v3/raw/model/form/types.js} +0 -0
  810. /package/dist/esm/{FormView/types/FormViewRegistryContext.js → v3/raw/model/host.js} +0 -0
  811. /package/dist/esm/{FormView/types/index.js → v3/raw/model/view/types.js} +0 -0
@@ -0,0 +1,33 @@
1
+ // @nolwenture/formik-jsonschema-form/raw (v3, slice S1): the pure, framework-free core.
2
+ // No react, formik, styled-components, @nolwenture/* or DOM access (boundary gate in
3
+ // src/v3/raw/__tests__/boundary.test.ts). S2 adds the VNode model and the read-only view
4
+ // serialised to a string; S6 adds toDOM, the RAW store, FormController and the <fjsf-form> elements.
5
+ export * from "./core/json";
6
+ export * from "./core/issues";
7
+ export * from "./core/paths";
8
+ export { getSchemaType, guessType, normaliseType, defaultValueForType } from "./core/schemaType";
9
+ export { mergeSchemas } from "./core/merge";
10
+ export { MAX_REF_DEPTH, hasReferences, parseRef, resolveRefs, solveReferences } from "./core/refs";
11
+ export { itemSchema, normalizeArraySchema, valueTypeMismatch } from "./core/arrays";
12
+ export { deepOverlap, resolveOneOfValue, resolveSchema } from "./core/conditionals";
13
+ export { defaultFor, isUnset, localIsoDate } from "./core/defaults";
14
+ export { createInitialValues } from "./core/initialValues";
15
+ export { OPTIONAL_NUMBER_INITIAL, optionalNumberInitialValue } from "./core/policies/optionalNumberInitial";
16
+ export { FILE_UPLOAD_VIEW } from "./core/policies/fileUploadView";
17
+ export * from "./core/uiSchema";
18
+ export * from "./core/enums";
19
+ export { immutablySwapItems, setTitleValues } from "./core/titles";
20
+ export { createValidationSchema } from "./validation";
21
+ export { DEFAULT_PATTERN_INPUT_CAP, isUnsafePattern } from "./validation/patterns";
22
+ export { catalogs, createTranslator, en, fi } from "./i18n";
23
+ export * from "./sanitize";
24
+ export { cx, h } from "./model/vnode";
25
+ export { escapeAttr, escapeText, toString as vnodeToString } from "./serialize/toString";
26
+ export { buildViewNode, renderViewToString } from "./model/view";
27
+ // S6: the RAW DOM (framework-free live forms).
28
+ export { toDOM } from "./serialize/toDOM";
29
+ export { createStore } from "./store/createStore";
30
+ export { FormController } from "./dom/controller";
31
+ export { defineFjsfElements } from "./dom/elements";
32
+ // S7: styling (§4.3): the generated default stylesheet, the theme variables and the class contract.
33
+ export { cssVarsToString, fjsfClassNames, fjsfSelectors, getDefaultStyles, themeToCssVars } from "./styles";
@@ -0,0 +1,5 @@
1
+ // P7 (§4.3): an element of a 2.x styled component that extends another carries the bases' classes too
2
+ // (styled-components folded them), so the generated rules of a base (e.g. CommonFieldWrapper) apply to it.
3
+ import { STYLED_CHAINS } from "./styledChains";
4
+ /** The classes with every extended component's bases, each once, bases first. */
5
+ export const expandClasses = (classes) => [...new Set(classes.flatMap((c) => STYLED_CHAINS[c] ?? [c]))];
@@ -0,0 +1,150 @@
1
+ import { isPlainObject, PROTOTYPE_KEYS } from "../../core/json";
2
+ import { parseDateString, toIsoDateString } from "../../core/dates";
3
+ import { getIn } from "../../core/paths";
4
+ import { BOOLEAN_RADIO_STORAGE, MULTI_SELECT_STORAGE } from "../../core/policies/storedFormats";
5
+ /** formik handleChange parsing, plus the enum const lookup of 2.x StringField and a boolean checkbox (Q-R19-1). */
6
+ const parse = (action, e) => {
7
+ switch (action.parse) {
8
+ case "number": {
9
+ const n = parseFloat(e.value ?? "");
10
+ return Number.isNaN(n) ? "" : n;
11
+ }
12
+ case "checkbox":
13
+ return !!e.checked;
14
+ case "enum":
15
+ return (action.consts ?? []).find((c) => c !== undefined && c !== null && String(c) === e.value) ?? e.value;
16
+ case "multi": {
17
+ // Q-FMK-7: 2.x stored the option strings (kept, MULTI_SELECT_STORAGE); "consts" maps them back.
18
+ const consts = action.consts;
19
+ if (MULTI_SELECT_STORAGE === "strings" || !consts)
20
+ return e.selected ?? [];
21
+ return (e.selected ?? []).map((s) => consts.find((c) => c !== undefined && c !== null && String(c) === s) ?? s);
22
+ }
23
+ case "radio":
24
+ // Q-FMK-5: 2.x stored the radio's string value (kept, BOOLEAN_RADIO_STORAGE).
25
+ return BOOLEAN_RADIO_STORAGE === "strings" ? e.value ?? "" : e.value === "true";
26
+ default:
27
+ return e.value ?? "";
28
+ }
29
+ };
30
+ const arrayAt = (values, path) => {
31
+ const current = getIn(values, path);
32
+ return Array.isArray(current) ? current : [];
33
+ };
34
+ /** Sets per-path UI state (`text`, `open`, `shown`, `active`). */
35
+ const patch = (ui, path, values) => {
36
+ const next = { ...ui };
37
+ for (const [key, value] of Object.entries(values)) {
38
+ next[key] = { ...ui[key], [path]: value };
39
+ }
40
+ return next;
41
+ };
42
+ export const applyAction = (action, values, e = {}, ui = {}) => {
43
+ switch (action.type) {
44
+ case "set":
45
+ return { set: { path: action.path, value: parse(action, e) } };
46
+ case "touch":
47
+ return { touch: action.path };
48
+ case "toggle":
49
+ return { set: { path: action.path, value: !getIn(values, action.path) } };
50
+ case "submit":
51
+ return { submit: true };
52
+ case "arrayAdd":
53
+ return { set: { path: action.path, value: [...arrayAt(values, action.path), action.item] } };
54
+ case "arrayRemove":
55
+ return { set: { path: action.path, value: arrayAt(values, action.path).filter((_, i) => i !== action.index) } };
56
+ case "arrayMove": {
57
+ const next = [...arrayAt(values, action.path)];
58
+ if (action.to < 0 || action.to >= next.length)
59
+ return {};
60
+ [next[action.from], next[action.to]] = [next[action.to], next[action.from]];
61
+ return { set: { path: action.path, value: next } };
62
+ }
63
+ case "propertyAdd": {
64
+ if (e.key === undefined)
65
+ return { askKey: true };
66
+ const object = (action.path ? getIn(values, action.path) : values);
67
+ const own = isPlainObject(object) ? object : {};
68
+ // SEC-8: a prototype key is never added (2.x wrote it through the spread).
69
+ if (!e.key || PROTOTYPE_KEYS.has(e.key) || Object.prototype.hasOwnProperty.call(own, e.key))
70
+ return {};
71
+ // Q-FMK-8: the type's empty value (2.x stored its DEFAULT_FIELD placeholder object as the value).
72
+ return { set: { path: action.path, value: { ...own, [e.key]: action.item } }, order: { path: action.path, previous: action.order, next: [...action.order, e.key] } };
73
+ }
74
+ case "propertyRemove": {
75
+ const object = (action.path ? getIn(values, action.path) : values);
76
+ const { [action.key]: _removed, ...rest } = isPlainObject(object) ? object : {};
77
+ return { set: { path: action.path, value: rest }, order: { path: action.path, previous: action.order, next: action.order.filter((k) => k !== action.key) } };
78
+ }
79
+ case "propertyMove":
80
+ return { order: { path: action.path, previous: action.order, next: action.next } };
81
+ case "collapse":
82
+ return { ui: { ...ui, collapsed: { ...ui.collapsed, [action.id]: action.collapsed } } };
83
+ case "anyType":
84
+ return { ui: { ...ui, anyTypes: { ...ui.anyTypes, [action.path]: e.value ?? "string" } } };
85
+ case "choice": {
86
+ // MultipleChoiceField: a checkbox toggles the const in the array, a radio sets it.
87
+ if (!action.multi)
88
+ return { set: { path: action.path, value: action.value } };
89
+ const current = arrayAt(values, action.path);
90
+ const next = current.includes(action.value) ? current.filter((v) => v !== action.value) : [...current, action.value];
91
+ return { set: { path: action.path, value: next } };
92
+ }
93
+ case "dateText":
94
+ return { ui: { ...ui, text: { ...ui.text, [action.path]: e.value ?? "" } } };
95
+ case "dateCommit": {
96
+ if (action.locked)
97
+ return {};
98
+ const raw = (e.value ?? "").trim();
99
+ const parsed = action.native ? (/^\d{4}-\d{2}-\d{2}$/.test(raw) ? raw : undefined) : (d => d && toIsoDateString(d))(parseDateString(raw, action.rules.order));
100
+ if (!parsed)
101
+ return action.native ? {} : { touchQuietly: action.path, error: { path: action.path, message: action.rules.invalid } };
102
+ const { min, max } = action.rules;
103
+ if ((min && parsed < min) || (max && parsed > max))
104
+ return { touchQuietly: action.path, error: { path: action.path, message: action.rules.outOfRange } };
105
+ const { [action.path]: _typed, ...text } = ui.text ?? {};
106
+ return { touchQuietly: action.path, error: { path: action.path }, set: { path: action.path, value: parsed }, ui: { ...ui, text } };
107
+ }
108
+ case "datePicker":
109
+ return action.locked ? {} : { picker: action.id };
110
+ case "searchInput":
111
+ return { ui: patch(ui, action.path, { text: e.value ?? "", shown: action.perPage, open: true, active: -1 }) };
112
+ case "searchOpen":
113
+ return { ui: patch(ui, action.path, { open: true }) };
114
+ case "searchLeave":
115
+ return e.leftContainer ? { ui: patch(ui, action.path, { open: false }) } : {};
116
+ case "searchClear":
117
+ return { ui: patch(ui, action.path, { text: "" }), set: { path: action.path, value: undefined } };
118
+ case "searchMore":
119
+ return { ui: patch(ui, action.path, { shown: (ui.shown?.[action.path] ?? action.perPage) + action.perPage }) };
120
+ case "searchSelect":
121
+ return { ui: patch(ui, action.path, { text: action.title, open: false }), set: { path: action.path, value: action.value } };
122
+ case "searchKey": {
123
+ if (!action.open)
124
+ return {};
125
+ const active = ui.active?.[action.path] ?? -1;
126
+ const last = action.items.length - 1;
127
+ if (e.keyName === "ArrowUp")
128
+ return { ui: patch(ui, action.path, { active: Math.max(-1, active - 1) }) };
129
+ if (e.keyName === "ArrowDown")
130
+ return { ui: patch(ui, action.path, { active: active + 1 >= last ? last : active + 1 }) };
131
+ if (e.keyName === "Escape")
132
+ return { ui: patch(ui, action.path, { open: false }) };
133
+ if (e.keyName === "Enter" && action.items[active])
134
+ return applyAction(action.items[active], values, e, ui);
135
+ return {};
136
+ }
137
+ case "searchText":
138
+ return { ui: patch(ui, action.path, { text: e.value ?? "" }) };
139
+ case "tagAdd":
140
+ return { ui: patch(ui, action.path, { text: "" }), set: { path: action.path, value: [...new Set([...arrayAt(values, action.path), action.value])] } };
141
+ case "tagRemove":
142
+ return { set: { path: action.path, value: arrayAt(values, action.path).filter((v) => v !== action.value) } };
143
+ case "preventDefault":
144
+ case "preventEnter":
145
+ case "searchActive":
146
+ return {};
147
+ case "info":
148
+ return action.display === "inline" ? { ui: { ...ui, infoOpen: { ...ui.infoOpen, [action.id]: !ui.infoOpen?.[action.id] } } } : {};
149
+ }
150
+ };
@@ -0,0 +1,23 @@
1
+ import { getIn } from "../../core/paths";
2
+ import { guessType } from "../../core/schemaType";
3
+ import { h } from "../vnode";
4
+ import { elementProps } from "../view/fields";
5
+ import { instrumentation } from "./chrome";
6
+ import { COMPONENT_TYPES, formField } from "./dispatch";
7
+ import { plain } from "./markup";
8
+ export const anyField = (ctx, p, chain, trail = []) => {
9
+ const value = getIn(ctx.values, p.name);
10
+ // 2.x guessed once, on mount (useState): the guess is kept by the host, so clearing a number keeps a number.
11
+ const kept = ctx.ui.anyTypes?.[p.name];
12
+ const type = kept ?? (value !== undefined ? guessType(value) : "string");
13
+ if (!kept)
14
+ ctx.anyGuesses[p.name] = type;
15
+ const extra = type === "object" ? { additionalProperties: {} } : type === "array" ? { additionalItems: {} } : {};
16
+ const enriched = { ...(p.schema || {}), type, ...extra };
17
+ const select = {
18
+ ...h("select", { value: type }, Object.keys(COMPONENT_TYPES).map((t) => h("option", { value: t }, t))),
19
+ on: { change: { type: "anyType", path: p.name } },
20
+ };
21
+ const { wrapperAttrs } = elementProps(p.ui, p.name, ctx.sink);
22
+ return plain("div", "AnyFieldWrapper", { ...wrapperAttrs, ...instrumentation({ ...p, kind: "any" }) }, select, formField(ctx, { name: p.name, schema: enriched, ui: p.ui }, chain, trail));
23
+ };
@@ -0,0 +1,27 @@
1
+ import { defaultFor } from "../../core/defaults";
2
+ import { isPlainObject } from "../../core/json";
3
+ import { getIn, setIn } from "../../core/paths";
4
+ /** The nodes that appeared in this render and not in the previous one; `seen` becomes this render's set. */
5
+ export const newAppearances = (appeared, seen) => {
6
+ const fresh = appeared.filter((a) => !seen.has(a.path));
7
+ seen.clear();
8
+ appeared.forEach((a) => seen.add(a.path));
9
+ return fresh;
10
+ };
11
+ /** The values with the defaults of the fresh nodes and the prunes applied (the same object when nothing changes). */
12
+ export const settle = (values, fresh, prune, now) => {
13
+ let next = values;
14
+ for (const a of fresh) {
15
+ const value = defaultFor(a.schema, getIn(next, a.path), { forceDefaultValue: a.forceDefaultValue, now });
16
+ if (value !== undefined && value !== getIn(next, a.path))
17
+ next = setIn(next, a.path, value);
18
+ }
19
+ for (const { path, keys } of prune) {
20
+ const object = path ? getIn(next, path) : next;
21
+ if (!isPlainObject(object) || !keys.some((k) => k in object))
22
+ continue;
23
+ const kept = Object.fromEntries(Object.entries(object).filter(([k]) => !keys.includes(k)));
24
+ next = path ? setIn(next, path, kept) : kept;
25
+ }
26
+ return next;
27
+ };
@@ -0,0 +1,65 @@
1
+ import { itemSchema, normalizeArraySchema } from "../../core/arrays";
2
+ import { EnumsTypes, getEnums } from "../../core/enums";
3
+ import { issue } from "../../core/issues";
4
+ import { getIn } from "../../core/paths";
5
+ import { defaultValueForType } from "../../core/schemaType";
6
+ import { extractUiSchema } from "../../core/uiSchema";
7
+ import { h } from "../vnode";
8
+ import { reactAttr, reactText } from "../view/values";
9
+ import { errorMarkup, formChrome } from "./chrome";
10
+ import { formField } from "./dispatch";
11
+ import { inputAttrs, on } from "./leaf";
12
+ import { arrayTemplateMarkup, fc, fcAs, fieldTemplateMarkup, plain } from "./markup";
13
+ import { prepareChildSchema } from "./object";
14
+ import { buttonMarkup } from "./parts";
15
+ import { templated } from "./templated";
16
+ /** `anyOf` arrays: a (multi-)select of the consts (2.x ArrayField's first branch). */
17
+ const enumArray = (ctx, p) => {
18
+ const enums = getEnums({ schema: p.schema }, ctx.sink, p.name);
19
+ const multiple = enums?.type === EnumsTypes.MULTI_SELECT;
20
+ const props = { ...p, kind: multiple ? "multi-enum" : "enum", data: { "data-fjsf-array": p.name } };
21
+ const value = getIn(ctx.values, p.name);
22
+ const selected = multiple ? (Array.isArray(value) ? value.map((v) => reactAttr(v) ?? "") : []) : reactAttr(value) ?? "";
23
+ const select = {
24
+ ...fcAs("select", ["SelectFieldInput"], { ...inputAttrs(ctx, props), name: p.name, readonly: p.schema?.readOnly ? true : undefined, multiple: multiple || undefined, value: selected }, (enums?.values ?? []).map((o) => h("option", { value: reactAttr(o?.const) ?? "" }, reactText(o?.title)))),
25
+ // Q-FMK-7: a multi-select stores the consts (2.x stored their strings); Q-RO-1: readOnly never changes.
26
+ on: on(props, multiple ? "multi" : "text", multiple ? (enums?.values ?? []).map((o) => o?.const) : undefined),
27
+ };
28
+ const content = [fc(["SelectFieldInputWrapper"], {}, select)];
29
+ return templated(ctx, "FieldTemplate", props, fieldTemplateMarkup(formChrome(ctx, props), content), content);
30
+ };
31
+ /** N-1 value guard: arr[0]'s value as text, like FormView (§6.3). */
32
+ const guardedItem = (ctx, path, item, schema) => {
33
+ ctx.sink(issue("SCHEMA_ARRAY_AMBIGUOUS", path, "arr[0] does not match additionalItems: read-only"));
34
+ return plain("div", "GuardedArrayItem", { "data-fjsf-path": path, "data-fjsf-kind": "string", "data-fjsf-readonly": "true" }, h("div", { "data-keyword": reactAttr(item) }, reactText(item)));
35
+ };
36
+ export const arrayField = (ctx, p, _chain) => {
37
+ if (p.schema?.anyOf !== undefined)
38
+ return enumArray(ctx, p);
39
+ const { name, schema, ui } = p;
40
+ const extracted = extractUiSchema(ui);
41
+ const norm = normalizeArraySchema(schema, ctx.sink, name);
42
+ const raw = getIn(ctx.values, name);
43
+ const values = Array.isArray(raw) ? raw : undefined;
44
+ const locked = !!extracted.disabled || !!schema?.readOnly;
45
+ const slots = (values ?? []).map((item, index) => itemSchema(norm, index, item));
46
+ const items = (values ?? []).map((item, index) => {
47
+ const path = `${name}[${index}]`;
48
+ const { schema: s, guarded, fixed } = slots[index];
49
+ const field = guarded
50
+ ? guardedItem(ctx, path, item, s)
51
+ : // Items are bounded by the data: a new $ref chain.
52
+ formField(ctx, { name: path, schema: prepareChildSchema(s, schema), ui: { disabled: extracted.disabled, ...(ui?.[index] || ui?.items) }, forceDefaultValue: !fixed }, []);
53
+ const move = (to) => ({ type: "arrayMove", path: name, from: index, to });
54
+ const buttons = locked || fixed
55
+ ? null
56
+ : fc(["ArrayFieldItemButtons"], {}, buttonMarkup(extracted.removeButton, "ArrayFieldRemoveButton", "remove", path, "-", { type: "arrayRemove", path: name, index }), !guarded && index > norm.fixed.length && !slots[index - 1]?.guarded ? buttonMarkup(extracted.upButton, "ArrayFieldUpButton", "up", path, "↑", move(index - 1)) : null, !guarded && index < values.length - 1 ? buttonMarkup(extracted.downButton, "ArrayFieldDownButton", "down", path, "↓", move(index + 1)) : null);
57
+ return fc(["ArrayFieldItem"], {}, field, buttons);
58
+ });
59
+ const props = { ...p, kind: "array", data: { "data-fjsf-array": name } };
60
+ const error = typeof getIn(ctx.errors, name) === "string" ? errorMarkup(ctx, name, extracted.props?.error) : null;
61
+ const chrome = { ...formChrome(ctx, props, false), error };
62
+ const template = templated(ctx, "ArrayFieldTemplate", props, arrayTemplateMarkup(chrome, items), items, { items: values, itemNodes: items });
63
+ const add = norm.tail && !locked ? buttonMarkup(extracted.addButton, "ArrayFieldAddButton", "add", name, "+", { type: "arrayAdd", path: name, item: defaultValueForType(norm.tail.type) }) : null;
64
+ return h("#fragment", {}, template, add);
65
+ };
@@ -0,0 +1,65 @@
1
+ import { choiceStyle } from "../../core/choiceStyle";
2
+ import { EnumsTypes, getEnums } from "../../core/enums";
3
+ import { isPlainObject } from "../../core/json";
4
+ import { getIn } from "../../core/paths";
5
+ import { BOOLEAN_RADIO_STORAGE } from "../../core/policies/storedFormats";
6
+ import { extractUiSchema } from "../../core/uiSchema";
7
+ import { reactAttr, reactText } from "../view/values";
8
+ import { formChrome } from "./chrome";
9
+ import { inputAttrs, on } from "./leaf";
10
+ import { fc, fcComposite, fieldTemplateMarkup } from "./markup";
11
+ import { templated } from "./templated";
12
+ const field = (ctx, p, content) => templated(ctx, "FieldTemplate", p, fieldTemplateMarkup(formChrome(ctx, p), content), content);
13
+ const control = (p) => ({ name: p.name, readonly: p.schema?.readOnly ? true : undefined });
14
+ /** RadioField: true/false radios. formik checked them by strict equality with the string value (kept). */
15
+ export const radioField = (ctx, p) => {
16
+ const props = { ...p, data: { "data-fjsf-boolean": p.name }, kind: "radio" };
17
+ const label = extractUiSchema(p.ui).label;
18
+ const markup = radioInputsMarkup(ctx, props, label);
19
+ return field(ctx, props, [fcComposite("RadioFieldInput", { inputProps: { readOnly: p.schema?.readOnly, ...extractUiSchema(p.ui).props }, label, name: p.name }, undefined, markup)]);
20
+ };
21
+ /** The RadioFieldInput markup (also the default of FormComponents.RadioFieldInput). */
22
+ export const radioInputsMarkup = (ctx, props, label) => {
23
+ const value = getIn(ctx.values, props.name);
24
+ const radio = (v, names) => fc(["RadioFieldElement"], {}, {
25
+ ...fc(["RadioFieldInputElement"], { ...inputAttrs(ctx, props), ...control(props), type: "radio", value: v, checked: BOOLEAN_RADIO_STORAGE === "strings" ? value === v : value === (v === "true") }),
26
+ on: on(props, "radio"),
27
+ }, fc(names, {}, reactText(isPlainObject(label) ? label[v] : undefined) || v));
28
+ return fc(["RadioFieldContainer"], {}, radio("true", ["RadioFieldLabelTrue"]), radio("false", ["RadioFieldLabelFalse"]));
29
+ };
30
+ /** ToggleField: a checkbox (stores a boolean, Q-R19-1) and the toggle. */
31
+ export const toggleField = (ctx, p) => {
32
+ const props = { ...p, data: { "data-fjsf-boolean": p.name }, kind: "toggle" };
33
+ return field(ctx, props, [fcComposite("ToggleFieldInput", { inputProps: { readOnly: p.schema?.readOnly, ...extractUiSchema(p.ui).props }, name: p.name }, undefined, toggleInputMarkup(ctx, props))]);
34
+ };
35
+ /** The ToggleFieldInput markup (also the default of FormComponents.ToggleFieldInput). */
36
+ export const toggleInputMarkup = (ctx, props) => {
37
+ const box = { ...fc(["ToggleFieldInputElement"], { ...inputAttrs(ctx, props), ...control(props), type: "checkbox", checked: !!getIn(ctx.values, props.name) }), on: on(props, "checkbox") };
38
+ return fc(["ToggleFieldLabel"], {}, box, fc(["ToggleFieldToggle"], {}));
39
+ };
40
+ /** MultipleChoiceField: one radio (single) or checkbox (multi) per option; stores the consts. */
41
+ export const multipleChoiceField = (ctx, p) => {
42
+ const enums = getEnums({ schema: p.schema }, ctx.sink, p.name);
43
+ const multi = enums?.type === EnumsTypes.MULTI_SELECT;
44
+ const type = p.schema?.type;
45
+ const data = type === "array" ? { "data-fjsf-array": p.name } : type === "number" ? { "data-fjsf-number": p.name } : { "data-fjsf-string": p.name };
46
+ const props = { ...p, data, kind: multi ? "multi-enum" : "enum" };
47
+ const ui = extractUiSchema(p.ui);
48
+ const compositeProps = { inputProps: { readOnly: p.schema?.readOnly, ...ui.props }, name: p.name, enums, style: ui.style, value: getIn(ctx.values, p.name) };
49
+ return field(ctx, props, [fcComposite("MultipleChoiceFieldInput", compositeProps, undefined, choicesInputMarkup(ctx, props, enums, ui.style))]);
50
+ };
51
+ /** The MultipleChoiceFieldInput markup (also the default of FormComponents.MultipleChoiceFieldInput). */
52
+ export const choicesInputMarkup = (ctx, props, enums, style) => {
53
+ const p = props;
54
+ const multi = enums?.type === EnumsTypes.MULTI_SELECT;
55
+ const raw = getIn(ctx.values, p.name);
56
+ const current = multi ? (Array.isArray(raw) ? raw : []) : raw;
57
+ const checked = (c) => (multi ? current.includes(c) : current === c);
58
+ const options = (enums?.values ?? []).map((o) => fc(["MultipleChoiceFieldElement"], { "data-fjsf-enum-value": reactAttr(o?.const) }, {
59
+ ...fc(["MultipleChoiceFieldInputElement"], { ...inputAttrs(ctx, props), ...control(props), type: multi ? "checkbox" : "radio", value: o?.const !== undefined ? reactAttr(o.const) ?? "" : "", checked: checked(o?.const) }),
60
+ on: p.schema?.readOnly
61
+ ? { click: { type: "preventDefault" }, blur: { type: "touch", path: p.name } }
62
+ : { change: { type: "choice", path: p.name, value: o?.const, multi }, blur: { type: "touch", path: p.name } },
63
+ }, fc(["MultipleChoiceFieldLabel"], {}, reactText(o?.title))));
64
+ return fc(["MultipleChoiceFieldContainer"], choiceStyle(style), options);
65
+ };
@@ -0,0 +1,58 @@
1
+ import { getIn } from "../../core/paths";
2
+ import { extractUiSchema } from "../../core/uiSchema";
3
+ import { elementProps } from "../view/fields";
4
+ import { descriptionOf, textOf, titleOf } from "../view/values";
5
+ import { fc, fcComposite, plain } from "./markup";
6
+ /** 2.x getInstrumentationAttributes. */
7
+ export const instrumentation = (p) => ({
8
+ "data-fjsf-path": p.name,
9
+ "data-fjsf-kind": p.kind,
10
+ "data-fjsf-required": p.required ? "true" : undefined,
11
+ "data-fjsf-readonly": p.schema?.readOnly ? "true" : undefined,
12
+ "data-fjsf-hidden": p.hidden ? "true" : undefined,
13
+ });
14
+ /** ErrorMessage (2.x: useField meta, shown when touched): a composite so pro3's HiddenErrorMessage can replace it. */
15
+ export const errorMarkup = (ctx, name, errorProps) => {
16
+ const error = getIn(ctx.errors, name);
17
+ const shown = getIn(ctx.touched, name) && typeof error === "string" && error ? plain("div", "ErrorText", {}, error) : null;
18
+ return fcComposite("ErrorMessage", { ...(errorProps && typeof errorProps === "object" ? errorProps : {}), name }, undefined, shown);
19
+ };
20
+ /** FieldInfo (ui:info): tooltip, or an inline box toggled by the info link (formOptions.components.FieldInfo.display). */
21
+ export const infoMarkup = (ctx, path, info) => {
22
+ if (!info || typeof info !== "object")
23
+ return null;
24
+ const display = info.display ?? ctx.formOptions?.components?.FieldInfo?.display ?? "tooltip";
25
+ const position = ["top", "right", "bottom", "left"].includes(info.position) ? info.position : "top";
26
+ const id = `${path}#info`;
27
+ const label = fc(["FieldInfoLabel"], {}, textOf(info.label) ?? "i");
28
+ const link = (...extra) => ({ ...fc(["FieldInfoContainer"], { "data-fjsf-button": "info", href: "#", class: info.className }, label, ...extra), on: { click: { type: "info", id, display } } });
29
+ const content = textOf(info.content);
30
+ const markup = display === "inline"
31
+ ? [link(), ctx.ui.infoOpen?.[id] ? fc(["InlineFieldInfoWrapper"], {}, fc(["InlineFieldInfoBoxInnerElement"], {}, content)) : null]
32
+ : [
33
+ link(fc(["FieldInfoBoxElement"],
34
+ // §4.3: the tooltip side for the generated styles (2.x: a `position` prop, top by default)
35
+ { role: "tooltip", "data-fjsf-info-position": position }, fc(["FieldInfoBoxArrowElement"], { "data-fjsf-info-position": position }), fc(["FieldInfoBoxInnerElement"], {}, content))),
36
+ ];
37
+ return fcComposite("FieldInfo", { ...info }, undefined, ...markup);
38
+ };
39
+ export const formChrome = (ctx, p, withError = true) => {
40
+ const extracted = extractUiSchema(p.ui);
41
+ const { wrapperAttrs, titleAttrs, descriptionAttrs } = elementProps(p.ui, p.name, ctx.sink);
42
+ const helpAttrs = elementProps({ "ui:props": { wrapper: extracted.props?.help } }, p.name, ctx.sink).wrapperAttrs;
43
+ return {
44
+ path: p.name,
45
+ // 2.x hid a property left out of ui:order through its wrapper style.
46
+ attrs: { ...wrapperAttrs, ...(p.hidden ? { style: [wrapperAttrs.style, "display:none"].filter(Boolean).join(";") } : {}), ...p.data, ...instrumentation(p) },
47
+ title: titleOf(p.ui, p.schema, p.name),
48
+ titleAttrs,
49
+ description: descriptionOf(p.ui, p.schema),
50
+ descriptionAttrs,
51
+ help: textOf(extracted.help),
52
+ helpAttrs,
53
+ required: p.required,
54
+ disabled: !!extracted.props?.disabled,
55
+ info: infoMarkup(ctx, p.name, extracted.info),
56
+ error: withError ? errorMarkup(ctx, p.name, extracted.props?.error) : null,
57
+ };
58
+ };
@@ -0,0 +1,145 @@
1
+ export const FORM_COMPONENTS = {
2
+ ArrayFieldAddButton: ["button", "ObjectFieldButton", "ArrayFieldButton", "ArrayFieldAddButton"],
3
+ ArrayFieldButton: ["button", "ObjectFieldButton", "ArrayFieldButton"],
4
+ ArrayFieldDownButton: ["button", "ObjectFieldButton", "ArrayFieldButton", "ArrayFieldLineButton", "ArrayFieldDownButton"],
5
+ ArrayFieldItem: ["li", "ObjectFieldItem", "ArrayFieldItem"],
6
+ ArrayFieldItemButtons: ["div", "ObjectFieldItemButtons"],
7
+ ArrayFieldLineButton: ["button", "ObjectFieldButton", "ArrayFieldButton", "ArrayFieldLineButton"],
8
+ ArrayFieldRemoveButton: ["button", "ObjectFieldButton", "ArrayFieldButton", "ArrayFieldLineButton", "ArrayFieldRemoveButton"],
9
+ ArrayFieldTemplateDescription: null,
10
+ ArrayFieldTemplateErrorMessage: null,
11
+ ArrayFieldTemplateHelp: null,
12
+ ArrayFieldTemplateIcon: null,
13
+ ArrayFieldTemplateInfo: null,
14
+ ArrayFieldTemplateRequiredIndicator: null,
15
+ ArrayFieldTemplateTitle: null,
16
+ ArrayFieldTemplateWrapper: null,
17
+ ArrayFieldTitleInfoWrapper: null,
18
+ ArrayFieldUpButton: ["button", "ObjectFieldButton", "ArrayFieldButton", "ArrayFieldLineButton", "ArrayFieldUpButton"],
19
+ BooleanFieldWrapper: ["div", "BooleanFieldWrapper"],
20
+ Clickable: "fn",
21
+ ClickableEl: ["button", "ClickableEl"],
22
+ CollapsibleObjectFieldTemplateChildWrapper: ["div", "CollapsibleObjectFieldTemplateChildWrapper"],
23
+ CollapsibleObjectFieldTemplateDescription: null,
24
+ CollapsibleObjectFieldTemplateErrorMessage: null,
25
+ CollapsibleObjectFieldTemplateHelp: null,
26
+ CollapsibleObjectFieldTemplateIcon: null,
27
+ CollapsibleObjectFieldTemplateInfo: null,
28
+ CollapsibleObjectFieldTemplateRequiredIndicator: null,
29
+ CollapsibleObjectFieldTemplateTitle: ["legend", "ObjectFieldTemplateTitle", "CollapsibleObjectFieldTemplateTitle"],
30
+ CollapsibleObjectFieldTemplateToggle: ["button", "CollapsibleObjectFieldTemplateToggle"],
31
+ CollapsibleObjectFieldTemplateWrapper: null,
32
+ CollapsibleObjectTitleInfoWrapper: null,
33
+ Divider: ["div", "Divider"],
34
+ DividerText: ["p", "DividerText"],
35
+ DragOverlay: ["div", "DragOverlay"],
36
+ ErrorMessage: "fn",
37
+ FieldDescription: ["p", "FieldDescription"],
38
+ FieldHelp: ["p", "FieldHelp"],
39
+ FieldInfo: "fn",
40
+ FieldInfoBoxArrowElement: ["div", "FieldInfoBoxArrowElement"],
41
+ FieldInfoBoxElement: ["div", "FieldInfoBoxElement"],
42
+ FieldInfoBoxInnerElement: ["div", "FieldInfoBoxInnerElement"],
43
+ FieldInfoContainer: ["a", "FieldInfoContainer"],
44
+ FieldInfoLabel: ["span", "FieldInfoLabel"],
45
+ FieldInput: ["input", "FieldInput"],
46
+ FieldTitle: ["label", "FieldTitle"],
47
+ FieldTitleInfoWrapper: ["div", "FieldTitleInfoWrapper"],
48
+ FieldWrapper: ["div", "FieldWrapper"],
49
+ FileInfoText: ["p", "FileInfoText"],
50
+ FileInfoTextMinimized: ["p", "FileInfoTextMinimized"],
51
+ FileItemContainer: ["div", "FileItemContainer"],
52
+ FileSize: ["span", "FileSize"],
53
+ FileTypeIcon: ["div", "FileTypeIcon"],
54
+ FileUploadButton: ["button", "FileUploadButton"],
55
+ FileUploadFieldContainer: ["div", "FileUploadFieldContainer"],
56
+ FileUploadFieldFileInfoText: ["span", "FileUploadFieldFileInfoText"],
57
+ FileUploadFieldFileItemContainer: ["div", "FileUploadFieldFileItemContainer"],
58
+ FileUploadFieldFileUploadButton: ["button", "FileUploadFieldFileUploadButton"],
59
+ FileUploadFieldHiddenFileInput: ["input", "FileUploadFieldHiddenFileInput"],
60
+ FileUploadFieldInput: "fn",
61
+ FileUploadFieldProgressBar: ["div", "FileUploadFieldProgressBar"],
62
+ FileUploadFieldProgressBarContainer: ["div", "FileUploadFieldProgressBarContainer"],
63
+ FileUploadFieldProgressText: ["span", "FileUploadFieldProgressText"],
64
+ FileUploadFieldRemoveButton: ["button", "FileUploadFieldRemoveButton"],
65
+ FileUploadText: ["a", "FileUploadText"],
66
+ FilesUploadFieldInput: "fn",
67
+ Form: ["form", "Form"],
68
+ FormButton: ["button", "FormButton"],
69
+ FormButtonWrapper: ["div", "FormButtonWrapper"],
70
+ HiddenFileInput: ["input", "HiddenFileInput"],
71
+ Icon: ["div", "Icon"],
72
+ IconWrapper: ["div", "IconWrapper"],
73
+ InfoText: ["p", "InfoText"],
74
+ InlineFieldInfoBoxInnerElement: ["div", "InlineFieldInfoBoxInnerElement"],
75
+ InlineFieldInfoWrapper: ["div", "InlineFieldInfoWrapper"],
76
+ MultipleChoiceFieldContainer: ["div", "RadioFieldContainer", "MultipleChoiceFieldContainer"],
77
+ MultipleChoiceFieldElement: ["label", "RadioFieldElement", "MultipleChoiceFieldElement"],
78
+ MultipleChoiceFieldInput: "fn",
79
+ MultipleChoiceFieldInputElement: ["input", "FieldInput", "RadioFieldInputElement", "MultipleChoiceFieldInputElement"],
80
+ MultipleChoiceFieldLabel: ["span", "RadioFieldLabel", "MultipleChoiceFieldLabel"],
81
+ ObjectFieldAddButton: ["button", "ObjectFieldButton", "ObjectFieldAddButton"],
82
+ ObjectFieldButton: ["button", "ObjectFieldButton"],
83
+ ObjectFieldDownButton: ["button", "ObjectFieldButton", "ObjectFieldDownButton"],
84
+ ObjectFieldItem: ["li", "ObjectFieldItem"],
85
+ ObjectFieldItemButtons: ["div", "ObjectFieldItemButtons"],
86
+ ObjectFieldRemoveButton: ["button", "ObjectFieldButton", "ObjectFieldRemoveButton"],
87
+ ObjectFieldSection: "fn",
88
+ ObjectFieldSectionChildrenWrapper: ["div", "ObjectFieldSectionChildrenWrapper"],
89
+ ObjectFieldSectionTitle: ["legend", "ObjectFieldSectionTitle"],
90
+ ObjectFieldSectionWrapper: ["fieldset", "ObjectFieldSectionWrapper"],
91
+ ObjectFieldTemplateDescription: null,
92
+ ObjectFieldTemplateErrorMessage: null,
93
+ ObjectFieldTemplateHelp: null,
94
+ ObjectFieldTemplateInfo: null,
95
+ ObjectFieldTemplateRequiredIndicator: null,
96
+ ObjectFieldTemplateTitle: ["legend", "ObjectFieldTemplateTitle"],
97
+ ObjectFieldTemplateWrapper: ["fieldset", "ObjectFieldTemplateWrapper"],
98
+ ObjectFieldTitleInfoWrapper: ["div", "ObjectFieldTitleInfoWrapper"],
99
+ ObjectFieldUpButton: ["button", "ObjectFieldButton", "ObjectFieldUpButton"],
100
+ ObjectFieldWrapper: ["div", "ObjectFieldWrapper"],
101
+ ProgressBar: ["div", "ProgressBar"],
102
+ ProgressBarContainer: ["div", "ProgressBarContainer"],
103
+ RadioFieldContainer: ["div", "RadioFieldContainer"],
104
+ RadioFieldElement: ["label", "RadioFieldElement"],
105
+ RadioFieldInput: "fn",
106
+ RadioFieldInputElement: ["input", "FieldInput", "RadioFieldInputElement"],
107
+ RadioFieldLabel: ["span", "RadioFieldLabel"],
108
+ RadioFieldLabelFalse: ["span", "RadioFieldLabel", "RadioFieldLabelFalse"],
109
+ RadioFieldLabelTrue: ["span", "RadioFieldLabel", "RadioFieldLabelTrue"],
110
+ RemoveButton: ["button", "RemoveButton"],
111
+ RemoveButtonIcon: ["svg", "RemoveButtonIcon"],
112
+ RequiredIndicator: ["span", "RequiredIndicator"],
113
+ SearchableMultiTagSelectFieldBadge: ["div", "SearchableMultiTagSelectFieldBadge"],
114
+ SearchableMultiTagSelectFieldBadgeCloseElement: ["button", "SearchableMultiTagSelectFieldBadgeCloseElement"],
115
+ SearchableMultiTagSelectFieldBadgeContainer: ["div", "SearchableMultiTagSelectFieldBadgeContainer"],
116
+ SearchableMultiTagSelectFieldContainer: ["div", "SearchableMultiTagSelectFieldContainer"],
117
+ SearchableMultiTagSelectFieldInput: "fn",
118
+ SearchableMultiTagSelectFieldInputElement: ["input", "FieldInput", "SearchableMultiTagSelectFieldInputElement"],
119
+ SearchableMultiTagSelectFieldOptionList: ["ul", "SearchableMultiTagSelectFieldOptionList"],
120
+ SearchableMultiTagSelectFieldOptionListItem: ["li", "SearchableMultiTagSelectFieldOptionListItem"],
121
+ SearchableMultiTagSelectFieldOptionListWithoutItem: ["li", "SearchableMultiTagSelectFieldOptionListWithoutItem"],
122
+ SearchableMultiTagSelectFieldSearchContainer: ["div", "SearchableMultiTagSelectFieldSearchContainer"],
123
+ SearchableSelectFieldClearButton: ["button", "SearchableSelectFieldClearButton"],
124
+ SearchableSelectFieldContainer: ["div", "SearchableMultiTagSelectFieldSearchContainer", "SearchableSelectFieldContainer"],
125
+ SearchableSelectFieldDropdownContainer: ["ul", "SearchableMultiTagSelectFieldOptionList", "SearchableSelectFieldDropdownContainer"],
126
+ SearchableSelectFieldInputContainer: ["div", "SearchableSelectFieldInputContainer"],
127
+ SearchableSelectFieldInputElement: ["input", "FieldInput", "SearchableSelectFieldInputElement"],
128
+ SearchableSelectFieldListExpand: ["li", "SearchableMultiTagSelectFieldOptionListItem", "SearchableSelectFieldListExpand"],
129
+ SearchableSelectFieldListOption: ["li", "SearchableMultiTagSelectFieldOptionListItem", "SearchableSelectFieldListOption"],
130
+ SearchableSelectFieldNotFound: ["li", "SearchableMultiTagSelectFieldOptionListItem", "SearchableSelectFieldNotFound"],
131
+ SelectFieldInput: ["input", "FieldInput", "SelectFieldInput"],
132
+ SelectFieldInputWrapper: ["div", "SelectFieldInputWrapper"],
133
+ TextAreaFieldInput: ["input", "FieldInput", "TextAreaFieldInput"],
134
+ ToggleFieldInput: "fn",
135
+ ToggleFieldInputElement: ["input", "FieldInput", "ToggleFieldInputElement"],
136
+ ToggleFieldLabel: ["label", "ToggleFieldLabel"],
137
+ ToggleFieldToggle: ["span", "ToggleFieldToggle"],
138
+ UploadIcon: ["svg", "UploadIcon"],
139
+ UploadedFileInfoContainer: ["div", "UploadedFileInfoContainer"],
140
+ UploadedFileItemContainer: ["div", "UploadedFileItemContainer"],
141
+ UploadedFileName: ["div", "UploadedFileName"],
142
+ UploadedFileWrapper: ["div", "UploadedFileWrapper"],
143
+ UploadingFileName: ["div", "UploadingFileName"],
144
+ getComponents: "fn",
145
+ };
@@ -0,0 +1,48 @@
1
+ import { formatForDisplay, preferOrderOf } from "../../core/dates";
2
+ import { isPlainObject } from "../../core/json";
3
+ import { getIn } from "../../core/paths";
4
+ import { extractUiSchema } from "../../core/uiSchema";
5
+ import { h } from "../vnode";
6
+ import { reactAttr, reactText } from "../view/values";
7
+ import { formChrome } from "./chrome";
8
+ import { iconMarkup } from "./icons";
9
+ import { fieldTemplateMarkup, plain } from "./markup";
10
+ import { templated } from "./templated";
11
+ export const dateRules = (ctx, ui) => {
12
+ const props = isPlainObject(extractUiSchema(ui).props) ? extractUiSchema(ui).props : {};
13
+ const min = typeof props.min === "string" ? props.min : undefined;
14
+ const max = typeof props.max === "string" ? props.max : undefined;
15
+ const raw = props.errorMessages?.outOfRange;
16
+ const fallback = (min && max && `Date must be between ${min} and ${max}.`) || "Date is out of range.";
17
+ const outOfRange = typeof raw === "function" ? String(raw({ min, max })) : (typeof raw === "string" ? raw : fallback).replace(/\{min\}/g, min ?? "").replace(/\{max\}/g, max ?? "");
18
+ const locale = [props.locale, ctx.formLocalization?.fields?.DateField?.locale, ctx.locale].find((l) => typeof l === "string" && l) ?? "en-US";
19
+ return { locale, min, max, invalid: typeof props.errorMessages?.invalid === "string" ? props.errorMessages.invalid : "Enter a valid date", outOfRange };
20
+ };
21
+ export const dateField = (ctx, p) => {
22
+ const props = { ...p, data: { "data-fjsf-string": p.name }, kind: "date" };
23
+ const ui = extractUiSchema(p.ui);
24
+ const inputProps = isPlainObject(ui.props) ? ui.props : {};
25
+ const rules = dateRules(ctx, p.ui);
26
+ const value = getIn(ctx.values, p.name);
27
+ const readOnly = p.schema?.readOnly === true;
28
+ const disabled = inputProps.disabled ? true : undefined;
29
+ const shown = ctx.ui.text?.[p.name] ?? formatForDisplay(value, rules.locale);
30
+ const error = !!getIn(ctx.errors, p.name) && !!getIn(ctx.touched, p.name);
31
+ const commit = { type: "dateCommit", path: p.name, rules: { ...rules, order: preferOrderOf(rules.locale) }, locked: readOnly || !!disabled };
32
+ const display = {
33
+ ...plain("input", "DisplayInput", {
34
+ id: `${p.name}-display`, type: "text", placeholder: reactAttr(inputProps.placeholder), autocomplete: "off", inputmode: "numeric",
35
+ "aria-describedby": inputProps.helpText ? `${p.name}-help` : undefined, "aria-invalid": String(error), value: shown, disabled, readonly: readOnly || undefined,
36
+ }),
37
+ on: { change: { type: "dateText", path: p.name }, blur: commit, paste: commit },
38
+ };
39
+ const native = readOnly
40
+ ? null
41
+ : { ...plain("input", "HiddenNative", { id: `${p.name}-native`, type: "date", min: rules.min, max: rules.max, value: typeof value === "string" ? value : "", tabindex: "-1", "aria-hidden": "true" }), on: { change: { ...commit, native: true } } };
42
+ const picker = readOnly
43
+ ? null
44
+ : { ...plain("button", "PickerButton", { type: "button", "aria-label": "Date picker", title: "Date picker", disabled }, iconMarkup("FaCalendar")), on: { click: { type: "datePicker", id: `${p.name}-native`, locked: !!disabled } } };
45
+ // 2.x: `CommonFieldWrapper as DateFieldWrapper` (DateField.tsx:10)
46
+ const content = [plain("div", "CommonFieldWrapper", {}, h("label", { for: `${p.name}-display` }, reactText(inputProps.label)), plain("div", "Row", {}, display, native, picker))];
47
+ return templated(ctx, "FieldTemplate", props, fieldTemplateMarkup(formChrome(ctx, props), content), content);
48
+ };