@wise/dynamic-flow-client 5.28.0 → 5.29.0-experimental-f7c2300

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 (485) hide show
  1. package/build/main.css +24 -0
  2. package/build/main.js +299 -167
  3. package/build/main.mjs +299 -167
  4. package/build/tsconfig.types.tsbuildinfo +1 -1
  5. package/build/types/domain/components/collectionComponent/CollectionComponent.d.ts +5 -5
  6. package/build/types/domain/components/collectionComponent/CollectionComponent.d.ts.map +1 -1
  7. package/build/types/domain/components/collectionComponent/CollectionState.d.ts +19 -0
  8. package/build/types/domain/components/collectionComponent/CollectionState.d.ts.map +1 -0
  9. package/build/types/domain/components/collectionComponent/mergeSections.d.ts +3 -0
  10. package/build/types/domain/components/collectionComponent/mergeSections.d.ts.map +1 -0
  11. package/build/types/domain/components/collectionComponent/types.d.ts +42 -14
  12. package/build/types/domain/components/collectionComponent/types.d.ts.map +1 -1
  13. package/build/types/domain/features/collection/getPerformCollectionQuery.d.ts +2 -2
  14. package/build/types/domain/features/collection/getPerformCollectionQuery.d.ts.map +1 -1
  15. package/build/types/domain/mappers/layout/collectionLayoutToComponent.d.ts +3 -3
  16. package/build/types/domain/mappers/layout/collectionLayoutToComponent.d.ts.map +1 -1
  17. package/build/types/renderers/mappers/collectionComponentToProps.d.ts.map +1 -1
  18. package/package.json +6 -5
  19. package/build/DynamicFlowCore.js +0 -5
  20. package/build/common/capabilities/getHttpClientWithCapabilities.js +0 -41
  21. package/build/common/capabilities/getHttpClientWithCapabilities.test.js +0 -106
  22. package/build/common/capabilities/index.js +0 -1
  23. package/build/common/errorBoundary/ErrorBoundary.js +0 -26
  24. package/build/common/errorBoundary/ErrorBoundary.test.js +0 -29
  25. package/build/common/errorBoundary/ErrorBoundaryAlert.js +0 -11
  26. package/build/common/makeHttpClient/api-utils.js +0 -3
  27. package/build/common/makeHttpClient/index.js +0 -1
  28. package/build/common/makeHttpClient/makeHttpClient.js +0 -10
  29. package/build/common/makeHttpClient/makeHttpClient.test.js +0 -186
  30. package/build/common/messages/download.messages.js +0 -18
  31. package/build/common/messages/external-confirmation.messages.js +0 -23
  32. package/build/common/messages/file-upload.messages.js +0 -13
  33. package/build/common/messages/generic-error.messages.js +0 -18
  34. package/build/common/messages/help.messages.js +0 -8
  35. package/build/common/messages/multi-file-upload.messages.js +0 -18
  36. package/build/common/messages/multi-select.messages.js +0 -8
  37. package/build/common/messages/paragraph.messages.js +0 -13
  38. package/build/common/messages/repeatable.messages.js +0 -23
  39. package/build/common/messages/search.messages.js +0 -8
  40. package/build/common/messages/validation.array.messages.js +0 -13
  41. package/build/common/messages/validation.messages.js +0 -53
  42. package/build/controller/FlowController.js +0 -400
  43. package/build/controller/executeDownload.js +0 -86
  44. package/build/controller/executePoll.js +0 -65
  45. package/build/controller/executeRefresh.js +0 -45
  46. package/build/controller/executeRequest.js +0 -93
  47. package/build/controller/executeSubflow.js +0 -71
  48. package/build/controller/executeSubmission.js +0 -68
  49. package/build/controller/getErrorMessage.js +0 -7
  50. package/build/controller/getFilenameFromContentDisposition.js +0 -47
  51. package/build/controller/getFilenameFromContentDisposition.test.js +0 -47
  52. package/build/controller/getRequestAbortController.js +0 -13
  53. package/build/controller/getResponseType.js +0 -35
  54. package/build/controller/getSafeHttpClient.js +0 -8
  55. package/build/controller/getStepCounter.js +0 -16
  56. package/build/controller/handleErrorResponse.js +0 -26
  57. package/build/controller/makeSafeHttpClient.js +0 -8
  58. package/build/controller/response-utils.js +0 -72
  59. package/build/controller/response-utils.test.js +0 -52
  60. package/build/domain/components/AlertComponent.js +0 -2
  61. package/build/domain/components/AllOfComponent.js +0 -47
  62. package/build/domain/components/BooleanInputComponent.js +0 -48
  63. package/build/domain/components/BoxComponent.js +0 -12
  64. package/build/domain/components/ButtonComponent.js +0 -2
  65. package/build/domain/components/ColumnsComponent.js +0 -12
  66. package/build/domain/components/ConstComponent.js +0 -20
  67. package/build/domain/components/ContainerComponent.js +0 -12
  68. package/build/domain/components/DateInputComponent.js +0 -73
  69. package/build/domain/components/DecisionComponent.js +0 -2
  70. package/build/domain/components/DividerComponent.js +0 -2
  71. package/build/domain/components/FormComponent.js +0 -12
  72. package/build/domain/components/FormattedValueComponent.js +0 -47
  73. package/build/domain/components/HeadingComponent.js +0 -2
  74. package/build/domain/components/ImageComponent.js +0 -2
  75. package/build/domain/components/InstructionsComponent.js +0 -2
  76. package/build/domain/components/IntegerInputComponent.js +0 -75
  77. package/build/domain/components/ListComponent.js +0 -2
  78. package/build/domain/components/LoadingIndicatorComponent.js +0 -2
  79. package/build/domain/components/MarkdownComponent.js +0 -2
  80. package/build/domain/components/MediaComponent.js +0 -2
  81. package/build/domain/components/ModalComponent.js +0 -20
  82. package/build/domain/components/ModalLayoutComponent.js +0 -12
  83. package/build/domain/components/MoneyInputComponent.js +0 -56
  84. package/build/domain/components/MultiSelectInputComponent.js +0 -86
  85. package/build/domain/components/MultiUploadInputComponent.js +0 -86
  86. package/build/domain/components/NumberInputComponent.js +0 -74
  87. package/build/domain/components/ObjectComponent.js +0 -54
  88. package/build/domain/components/ParagraphComponent.js +0 -2
  89. package/build/domain/components/PersistAsyncComponent.js +0 -96
  90. package/build/domain/components/ProgressComponent.js +0 -2
  91. package/build/domain/components/RepeatableComponent.js +0 -106
  92. package/build/domain/components/ReviewComponent.js +0 -2
  93. package/build/domain/components/RootDomainComponent.js +0 -193
  94. package/build/domain/components/SectionComponent.js +0 -12
  95. package/build/domain/components/SelectInputComponent.js +0 -96
  96. package/build/domain/components/StatusListComponent.js +0 -2
  97. package/build/domain/components/SubflowComponent.js +0 -19
  98. package/build/domain/components/TabsComponent.js +0 -2
  99. package/build/domain/components/TextInputComponent.js +0 -77
  100. package/build/domain/components/TupleComponent.js +0 -48
  101. package/build/domain/components/UpdatableComponent.js +0 -46
  102. package/build/domain/components/UploadInputComponent.js +0 -78
  103. package/build/domain/components/UpsellComponent.js +0 -26
  104. package/build/domain/components/collectionComponent/CollectionComponent.js +0 -174
  105. package/build/domain/components/collectionComponent/CollectionComponent.test.js +0 -286
  106. package/build/domain/components/collectionComponent/types.js +0 -1
  107. package/build/domain/components/searchComponent/SearchComponent.js +0 -91
  108. package/build/domain/components/searchComponent/SearchComponent.test.js +0 -190
  109. package/build/domain/components/step/ExternalConfirmationComponent.js +0 -27
  110. package/build/domain/components/step/StepDomainComponent.js +0 -153
  111. package/build/domain/components/step/ToolbarComponent.js +0 -1
  112. package/build/domain/components/utils/component-utils.js +0 -12
  113. package/build/domain/components/utils/debounce.js +0 -34
  114. package/build/domain/components/utils/debounce.test.js +0 -67
  115. package/build/domain/components/utils/file-utils.js +0 -21
  116. package/build/domain/components/utils/file-utils.test.js +0 -27
  117. package/build/domain/components/utils/getRandomId.js +0 -1
  118. package/build/domain/components/utils/isExactLocalValueMatch.js +0 -14
  119. package/build/domain/components/utils/isOrWasValid.js +0 -5
  120. package/build/domain/components/utils/isPartialModelMatch.js +0 -18
  121. package/build/domain/components/utils/isPartialModelMatch.test.js +0 -74
  122. package/build/domain/features/collection/getPerformCollectionQuery.js +0 -80
  123. package/build/domain/features/collection/getPerformCollectionQuery.test.js +0 -223
  124. package/build/domain/features/delay/getStepDelays.js +0 -37
  125. package/build/domain/features/delay/getStepDelays.test.js +0 -69
  126. package/build/domain/features/domain-event-bus/DomainEventBus.js +0 -24
  127. package/build/domain/features/domain-event-bus/index.js +0 -1
  128. package/build/domain/features/domain-event-bus/types.js +0 -1
  129. package/build/domain/features/eventNames.js +0 -41
  130. package/build/domain/features/events.js +0 -5
  131. package/build/domain/features/persistAsync/getComponentMultiPersistAsync.js +0 -50
  132. package/build/domain/features/persistAsync/getInitialPersistedState.js +0 -7
  133. package/build/domain/features/persistAsync/getPerformPersistAsync.js +0 -43
  134. package/build/domain/features/persistAsync/getPerformPersistAsync.test.js +0 -139
  135. package/build/domain/features/polling/getStepPolling.js +0 -50
  136. package/build/domain/features/polling/getStepPolling.test.js +0 -115
  137. package/build/domain/features/prefetch/getStepPrefetch.js +0 -56
  138. package/build/domain/features/prefetch/request-cache.js +0 -49
  139. package/build/domain/features/prefetch/request-cache.test.js +0 -70
  140. package/build/domain/features/refreshAfter/getStepRefreshAfter.js +0 -24
  141. package/build/domain/features/refreshAfter/getStepRefreshAfter.test.js +0 -40
  142. package/build/domain/features/schema-on-change/getDebouncedSchemaOnChange.js +0 -50
  143. package/build/domain/features/schema-on-change/getSchemaOnChange.js +0 -38
  144. package/build/domain/features/search/getPerformSearchFunction.js +0 -75
  145. package/build/domain/features/search/getPerformSearchFunction.test.js +0 -301
  146. package/build/domain/features/summary/summary-utils.js +0 -37
  147. package/build/domain/features/summary/summary-utils.test.js +0 -125
  148. package/build/domain/features/updatable/getPerformUpdateQuery.js +0 -52
  149. package/build/domain/features/utils/http-utils.js +0 -21
  150. package/build/domain/features/utils/response-utils.js +0 -9
  151. package/build/domain/features/validation/date-availability.js +0 -54
  152. package/build/domain/features/validation/date-availability.test.js +0 -54
  153. package/build/domain/features/validation/getPatternRegExp.js +0 -25
  154. package/build/domain/features/validation/spec-utils.js +0 -23
  155. package/build/domain/features/validation/validation-functions.js +0 -6
  156. package/build/domain/features/validation/validation-functions.test.js +0 -108
  157. package/build/domain/features/validation/value-checks.js +0 -130
  158. package/build/domain/features/validation/value-checks.test.js +0 -297
  159. package/build/domain/features/validationAsync/getComponentValidationAsync.js +0 -57
  160. package/build/domain/features/validationAsync/getComponentValidationAsync.test.js +0 -67
  161. package/build/domain/features/validationAsync/getInitialValidationAsyncState.js +0 -6
  162. package/build/domain/features/validationAsync/getPerformValidationAsync.js +0 -46
  163. package/build/domain/features/validationAsync/getPerformValidationAsync.test.js +0 -162
  164. package/build/domain/handlers/dismissHandler.js +0 -11
  165. package/build/domain/mappers/layout/alertLayoutToComponent.js +0 -18
  166. package/build/domain/mappers/layout/boxLayoutToComponent.js +0 -13
  167. package/build/domain/mappers/layout/buttonLayoutToComponent.js +0 -77
  168. package/build/domain/mappers/layout/collectionLayoutToComponent.js +0 -49
  169. package/build/domain/mappers/layout/columnsLayoutToComponent.js +0 -13
  170. package/build/domain/mappers/layout/decisionLayoutToComponent.js +0 -24
  171. package/build/domain/mappers/layout/deprecatedListLayoutToComponent.js +0 -30
  172. package/build/domain/mappers/layout/dividerLayoutToComponent.js +0 -2
  173. package/build/domain/mappers/layout/formLayoutToComponent.js +0 -19
  174. package/build/domain/mappers/layout/headingLayoutToComponent.js +0 -12
  175. package/build/domain/mappers/layout/imageLayoutToComponent.js +0 -17
  176. package/build/domain/mappers/layout/infoLayoutToComponent.js +0 -12
  177. package/build/domain/mappers/layout/instructionsLayoutToComponent.js +0 -12
  178. package/build/domain/mappers/layout/listLayoutToComponent.js +0 -39
  179. package/build/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +0 -9
  180. package/build/domain/mappers/layout/markdownLayoutToComponent.js +0 -12
  181. package/build/domain/mappers/layout/mediaLayoutToComponent.js +0 -12
  182. package/build/domain/mappers/layout/modalLayoutToComponent.js +0 -17
  183. package/build/domain/mappers/layout/modalToComponent.js +0 -8
  184. package/build/domain/mappers/layout/paragraphLayoutToComponent.js +0 -12
  185. package/build/domain/mappers/layout/progressLayoutToComponent.js +0 -15
  186. package/build/domain/mappers/layout/reviewLayoutToComponent.js +0 -49
  187. package/build/domain/mappers/layout/searchLayoutToComponent.js +0 -44
  188. package/build/domain/mappers/layout/sectionLayoutToComponent.js +0 -16
  189. package/build/domain/mappers/layout/statusListLayoutToComponent.js +0 -15
  190. package/build/domain/mappers/layout/tabsLayoutToComponent.js +0 -16
  191. package/build/domain/mappers/layout/updatableLayoutToComponent.js +0 -39
  192. package/build/domain/mappers/layout/upsellLayoutToComponent.js +0 -18
  193. package/build/domain/mappers/mapLayoutToComponent.js +0 -87
  194. package/build/domain/mappers/mapSchemaToComponent.js +0 -65
  195. package/build/domain/mappers/mapSchemaToComponent.test.js +0 -116
  196. package/build/domain/mappers/mapStepSchemas.js +0 -14
  197. package/build/domain/mappers/mapStepToComponent.js +0 -145
  198. package/build/domain/mappers/mapStepToComponent.test.js +0 -319
  199. package/build/domain/mappers/mapToolbarToComponent.js +0 -15
  200. package/build/domain/mappers/schema/allOfSchemaToComponent.js +0 -17
  201. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +0 -26
  202. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiSelectComponent.js +0 -56
  203. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +0 -66
  204. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +0 -58
  205. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToTupleComponent.js +0 -18
  206. package/build/domain/mappers/schema/blobSchemaToComponent.js +0 -15
  207. package/build/domain/mappers/schema/booleanSchemaToComponent.js +0 -29
  208. package/build/domain/mappers/schema/constSchemaToComponent.js +0 -23
  209. package/build/domain/mappers/schema/dateSchemaToComponent.js +0 -56
  210. package/build/domain/mappers/schema/dateSchemaToComponent.test.js +0 -112
  211. package/build/domain/mappers/schema/integerSchemaToComponent.js +0 -28
  212. package/build/domain/mappers/schema/numberSchemaToComponent.js +0 -26
  213. package/build/domain/mappers/schema/objectSchemaToComponent/assertDisplayOrder.js +0 -23
  214. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToFormattedValueComponent.js +0 -9
  215. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.js +0 -119
  216. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.test.js +0 -97
  217. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.js +0 -32
  218. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.test.js +0 -99
  219. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +0 -67
  220. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.test.js +0 -225
  221. package/build/domain/mappers/schema/persistAsyncSchemaToComponent.js +0 -29
  222. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +0 -18
  223. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.test.js +0 -133
  224. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +0 -38
  225. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +0 -28
  226. package/build/domain/mappers/schema/tests/test-utils.js +0 -16
  227. package/build/domain/mappers/schema/types.js +0 -1
  228. package/build/domain/mappers/schema/utils/getPerformPersistAsyncFn.js +0 -19
  229. package/build/domain/mappers/schema/utils/getValidationAsyncInitialState.js +0 -23
  230. package/build/domain/mappers/schema/utils/mapCommonSchemaProps.js +0 -16
  231. package/build/domain/mappers/types.js +0 -1
  232. package/build/domain/mappers/utils/FeatureFlags.js +0 -22
  233. package/build/domain/mappers/utils/behavior-utils.js +0 -52
  234. package/build/domain/mappers/utils/call-to-action-utils.js +0 -24
  235. package/build/domain/mappers/utils/getAutocompleteString.js +0 -76
  236. package/build/domain/mappers/utils/getAutocompleteString.test.js +0 -21
  237. package/build/domain/mappers/utils/getHrefWithTracking.js +0 -16
  238. package/build/domain/mappers/utils/groupLayoutByPinned.js +0 -38
  239. package/build/domain/mappers/utils/groupLayoutByPinned.test.js +0 -166
  240. package/build/domain/mappers/utils/image.js +0 -6
  241. package/build/domain/mappers/utils/layout-utils.js +0 -11
  242. package/build/domain/mappers/utils/legacy-utils.js +0 -49
  243. package/build/domain/mappers/utils/media-utils.js +0 -14
  244. package/build/domain/mappers/utils/suggestions-utils.js +0 -26
  245. package/build/domain/mappers/utils/suggestions-utils.test.js +0 -36
  246. package/build/domain/mappers/utils/tags-utils.js +0 -1
  247. package/build/domain/mappers/utils/utils.js +0 -45
  248. package/build/domain/types.js +0 -1
  249. package/build/i18n/index.js +0 -40
  250. package/build/index.js +0 -9
  251. package/build/renderers/CoreContainerRenderer.js +0 -5
  252. package/build/renderers/CoreRootRenderer.js +0 -12
  253. package/build/renderers/EmptyLoadingStateRenderer.js +0 -5
  254. package/build/renderers/getRenderFunction.js +0 -24
  255. package/build/renderers/getSchemaErrorMessageFunction.js +0 -111
  256. package/build/renderers/mappers/alertComponentToProps.js +0 -3
  257. package/build/renderers/mappers/allOfComponentToProps.js +0 -6
  258. package/build/renderers/mappers/booleanInputComponentToProps.js +0 -3
  259. package/build/renderers/mappers/boxComponentToProps.js +0 -13
  260. package/build/renderers/mappers/buttonComponentToProps.js +0 -4
  261. package/build/renderers/mappers/collectionComponentToProps.js +0 -11
  262. package/build/renderers/mappers/columnsComponentToProps.js +0 -8
  263. package/build/renderers/mappers/componentToRendererProps.js +0 -168
  264. package/build/renderers/mappers/constComponentToProps.js +0 -5
  265. package/build/renderers/mappers/containerComponentToProps.js +0 -8
  266. package/build/renderers/mappers/dateInputComponentToProps.js +0 -3
  267. package/build/renderers/mappers/decisionComponentToProps.js +0 -16
  268. package/build/renderers/mappers/dividerComponentToProps.js +0 -2
  269. package/build/renderers/mappers/externalComponentToProps.js +0 -4
  270. package/build/renderers/mappers/formComponentToProps.js +0 -8
  271. package/build/renderers/mappers/formattedValueComponentToProps.js +0 -5
  272. package/build/renderers/mappers/headingComponentToProps.js +0 -2
  273. package/build/renderers/mappers/hiddenComponentToProps.js +0 -1
  274. package/build/renderers/mappers/imageComponentToProps.js +0 -2
  275. package/build/renderers/mappers/instructionsComponentToProps.js +0 -2
  276. package/build/renderers/mappers/integerInputComponentToProps.js +0 -3
  277. package/build/renderers/mappers/listComponentToProps.js +0 -3
  278. package/build/renderers/mappers/loadingIndicatorComponentToProps.js +0 -2
  279. package/build/renderers/mappers/markdownComponentToProps.js +0 -2
  280. package/build/renderers/mappers/mediaComponentToProps.js +0 -2
  281. package/build/renderers/mappers/modalComponentToProps.js +0 -8
  282. package/build/renderers/mappers/modalLayoutComponentToProps.js +0 -13
  283. package/build/renderers/mappers/moneyInputComponentToProps.js +0 -36
  284. package/build/renderers/mappers/multiSelectComponentToProps.js +0 -19
  285. package/build/renderers/mappers/multiUploadInputComponentToProps.js +0 -7
  286. package/build/renderers/mappers/numberInputComponentToProps.js +0 -3
  287. package/build/renderers/mappers/objectComponentToProps.js +0 -8
  288. package/build/renderers/mappers/paragraphComponentToProps.js +0 -2
  289. package/build/renderers/mappers/persistAsyncComponentToProps.js +0 -7
  290. package/build/renderers/mappers/progressComponentToProps.js +0 -2
  291. package/build/renderers/mappers/repeatableComponentToProps.js +0 -22
  292. package/build/renderers/mappers/reviewComponentToProps.js +0 -3
  293. package/build/renderers/mappers/rootComponentToProps.js +0 -20
  294. package/build/renderers/mappers/searchComponentToProps.js +0 -45
  295. package/build/renderers/mappers/sectionComponentToProps.js +0 -7
  296. package/build/renderers/mappers/selectInputComponentToProps.js +0 -34
  297. package/build/renderers/mappers/statusListComponentToProps.js +0 -3
  298. package/build/renderers/mappers/subflowComponentToRendererProps.js +0 -26
  299. package/build/renderers/mappers/tabsComponentToProps.js +0 -14
  300. package/build/renderers/mappers/textInputComponentToProps.js +0 -3
  301. package/build/renderers/mappers/tupleComponentToProps.js +0 -8
  302. package/build/renderers/mappers/updatableComponentToProps.js +0 -6
  303. package/build/renderers/mappers/uploadInputComponentToProps.js +0 -5
  304. package/build/renderers/mappers/upsellComponentToProps.js +0 -3
  305. package/build/renderers/mappers/utils/getValidationState.js +0 -12
  306. package/build/renderers/mappers/utils/inputComponentToProps.js +0 -17
  307. package/build/renderers/mappers/utils/mapCallToAction.js +0 -23
  308. package/build/renderers/mappers/utils/mapErrorsToValidationState.js +0 -9
  309. package/build/renderers/mappers/utils/mapRendererLoadingState.js +0 -1
  310. package/build/renderers/mappers/utils/pick.js +0 -8
  311. package/build/renderers/mappers/utils/selectInputOptionsToProps.js +0 -11
  312. package/build/renderers/stepComponentToProps.js +0 -32
  313. package/build/renderers/subflow/getDynamicSubflowRenderer.js +0 -13
  314. package/build/renderers/subflow/getNativeSubflowRenderer.js +0 -26
  315. package/build/renderers/utils.js +0 -72
  316. package/build/renderers/utils.test.js +0 -70
  317. package/build/stories/dev-tools/ContainerQueries.story.js +0 -66
  318. package/build/stories/dev-tools/Debugger.story.js +0 -107
  319. package/build/stories/dev-tools/FixtureSelect.story.js +0 -23
  320. package/build/stories/dev-tools/TestServer.story.js +0 -118
  321. package/build/stories/examples/NativeFlow.story.js +0 -80
  322. package/build/stories/examples/Recipients.story.js +0 -568
  323. package/build/stories/spec/behavior/Copy.story.js +0 -71
  324. package/build/stories/spec/behavior/Download.story.js +0 -254
  325. package/build/stories/spec/behavior/DynamicSubflow.story.js +0 -272
  326. package/build/stories/spec/behavior/Link.story.js +0 -40
  327. package/build/stories/spec/behavior/Modal.story.js +0 -79
  328. package/build/stories/spec/behavior/NativeSubflow.story.js +0 -249
  329. package/build/stories/spec/layouts/Alert.story.js +0 -107
  330. package/build/stories/spec/layouts/Box.Container-Widths.3-sizes.story.js +0 -59
  331. package/build/stories/spec/layouts/Box.Container-Widths.story.js +0 -57
  332. package/build/stories/spec/layouts/Box.Viewport-Widths.story.js +0 -64
  333. package/build/stories/spec/layouts/Collection.story.js +0 -294
  334. package/build/stories/spec/layouts/Decision.story.js +0 -241
  335. package/build/stories/spec/layouts/Image.Illustrations.Animated.story.js +0 -37
  336. package/build/stories/spec/layouts/Image.Sizes.story.js +0 -58
  337. package/build/stories/spec/layouts/Modal.story.js +0 -81
  338. package/build/stories/spec/layouts/Search.story.js +0 -325
  339. package/build/stories/spec/layouts/Updatable.story.js +0 -135
  340. package/build/stories/spec/layouts/Upsell.story.js +0 -55
  341. package/build/stories/spec/layouts/button/Button.story.js +0 -111
  342. package/build/stories/spec/layouts/button/PinnedButton.story.js +0 -81
  343. package/build/stories/spec/response/ActionResponse.story.js +0 -66
  344. package/build/stories/spec/schemas/InlineAlert.story.js +0 -134
  345. package/build/stories/spec/schemas/MultiSelect.story.js +0 -206
  346. package/build/stories/spec/schemas/Upload.story.js +0 -168
  347. package/build/stories/spec/schemas/const/ConstLayout.story.js +0 -159
  348. package/build/stories/spec/schemas/const/ObjectConst.story.js +0 -94
  349. package/build/stories/spec/schemas/date/DateSchema.story.js +0 -59
  350. package/build/stories/spec/schemas/features/PersistAsync.story.js +0 -230
  351. package/build/stories/spec/schemas/features/ValidationAsync.story.js +0 -137
  352. package/build/stories/spec/schemas/object/FormattedValue.story.js +0 -92
  353. package/build/stories/spec/schemas/object/MoneyInput.story.js +0 -240
  354. package/build/stories/spec/schemas/oneOf/OneOfInitialisation.story.js +0 -55
  355. package/build/stories/spec/schemas/oneOf/OneOfWithSingleOption.story.js +0 -114
  356. package/build/stories/spec/step/Controls.story.js +0 -110
  357. package/build/stories/spec/step/DFModal.story.js +0 -58
  358. package/build/stories/spec/step/Footer.story.js +0 -90
  359. package/build/stories/spec/step/Navigation.story.js +0 -46
  360. package/build/stories/spec/step/ScrollToBottom.story.js +0 -103
  361. package/build/stories/spec/step/Tags.story.js +0 -39
  362. package/build/stories/spec/step/ToolBar.story.js +0 -60
  363. package/build/stories/spec/step/features/ErrorHandling.story.js +0 -92
  364. package/build/stories/spec/step/features/External.story.js +0 -91
  365. package/build/stories/spec/step/features/LongFormError.story.js +0 -88
  366. package/build/stories/spec/step/features/Polling.story.js +0 -108
  367. package/build/stories/spec/step/features/RefreshAfter.story.js +0 -92
  368. package/build/stories/spec/step/features/refresh/Refresh.story.js +0 -260
  369. package/build/stories/spec/step/features/refresh/RefreshWithPersistAsync.story.js +0 -958
  370. package/build/stories/types.js +0 -1
  371. package/build/stories/utils/fixtureHttpClient.js +0 -70
  372. package/build/stories/utils/getBasicStep.js +0 -223
  373. package/build/stories/utils/mockSearchHandler.js +0 -71
  374. package/build/stories/utils/render-utils.js +0 -59
  375. package/build/stories/visual-tests/layouts/NotUsingListItem.story.js +0 -17
  376. package/build/test-utils/DynamicFlowWise.js +0 -41
  377. package/build/test-utils/DynamicFlowWiseModal.js +0 -34
  378. package/build/test-utils/NeptuneProviders.js +0 -11
  379. package/build/test-utils/component-utils.js +0 -5
  380. package/build/test-utils/dummy-native-subflows-handlers/dummySubflowHandlers.js +0 -45
  381. package/build/test-utils/dummy-native-subflows-handlers/geolocationSubflowHandler.js +0 -30
  382. package/build/test-utils/dummy-native-subflows-handlers/index.js +0 -9
  383. package/build/test-utils/dummy-native-subflows-handlers/notificationPermissionSubflowHandler.js +0 -17
  384. package/build/test-utils/fetch-utils.js +0 -47
  385. package/build/test-utils/getMergedTestRenderers.js +0 -36
  386. package/build/test-utils/getRandomId.js +0 -1
  387. package/build/test-utils/index.js +0 -3
  388. package/build/test-utils/mockIntersectionObserver.js +0 -23
  389. package/build/test-utils/openLinkInNewTab.js +0 -15
  390. package/build/test-utils/rtl-utils.js +0 -7
  391. package/build/test-utils/step-utils.js +0 -6
  392. package/build/test-utils/useSnackBar.js +0 -4
  393. package/build/test-utils/wait.js +0 -3
  394. package/build/tests/AlertLayout.test.js +0 -228
  395. package/build/tests/ArrayTuple.test.js +0 -118
  396. package/build/tests/ButtonLayout.test.js +0 -356
  397. package/build/tests/CollectionLayout.test.js +0 -516
  398. package/build/tests/ConstLayout.test.js +0 -95
  399. package/build/tests/DateInput.test.js +0 -190
  400. package/build/tests/DateSchema.test.js +0 -84
  401. package/build/tests/DecisionLayout.test.js +0 -146
  402. package/build/tests/DelayBehavior.test.js +0 -186
  403. package/build/tests/Download.test.js +0 -201
  404. package/build/tests/DynamicFlow.test.js +0 -147
  405. package/build/tests/External.test.js +0 -169
  406. package/build/tests/Flow.test.js +0 -328
  407. package/build/tests/FormLayout.test.js +0 -28
  408. package/build/tests/FormattedValue.test.js +0 -107
  409. package/build/tests/ImageRenderer.test.js +0 -78
  410. package/build/tests/InitialAction.test.js +0 -235
  411. package/build/tests/InitialStep.test.js +0 -168
  412. package/build/tests/InstructionsLayout.test.js +0 -45
  413. package/build/tests/ListLayout.test.js +0 -165
  414. package/build/tests/Logging.test.js +0 -53
  415. package/build/tests/ModalBehavior.test.js +0 -149
  416. package/build/tests/MoneyInput.test.js +0 -313
  417. package/build/tests/MultiUpload.test.js +0 -293
  418. package/build/tests/NativeBack.test.js +0 -267
  419. package/build/tests/NoOp.test.js +0 -194
  420. package/build/tests/OnLoad.test.js +0 -153
  421. package/build/tests/OneOfInitialisation.test.js +0 -571
  422. package/build/tests/PersistAsync.test.js +0 -687
  423. package/build/tests/Polling.test.js +0 -708
  424. package/build/tests/Prefetching.test.js +0 -229
  425. package/build/tests/RefreshAfter.test.js +0 -63
  426. package/build/tests/RefreshOnChange.ResponseHandling.test.js +0 -199
  427. package/build/tests/RefreshOnChange.test.js +0 -233
  428. package/build/tests/RefreshOnChange.with.Segmented.test.js +0 -351
  429. package/build/tests/RefreshOnChange.with.Tabs.test.js +0 -359
  430. package/build/tests/RefreshOnChangePreserve.test.js +0 -221
  431. package/build/tests/RendererProps.test.js +0 -372
  432. package/build/tests/Repeatable.test.js +0 -104
  433. package/build/tests/Rerendering.test.js +0 -67
  434. package/build/tests/ReviewLayout.test.js +0 -271
  435. package/build/tests/SchemaOnChange.test.js +0 -133
  436. package/build/tests/SchemaReferences.test.js +0 -88
  437. package/build/tests/ScrollToBottom.test.js +0 -101
  438. package/build/tests/ScrollToError.test.js +0 -359
  439. package/build/tests/ScrollToTop.test.js +0 -95
  440. package/build/tests/SegmentedControl.test.js +0 -49
  441. package/build/tests/SingleFileUpload.test.js +0 -168
  442. package/build/tests/StatusList.test.js +0 -85
  443. package/build/tests/Subflow.dynamic.test.js +0 -887
  444. package/build/tests/Subflow.native.test.js +0 -448
  445. package/build/tests/Submission.Const.test.js +0 -70
  446. package/build/tests/Submission.ResponseHandling.test.js +0 -557
  447. package/build/tests/Submission.merging.test.js +0 -202
  448. package/build/tests/Submission.test.js +0 -821
  449. package/build/tests/Tags.test.js +0 -466
  450. package/build/tests/UpdatableLayout.test.js +0 -343
  451. package/build/tests/Upsell.test.js +0 -154
  452. package/build/tests/ValidationAsync.test.js +0 -295
  453. package/build/tests/behavior/events.test.js +0 -348
  454. package/build/tests/legacy/Actions.test.js +0 -158
  455. package/build/tests/legacy/BackButton.test.js +0 -114
  456. package/build/tests/legacy/HiddenSchemas.test.js +0 -250
  457. package/build/tests/legacy/MultiSelect.test.js +0 -546
  458. package/build/tests/legacy/MultipleFileUploadSchema.test.js +0 -350
  459. package/build/tests/legacy/PersistAsync.blob-schema.test.js +0 -224
  460. package/build/tests/legacy/PersistAsync.string-schema.test.js +0 -211
  461. package/build/tests/legacy/RefreshStepOnChange.debouncing.test.js +0 -209
  462. package/build/tests/legacy/RefreshStepOnChange.test.js +0 -421
  463. package/build/tests/legacy/Search.test.js +0 -439
  464. package/build/tests/renderers/InlineAlertInSchemas.test.js +0 -82
  465. package/build/tests/renderers/MediaRenderer.test.js +0 -74
  466. package/build/tests/renderers/MultiSelectInputRendererProps.test.js +0 -58
  467. package/build/tests/renderers/SelectInputRendererProps.test.js +0 -43
  468. package/build/tests/renderers/TextInputRenderer.test.js +0 -48
  469. package/build/types.js +0 -1
  470. package/build/useDynamicFlow.js +0 -110
  471. package/build/useDynamicFlowModal.js +0 -58
  472. package/build/utils/analyse-step.js +0 -14
  473. package/build/utils/component-utils.js +0 -8
  474. package/build/utils/component-utils.test.js +0 -113
  475. package/build/utils/getScrollToTop.js +0 -12
  476. package/build/utils/normalise-flow-id.js +0 -1
  477. package/build/utils/normalise-flow-id.test.js +0 -24
  478. package/build/utils/recursiveMerge.js +0 -40
  479. package/build/utils/recursiveMerge.test.js +0 -93
  480. package/build/utils/safe-parse-link.js +0 -14
  481. package/build/utils/safe-parse-link.test.js +0 -19
  482. package/build/utils/type-utils.js +0 -22
  483. package/build/utils/type-validators.js +0 -11
  484. package/build/utils/type-validators.test.js +0 -180
  485. package/build/utils/useStableCallback.js +0 -15
@@ -1,25 +0,0 @@
1
- export const getPatternRegExp = (pattern, logEvent) => {
2
- if (!pattern) {
3
- return;
4
- }
5
- try {
6
- return new RegExp(pattern, 'u');
7
- }
8
- catch (error) {
9
- const message = `Invalid schema pattern. Failed to instantiate RegExp with Unicode support.`;
10
- if (logEvent) {
11
- logEvent('warning', message, {
12
- pattern,
13
- error: error === null || error === void 0 ? void 0 : error.toString(),
14
- });
15
- }
16
- else {
17
- // eslint-disable-next-line no-console
18
- console.warn(`Dynamic Flow - ${message}`, {
19
- pattern,
20
- error: error === null || error === void 0 ? void 0 : error.toString(),
21
- });
22
- }
23
- return new RegExp(pattern);
24
- }
25
- };
@@ -1,23 +0,0 @@
1
- import { vi } from 'vitest';
2
- export const mockErrorMessageFunctions = {
3
- minimum: vi.fn().mockReturnValue('minimum'),
4
- maximum: vi.fn().mockReturnValue('maximum'),
5
- minimumDate: vi.fn().mockReturnValue('minimumDate'),
6
- maximumDate: vi.fn().mockReturnValue('maximumDate'),
7
- invalidDate: vi.fn().mockReturnValue('invalidDate'),
8
- minLength: vi.fn().mockReturnValue('minLength'),
9
- maxLength: vi.fn().mockReturnValue('maxLength'),
10
- minFiles: vi.fn().mockReturnValue('minFiles'),
11
- maxFiles: vi.fn().mockReturnValue('maxFiles'),
12
- minItems: vi.fn().mockReturnValue('minItems'),
13
- maxItems: vi.fn().mockReturnValue('maxItems'),
14
- maxSize: vi.fn().mockReturnValue('maxSize'),
15
- accepts: vi.fn().mockReturnValue('accepts'),
16
- pattern: vi.fn().mockReturnValue('pattern'),
17
- required: vi.fn().mockReturnValue('required'),
18
- genericError: vi.fn().mockReturnValue('genericError'),
19
- genericErrorWithRetry: vi.fn().mockReturnValue('genericErrorWithRetry'),
20
- downloadStarted: vi.fn().mockReturnValue('downloadStarted'),
21
- downloadFailed: vi.fn().mockReturnValue('downloadFailed'),
22
- downloadSuccessful: vi.fn().mockReturnValue('downloadSuccessful'),
23
- };
@@ -1,6 +0,0 @@
1
- import { isString } from '../../../utils/type-validators';
2
- export const validateComponents = (components) => components.reduce((acc, component) => component.validate() && acc, true);
3
- /**
4
- * Returns a function that takes a local value and returns an array of validation errors
5
- */
6
- export const getLocalValueValidator = (checks) => (currentValue) => checks.map((check) => check(currentValue)).filter(isString);
@@ -1,108 +0,0 @@
1
- import { vi } from 'vitest';
2
- import { mockErrorMessageFunctions } from './spec-utils';
3
- import { getLocalValueValidator, validateComponents } from './validation-functions';
4
- import { getAboveMaxLengthCheck, getAboveMaximumCheck, getBelowMinLengthCheck, getBelowMinimumCheck, getNotAdheringToPatternCheck, getRequiredCheck, } from './value-checks';
5
- const getMockComponent = ({ valid }) => ({ validate: vi.fn().mockReturnValue(valid) });
6
- describe('validateComponents', () => {
7
- it('should return true when all components validate', () => {
8
- const components = [
9
- getMockComponent({ valid: true }),
10
- getMockComponent({ valid: true }),
11
- getMockComponent({ valid: true }),
12
- ];
13
- const result = validateComponents(components);
14
- expect(result).toBe(true);
15
- });
16
- it('should return false when at least one component fails to validate', () => {
17
- const components = [
18
- getMockComponent({ valid: true }),
19
- getMockComponent({ valid: false }),
20
- getMockComponent({ valid: true }),
21
- ];
22
- const result = validateComponents(components);
23
- expect(result).toBe(false);
24
- });
25
- it('should return true when there are no components', () => {
26
- const components = [];
27
- const result = validateComponents(components);
28
- expect(result).toBe(true);
29
- });
30
- it('should call validate on every component', () => {
31
- const validateOne = vi.fn().mockReturnValue(false);
32
- const validateTwo = vi.fn().mockReturnValue(true);
33
- const validateThree = vi.fn().mockReturnValue(true);
34
- const components = [
35
- { validate: validateOne },
36
- { validate: validateTwo },
37
- { validate: validateThree },
38
- ];
39
- validateComponents(components);
40
- expect(validateOne).toHaveBeenCalled();
41
- expect(validateTwo).toHaveBeenCalled();
42
- expect(validateThree).toHaveBeenCalled();
43
- });
44
- });
45
- describe('getLocalValueValidator', () => {
46
- it('returns an empty array when the model is valid', () => {
47
- const schema = {
48
- type: 'integer',
49
- minimum: 1,
50
- maximum: 90,
51
- };
52
- const checks = [
53
- getRequiredCheck(false, mockErrorMessageFunctions),
54
- getBelowMinimumCheck(schema, mockErrorMessageFunctions),
55
- getAboveMaximumCheck(schema, mockErrorMessageFunctions),
56
- ];
57
- const validationErrors = getLocalValueValidator(checks)(30);
58
- expect(validationErrors).toEqual([]);
59
- });
60
- it('returns an array of validation errors when the model is invalid', () => {
61
- const schema = {
62
- type: 'string',
63
- minLength: 3,
64
- maxLength: 10,
65
- pattern: 'foo',
66
- };
67
- const checks = [
68
- getRequiredCheck(false, mockErrorMessageFunctions),
69
- getAboveMaxLengthCheck(schema, mockErrorMessageFunctions),
70
- getBelowMinLengthCheck(schema, mockErrorMessageFunctions),
71
- getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions),
72
- ];
73
- const validationErrors = getLocalValueValidator(checks)('invalid-model');
74
- expect(validationErrors).toEqual(['maxLength', 'pattern']);
75
- });
76
- it('returns a single error if the model is required and not provided', () => {
77
- const schema = {
78
- type: 'string',
79
- minLength: 3,
80
- maxLength: 10,
81
- pattern: 'foo',
82
- };
83
- const checks = [
84
- getRequiredCheck(true, mockErrorMessageFunctions),
85
- getAboveMaxLengthCheck(schema, mockErrorMessageFunctions),
86
- getBelowMinLengthCheck(schema, mockErrorMessageFunctions),
87
- getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions),
88
- ];
89
- const validationErrors = getLocalValueValidator(checks)(null);
90
- expect(validationErrors).toEqual(['required']);
91
- });
92
- it('returns an empty array when the model is not required and not provided', () => {
93
- const schema = {
94
- type: 'string',
95
- minLength: 3,
96
- maxLength: 10,
97
- pattern: 'foo',
98
- };
99
- const checks = [
100
- getRequiredCheck(false, mockErrorMessageFunctions),
101
- getAboveMaxLengthCheck(schema, mockErrorMessageFunctions),
102
- getBelowMinLengthCheck(schema, mockErrorMessageFunctions),
103
- getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions),
104
- ];
105
- const validationErrors = getLocalValueValidator(checks)(null);
106
- expect(validationErrors).toEqual([]);
107
- });
108
- });
@@ -1,130 +0,0 @@
1
- import { isArray, isNullish, isNumber, isString, isValidDate, } from '../../../utils/type-validators';
2
- import { getUnavailableDateReason } from './date-availability';
3
- import { getPatternRegExp } from './getPatternRegExp';
4
- export const getAboveMaxItemsCheck = ({ maxItems }, messageFunctions) => (value) => {
5
- if (isNumber(maxItems) && isArray(value) && value.length > maxItems) {
6
- return messageFunctions.maxItems(maxItems);
7
- }
8
- return null;
9
- };
10
- export const getBelowMinFilesCheck = ({ minItems }, messageFunctions) => (value) => {
11
- if (isNumber(minItems) && isArray(value) && value.length > 0 && value.length < minItems) {
12
- return messageFunctions.minFiles(minItems);
13
- }
14
- return null;
15
- };
16
- export const getAboveMaxFilesCheck = ({ maxItems }, messageFunctions) => (value) => {
17
- if (isNumber(maxItems) && isArray(value) && value.length > maxItems) {
18
- return messageFunctions.maxFiles(maxItems);
19
- }
20
- return null;
21
- };
22
- export const getFileSizeCheck = (schema, messageFunctions) => (value) => {
23
- const maxSize = 'persistAsync' in schema ? schema.persistAsync.schema.maxSize : schema.maxSize;
24
- if (maxSize && value && value.size > maxSize) {
25
- return messageFunctions.maxSize();
26
- }
27
- return null;
28
- };
29
- export const getFileTypeCheck = (schema, messageFunctions) => (value) => {
30
- const accepts = 'persistAsync' in schema ? schema.persistAsync.schema.accepts : schema.accepts;
31
- if (accepts && value && !accepts.includes(value.type)) {
32
- return messageFunctions.accepts();
33
- }
34
- return null;
35
- };
36
- export const getBelowMinItemsCheck = ({ minItems }, messageFunctions) => (value) => {
37
- if (isNumber(minItems) && isArray(value) && value.length > 0 && value.length < minItems) {
38
- return messageFunctions.minItems(minItems);
39
- }
40
- return null;
41
- };
42
- export const getAboveMaxLengthCheck = ({ maxLength }, messageFunctions) => (value) => {
43
- if (isNumber(maxLength) && isString(value) && value.length > maxLength) {
44
- return messageFunctions.maxLength(maxLength);
45
- }
46
- return null;
47
- };
48
- export const getBelowMinLengthCheck = ({ minLength }, messageFunctions) => (value) => {
49
- if (isNumber(minLength) && isString(value) && value && value.length < minLength) {
50
- return messageFunctions.minLength(minLength);
51
- }
52
- return null;
53
- };
54
- export const getAboveMaximumCheck = ({ maximum }, messageFunctions) => (value) => {
55
- if (isNumber(maximum) && isNumber(value) && value > maximum) {
56
- return messageFunctions.maximum(maximum);
57
- }
58
- return null;
59
- };
60
- export const getBelowMinimumCheck = ({ minimum }, messageFunctions) => (value) => {
61
- if (isNumber(minimum) && isNumber(value) && value < minimum) {
62
- return messageFunctions.minimum(minimum);
63
- }
64
- return null;
65
- };
66
- export const getAboveMaximumMoneyAmountCheck = ({ maximum }, messageFunctions) => (value) => {
67
- const numericValue = value != null ? Number.parseFloat(value) : null;
68
- const numericMax = maximum != null ? Number.parseFloat(maximum) : null;
69
- if (maximum != null &&
70
- isNumber(numericMax) &&
71
- isNumber(numericValue) &&
72
- numericValue > numericMax) {
73
- return messageFunctions.maximum(maximum);
74
- }
75
- return null;
76
- };
77
- export const getBelowMinimumMoneyAmountCheck = ({ minimum }, messageFunctions) => (value) => {
78
- const numericValue = value != null ? Number.parseFloat(value) : null;
79
- const numericMin = minimum != null ? Number.parseFloat(minimum) : null;
80
- if (minimum != null &&
81
- isNumber(numericMin) &&
82
- isNumber(numericValue) &&
83
- numericValue < numericMin) {
84
- return messageFunctions.minimum(minimum);
85
- }
86
- return null;
87
- };
88
- export const getAboveMaximumDateCheck = ({ maximum }, messageFunctions) => (value) => {
89
- if (isString(maximum) && isValidDate(value) && value > maximum) {
90
- return messageFunctions.maximumDate(maximum);
91
- }
92
- return null;
93
- };
94
- export const getBelowMinimumDateCheck = ({ minimum }, messageFunctions) => (value) => {
95
- if (isString(minimum) && isValidDate(value) && value < minimum) {
96
- return messageFunctions.minimumDate(minimum);
97
- }
98
- return null;
99
- };
100
- export const getNotAdheringToPatternCheck = ({ pattern }, messageFunctions, options) => {
101
- const regExp = getPatternRegExp(pattern, options === null || options === void 0 ? void 0 : options.logEvent);
102
- return (value) => {
103
- if (regExp && isString(value) && value) {
104
- return (regExp === null || regExp === void 0 ? void 0 : regExp.test(value)) ? null : messageFunctions.pattern();
105
- }
106
- return null;
107
- };
108
- };
109
- export const getRequiredCheck = (required, messageFunctions) => (value) => {
110
- if (!required) {
111
- return null;
112
- }
113
- if (isArray(value) && value.length === 0) {
114
- return messageFunctions.required();
115
- }
116
- return isNullish(value) ? messageFunctions.required() : null;
117
- };
118
- export const getStringRequiredCheck = (required, messageFunctions) => (value) => {
119
- if (!required) {
120
- return null;
121
- }
122
- return isNullish(value) || value === '' ? messageFunctions.required() : null;
123
- };
124
- export const getValidDateCheck = (required, messageFunctions) => (value) => {
125
- if (required && value && !isValidDate(value)) {
126
- return messageFunctions.invalidDate();
127
- }
128
- return null;
129
- };
130
- export const getUnavailableDateCheck = ({ availability }) => (value) => isValidDate(value) ? getUnavailableDateReason(value, availability) : null;
@@ -1,297 +0,0 @@
1
- import { vi } from 'vitest';
2
- import { mockErrorMessageFunctions } from './spec-utils';
3
- import { getAboveMaxFilesCheck, getAboveMaximumCheck, getAboveMaximumDateCheck, getAboveMaxItemsCheck, getAboveMaxLengthCheck, getBelowMinFilesCheck, getBelowMinimumCheck, getBelowMinimumDateCheck, getBelowMinItemsCheck, getBelowMinLengthCheck, getNotAdheringToPatternCheck, getRequiredCheck, getStringRequiredCheck, getUnavailableDateCheck, getValidDateCheck, } from './value-checks';
4
- describe('value checks', () => {
5
- describe('getAboveMaxLengthCheck', () => {
6
- it('should return null if the string length is below or equal to the maxLength', () => {
7
- const schema = { type: 'string', maxLength: 5 };
8
- const check = getAboveMaxLengthCheck(schema, mockErrorMessageFunctions);
9
- const belowLength = check('0');
10
- const atLength = check('01234');
11
- expect(belowLength).toBeNull();
12
- expect(atLength).toBeNull();
13
- });
14
- it('should return an error message if the string length is above the maxLength', () => {
15
- const schema = { type: 'string', maxLength: 5 };
16
- const check = getAboveMaxLengthCheck(schema, mockErrorMessageFunctions);
17
- expect(check('012345')).toBe('maxLength');
18
- });
19
- });
20
- describe('getBelowMinLengthCheck', () => {
21
- it('should return null if the string length is above or equal to the minLength', () => {
22
- const schema = { type: 'string', minLength: 5 };
23
- const check = getBelowMinLengthCheck(schema, mockErrorMessageFunctions);
24
- const atLength = check('01234');
25
- const aboveLength = check('0123456789');
26
- expect(atLength).toBeNull();
27
- expect(aboveLength).toBeNull();
28
- });
29
- it('should return null if the string is empty', () => {
30
- const schema = { type: 'string', minLength: 5 };
31
- const check = getBelowMinLengthCheck(schema, mockErrorMessageFunctions);
32
- expect(check('')).toBeNull();
33
- });
34
- it('should return an error message if the string length is below the minLength', () => {
35
- const schema = { type: 'string', minLength: 5 };
36
- const check = getBelowMinLengthCheck(schema, mockErrorMessageFunctions);
37
- expect(check('0')).toBe('minLength');
38
- });
39
- });
40
- describe('getAboveMaximumCheck', () => {
41
- it('should return null if the number is below or equal to the maximum', () => {
42
- const schema = { type: 'number', maximum: 10 };
43
- const check = getAboveMaximumCheck(schema, mockErrorMessageFunctions);
44
- const atMax = check(5);
45
- const belowMax = check(10);
46
- expect(atMax).toBeNull();
47
- expect(belowMax).toBeNull();
48
- });
49
- it('should return an error message if the number is above the maximum', () => {
50
- const schema = { type: 'number', maximum: 10 };
51
- const check = getAboveMaximumCheck(schema, mockErrorMessageFunctions);
52
- expect(check(15)).toBe('maximum');
53
- });
54
- });
55
- describe('getBelowMinimumCheck', () => {
56
- it('should return null if the number is above or equal to the minimum', () => {
57
- const schema = { type: 'integer', minimum: 5 };
58
- const check = getBelowMinimumCheck(schema, mockErrorMessageFunctions);
59
- const atMinimum = check(5);
60
- const aboveMinimum = check(10);
61
- expect(atMinimum).toBeNull();
62
- expect(aboveMinimum).toBeNull();
63
- });
64
- it('should return an error message if the number is below the minimum', () => {
65
- const schema = { type: 'integer', minimum: 10 };
66
- const check = getBelowMinimumCheck(schema, mockErrorMessageFunctions);
67
- expect(check(5)).toBe('minimum');
68
- });
69
- });
70
- describe('getAboveMaximumDateCheck', () => {
71
- it('should return null if the date is below or equal to the maximum', () => {
72
- const schema = { type: 'string', format: 'date', maximum: '2022-01-01' };
73
- const check = getAboveMaximumDateCheck(schema, mockErrorMessageFunctions);
74
- const atDate = check('2022-01-01');
75
- const belowDate = check('2021-12-31');
76
- expect(atDate).toBeNull();
77
- expect(belowDate).toBeNull();
78
- });
79
- it('should return an error message if the date is above the maximum', () => {
80
- const schema = { type: 'string', format: 'date', maximum: '2022-01-01' };
81
- const check = getAboveMaximumDateCheck(schema, mockErrorMessageFunctions);
82
- expect(check('2022-01-02')).toBe('maximumDate');
83
- });
84
- it('does not apply business validation to a partial date', () => {
85
- const schema = { type: 'string', format: 'date', maximum: '2022-01-01' };
86
- expect(getAboveMaximumDateCheck(schema, mockErrorMessageFunctions)('2023-01')).toBeNull();
87
- });
88
- });
89
- describe('getUnavailableDateCheck', () => {
90
- const schema = {
91
- type: 'date',
92
- availability: {
93
- unavailable: [{ type: 'weekdays', weekdays: ['sun'], reason: 'Closed on Sundays' }],
94
- },
95
- };
96
- it('returns the matching reason for a complete date', () => {
97
- expect(getUnavailableDateCheck(schema)('2026-09-06')).toBe('Closed on Sundays');
98
- });
99
- it('does not apply availability validation to a partial date', () => {
100
- expect(getUnavailableDateCheck(schema)('2026-09')).toBeNull();
101
- });
102
- });
103
- describe('getBelowMinimumDateCheck', () => {
104
- it('should return null if the date is above or equal to the minimum', () => {
105
- const schema = { type: 'string', format: 'date', minimum: '2022-01-01' };
106
- const check = getBelowMinimumDateCheck(schema, mockErrorMessageFunctions);
107
- const atDate = check('2022-01-01');
108
- const aboveDate = check('2022-01-02');
109
- expect(atDate).toBeNull();
110
- expect(aboveDate).toBeNull();
111
- });
112
- it('should return an error message if the date is below the minimum', () => {
113
- const schema = { type: 'string', format: 'date', minimum: '2022-01-01' };
114
- const check = getBelowMinimumDateCheck(schema, mockErrorMessageFunctions);
115
- expect(check('2021-12-31')).toBe('minimumDate');
116
- });
117
- });
118
- describe('getNotAdheringToPatternCheck', () => {
119
- it('should return null if the string adheres to the pattern', () => {
120
- const schema = { type: 'string', pattern: '[A-Za-z]+' };
121
- const check = getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions);
122
- expect(check('Hello')).toBeNull();
123
- });
124
- it('should return null if the string is empty', () => {
125
- const schema = { type: 'string', pattern: '[A-Za-z]+' };
126
- const check = getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions);
127
- expect(check('')).toBeNull();
128
- });
129
- it('should return an error message if the string does not adhere to the pattern', () => {
130
- const schema = { type: 'string', pattern: '[A-Za-z]+' };
131
- const check = getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions);
132
- expect(check('01234')).toBe('pattern');
133
- });
134
- describe('unicode support', () => {
135
- it('should return null if string adheres to the pattern', () => {
136
- const schema = { type: 'string', pattern: '^[A-Za-z0-9\\s\\p{P}]*$' };
137
- const check = getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions);
138
- expect(check('23 Bananas!')).toBeNull();
139
- });
140
- it('should return an error message if the string does not adhere to the pattern', () => {
141
- const schema = { type: 'string', pattern: '^[A-Za-z0-9\\s\\p{P}]*$' };
142
- const check = getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions);
143
- expect(check('é')).toBe('pattern');
144
- expect(check('ñ')).toBe('pattern');
145
- expect(check('❌')).toBe('pattern');
146
- });
147
- describe('when a pattern is valid without Unicode support but invalid with Unicode support', () => {
148
- const logEvent = vi.fn();
149
- const schema = { type: 'string', pattern: '^\\d{3}\\-?\\d{3}$' };
150
- it('a logging event should be emitted', () => {
151
- const check = getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions, {
152
- logEvent,
153
- });
154
- expect(logEvent).toHaveBeenCalledWith('warning', expect.stringMatching(/Failed to instantiate RegExp with Unicode support/), expect.any(Object));
155
- });
156
- it(`the check function still works, because it doesn't use Unicode support`, () => {
157
- const check = getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions, {
158
- logEvent,
159
- });
160
- expect(check('123-123')).toBeNull();
161
- expect(check('123123')).toBeNull();
162
- expect(check('123')).toBe('pattern');
163
- });
164
- });
165
- });
166
- });
167
- describe('getAboveMaxItemsCheck', () => {
168
- const arraySchema = {
169
- type: 'array',
170
- items: { type: 'string' },
171
- addItemTitle: '',
172
- editItemTitle: '',
173
- maxItems: 5,
174
- };
175
- it('should return null if the array length is below or equal to the maxItems', () => {
176
- const check = getAboveMaxItemsCheck(arraySchema, mockErrorMessageFunctions);
177
- const belowLength = check(['0']);
178
- const atLength = check(['0', '1', '2', '3', '4']);
179
- expect(belowLength).toBeNull();
180
- expect(atLength).toBeNull();
181
- });
182
- it('should return an error message if the array length is above the maxItems', () => {
183
- const check = getAboveMaxItemsCheck(arraySchema, mockErrorMessageFunctions);
184
- expect(check(['0', '1', '2', '3', '4', '5'])).toBe('maxItems');
185
- });
186
- });
187
- describe('getBelowMinItemsCheck', () => {
188
- const arraySchema = {
189
- type: 'array',
190
- items: { type: 'string' },
191
- addItemTitle: '',
192
- editItemTitle: '',
193
- minItems: 3,
194
- };
195
- it('should return null if the array length is above or equal to the minItems', () => {
196
- const check = getBelowMinItemsCheck(arraySchema, mockErrorMessageFunctions);
197
- const atLength = check(['0', '1', '2']);
198
- const aboveLength = check(['0', '1', '2', '3']);
199
- expect(atLength).toBeNull();
200
- expect(aboveLength).toBeNull();
201
- });
202
- it('should return null if the array is empty', () => {
203
- const check = getBelowMinItemsCheck(arraySchema, mockErrorMessageFunctions);
204
- const empty = check([]);
205
- expect(empty).toBeNull();
206
- });
207
- it('should return an error message if the array length is below the minItems', () => {
208
- const check = getBelowMinItemsCheck(arraySchema, mockErrorMessageFunctions);
209
- expect(check(['0', '1'])).toBe('minItems');
210
- });
211
- });
212
- describe('getAboveMaxFilesCheck', () => {
213
- const arraySchema = {
214
- type: 'array',
215
- items: { type: 'string' },
216
- addItemTitle: '',
217
- editItemTitle: '',
218
- maxItems: 2,
219
- };
220
- it('should return null if the array length is below or equal to the maxItems', () => {
221
- const check = getAboveMaxFilesCheck(arraySchema, mockErrorMessageFunctions);
222
- const belowLength = check([new File([new Blob()], '0')]);
223
- const atLength = check([new File([new Blob()], '0'), new File([new Blob()], '1')]);
224
- expect(belowLength).toBeNull();
225
- expect(atLength).toBeNull();
226
- });
227
- it('should return an error message if the array length is above the maxItems', () => {
228
- const check = getAboveMaxFilesCheck(arraySchema, mockErrorMessageFunctions);
229
- expect(check([
230
- new File([new Blob()], '0'),
231
- new File([new Blob()], '1'),
232
- new File([new Blob()], '2'),
233
- ])).toBe('maxFiles');
234
- });
235
- });
236
- describe('getBelowMinFilesCheck', () => {
237
- const arraySchema = {
238
- type: 'array',
239
- items: { type: 'string' },
240
- addItemTitle: '',
241
- editItemTitle: '',
242
- minItems: 2,
243
- };
244
- it('should return null if the array length is above or equal to the minItems', () => {
245
- const check = getBelowMinFilesCheck(arraySchema, mockErrorMessageFunctions);
246
- const atLength = check([new File([new Blob()], '0'), new File([new Blob()], '1')]);
247
- const aboveLength = check([
248
- new File([new Blob()], '0'),
249
- new File([new Blob()], '1'),
250
- new File([new Blob()], '2'),
251
- ]);
252
- expect(atLength).toBeNull();
253
- expect(aboveLength).toBeNull();
254
- });
255
- it('should return null if the array is empty', () => {
256
- const check = getBelowMinFilesCheck(arraySchema, mockErrorMessageFunctions);
257
- const empty = check([]);
258
- expect(empty).toBeNull();
259
- });
260
- it('should return an error message if the array length is below the minItems', () => {
261
- const check = getBelowMinFilesCheck(arraySchema, mockErrorMessageFunctions);
262
- expect(check([new File([new Blob()], '0')])).toBe('minFiles');
263
- });
264
- });
265
- describe('getValidDateCheck', () => {
266
- it('should return null for partial date strings when not required', () => {
267
- const check = getValidDateCheck(false, mockErrorMessageFunctions);
268
- expect(check('2012-01')).toBeNull();
269
- });
270
- it('should return null for valid date strings when required', () => {
271
- const check = getValidDateCheck(true, mockErrorMessageFunctions);
272
- expect(check('2012-01-01')).toBeNull();
273
- });
274
- it('should return the invalid date message for partial date strings when required', () => {
275
- const check = getValidDateCheck(true, mockErrorMessageFunctions);
276
- expect(check('2012-01')).toBe('invalidDate');
277
- });
278
- it.each([null, ''])('should leave required validation to the required check for %s', (value) => {
279
- const check = getValidDateCheck(true, mockErrorMessageFunctions);
280
- expect(check(value)).toBeNull();
281
- });
282
- });
283
- describe('required checks', () => {
284
- describe('getRequiredCheck', () => {
285
- it('should accept an empty string when required', () => {
286
- const check = getRequiredCheck(true, mockErrorMessageFunctions);
287
- expect(check('')).toBeNull();
288
- });
289
- });
290
- describe('getStringRequiredCheck', () => {
291
- it('should reject an empty string when required', () => {
292
- const check = getStringRequiredCheck(true, mockErrorMessageFunctions);
293
- expect(check('')).toBe('required');
294
- });
295
- });
296
- });
297
- });
@@ -1,57 +0,0 @@
1
- import { isNullish } from '../../../utils/type-validators';
2
- import { debounce } from '../../components/utils/debounce';
3
- import { abortAndResetController } from '../utils/http-utils';
4
- /**
5
- * Creates an onValidateAsync handler for a component.
6
- */
7
- export const getComponentValidationAsync = (update, performValidationAsync) =>
8
- /**
9
- * Will update the validationAsyncState when a new request is made, and will update
10
- * the description or set errors when the request completes.
11
- */
12
- async (component, currentValue) => {
13
- const { abortController } = component.validationAsyncState;
14
- const newAbortController = abortAndResetController(abortController);
15
- if (isNullish(currentValue)) {
16
- update(component, (draft) => {
17
- draft.validationAsyncState = {
18
- abortController: newAbortController,
19
- lastSubmitted: currentValue,
20
- messages: {},
21
- loadingState: 'idle',
22
- };
23
- });
24
- return;
25
- }
26
- const { signal } = newAbortController;
27
- const newSubmission = performValidationAsync({ value: currentValue, signal })
28
- .then((message) => {
29
- update(component, (draft) => {
30
- if (message) {
31
- draft.validationAsyncState.messages.success = message;
32
- }
33
- draft.validationAsyncState.loadingState = 'idle';
34
- });
35
- return message;
36
- })
37
- .catch((error) => {
38
- if (error instanceof DOMException && error.name === 'AbortError') {
39
- // No op, the request was aborted
40
- return null;
41
- }
42
- update(component, (draft) => {
43
- draft.validationAsyncState.messages.error = error.message;
44
- draft.validationAsyncState.loadingState = 'idle';
45
- });
46
- });
47
- update(component, (draft) => {
48
- draft.validationAsyncState = {
49
- abortController: newAbortController,
50
- lastSubmitted: currentValue,
51
- messages: {},
52
- loadingState: 'pending',
53
- };
54
- });
55
- return newSubmission;
56
- };
57
- export const getDebouncedComponentValidationAsync = (update, performValidationAsync) => debounce(getComponentValidationAsync(update, performValidationAsync), 1000);