@wise/dynamic-flow-client 3.4.0 → 3.5.0-experimental-6654c72

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 (275) hide show
  1. package/build/common/errorBoundary/ErrorBoundary.js +44 -0
  2. package/build/common/errorBoundary/ErrorBoundaryAlert.js +12 -0
  3. package/build/common/httpClientContext/HttpClientContext.js +35 -0
  4. package/build/common/httpClientContext/index.js +1 -0
  5. package/build/common/makeHttpClient/index.js +1 -0
  6. package/build/common/makeHttpClient/makeHttpClient.js +34 -0
  7. package/build/common/messages/external-confirmation.messages.js +23 -0
  8. package/build/common/messages/generic-error.messages.js +18 -0
  9. package/build/common/messages/help.messages.js +8 -0
  10. package/build/common/messages/multi-file-upload.messages.js +18 -0
  11. package/build/common/messages/multi-select.messages.js +8 -0
  12. package/build/common/messages/paragraph.messages.js +13 -0
  13. package/build/common/messages/repeatable.messages.js +23 -0
  14. package/build/common/messages/validation.array.messages.js +13 -0
  15. package/build/common/messages/validation.messages.js +53 -0
  16. package/build/common/utils/api-utils.js +4 -0
  17. package/build/i18n/de.json +2 -1
  18. package/build/i18n/es.json +1 -0
  19. package/build/i18n/fr.json +1 -0
  20. package/build/i18n/hu.json +1 -0
  21. package/build/i18n/id.json +1 -0
  22. package/build/i18n/index.js +36 -0
  23. package/build/i18n/it.json +1 -0
  24. package/build/i18n/ja.json +1 -0
  25. package/build/i18n/pl.json +1 -0
  26. package/build/i18n/pt.json +1 -0
  27. package/build/i18n/ro.json +1 -0
  28. package/build/i18n/ru.json +1 -0
  29. package/build/i18n/th.json +1 -0
  30. package/build/i18n/tr.json +1 -0
  31. package/build/i18n/zh_CN.json +1 -0
  32. package/build/i18n/zh_HK.json +1 -0
  33. package/build/legacy/common/constants/DateMode.js +4 -0
  34. package/build/legacy/common/constants/FeatureName.js +4 -0
  35. package/build/legacy/common/constants/FormControlType.js +21 -0
  36. package/build/legacy/common/constants/MonthFormat.js +4 -0
  37. package/build/legacy/common/constants/Size.js +7 -0
  38. package/build/legacy/common/constants/index.js +4 -0
  39. package/build/legacy/common/contexts/dynamicFlowContexts/DynamicFlowContexts.js +36 -0
  40. package/build/legacy/common/contexts/dynamicFlowContexts/usePendingPromiseCounter.js +13 -0
  41. package/build/legacy/common/contexts/eventsContext/EventsContext.js +38 -0
  42. package/build/legacy/common/contexts/featureContext/FeatureContext.js +22 -0
  43. package/build/legacy/common/contexts/index.js +3 -0
  44. package/build/legacy/common/contexts/logContext/LogContext.js +44 -0
  45. package/build/legacy/common/hooks/index.js +7 -0
  46. package/build/legacy/common/hooks/useDebouncedFunction/useDebouncedFunction.js +9 -0
  47. package/build/legacy/common/hooks/useExternal/useExternal.js +15 -0
  48. package/build/legacy/common/hooks/useExternalStepPolling/useExternalStepPolling.js +70 -0
  49. package/build/legacy/common/hooks/usePersistAsync/usePersistAsync.js +172 -0
  50. package/build/legacy/common/hooks/usePolling/usePolling.js +51 -0
  51. package/build/legacy/common/hooks/usePrevious/usePrevious.js +8 -0
  52. package/build/legacy/common/hooks/useStepPolling/useStepPolling.js +43 -0
  53. package/build/legacy/common/messages.js +8 -0
  54. package/build/legacy/common/utils/api-utils.js +6 -0
  55. package/build/legacy/common/utils/date-utils.js +22 -0
  56. package/build/legacy/common/utils/debounce.js +38 -0
  57. package/build/legacy/common/utils/file-utils.js +45 -0
  58. package/build/legacy/common/utils/id-utils.js +5 -0
  59. package/build/legacy/common/utils/index.js +11 -0
  60. package/build/legacy/common/utils/is-equal.js +21 -0
  61. package/build/legacy/common/utils/misc-utils.js +4 -0
  62. package/build/legacy/common/utils/mobile-utils.js +23 -0
  63. package/build/legacy/common/utils/model-utils.js +33 -0
  64. package/build/legacy/common/utils/schema-utils.js +113 -0
  65. package/build/legacy/common/utils/step-utils.js +32 -0
  66. package/build/legacy/common/validators/index.js +5 -0
  67. package/build/legacy/common/validators/models/model-utils.js +119 -0
  68. package/build/legacy/common/validators/models/model-validators.js +62 -0
  69. package/build/legacy/common/validators/schemas/schema-validators.js +101 -0
  70. package/build/legacy/common/validators/types/type-validators.js +14 -0
  71. package/build/legacy/common/validators/validationFailures/validation-failures.js +139 -0
  72. package/build/legacy/common/validators/validationFailures/validation-failures.utils.js +40 -0
  73. package/build/legacy/common/validators/values/value-validators.js +6 -0
  74. package/build/legacy/dynamic-flow-types.js +1 -0
  75. package/build/legacy/dynamicFlow/BackButton.js +22 -0
  76. package/build/legacy/dynamicFlow/DynamicFlow.js +346 -0
  77. package/build/legacy/dynamicFlow/DynamicFlowStep.js +37 -0
  78. package/build/legacy/dynamicFlow/DynamicFlowTypes.js +1 -0
  79. package/build/legacy/dynamicFlow/index.js +1 -0
  80. package/build/legacy/dynamicFlow/utils/index.js +5 -0
  81. package/build/legacy/dynamicFlow/utils/responseParsers/response-parsers.js +185 -0
  82. package/build/legacy/dynamicFlow/utils/useDebouncedRefresh/useDebouncedRefresh.js +26 -0
  83. package/build/legacy/dynamicFlow/utils/useDynamicFlowState.js +137 -0
  84. package/build/legacy/dynamicFlow/utils/useLoader.js +22 -0
  85. package/build/legacy/formControl/FormControl.js +266 -0
  86. package/build/legacy/formControl/index.js +1 -0
  87. package/build/legacy/formControl/utils/getAutocompleteString.js +80 -0
  88. package/build/legacy/formControl/utils/index.js +2 -0
  89. package/build/legacy/formControl/utils/value-utils.js +108 -0
  90. package/build/legacy/jsonSchemaForm/JsonSchemaForm.js +24 -0
  91. package/build/legacy/jsonSchemaForm/allOfSchema/AllOfSchema.js +50 -0
  92. package/build/legacy/jsonSchemaForm/allOfSchema/index.js +1 -0
  93. package/build/legacy/jsonSchemaForm/arrayTypeSchema/ArraySchema.js +25 -0
  94. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/ArrayListSchema.js +34 -0
  95. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multiSelectSchema/MultiSelectSchema.js +84 -0
  96. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/MultipleFileUploadSchema.js +141 -0
  97. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/index.js +1 -0
  98. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/index.js +2 -0
  99. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/upload-utils.js +79 -0
  100. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/useFormattedDefaultErrorMessages.js +14 -0
  101. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/ItemSummary.js +7 -0
  102. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchema.js +134 -0
  103. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchemaStep.js +85 -0
  104. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.js +135 -0
  105. package/build/legacy/jsonSchemaForm/arrayTypeSchema/index.js +1 -0
  106. package/build/legacy/jsonSchemaForm/basicTypeSchema/BasicTypeSchema.js +111 -0
  107. package/build/legacy/jsonSchemaForm/basicTypeSchema/index.js +1 -0
  108. package/build/legacy/jsonSchemaForm/controlFeedback/ControlFeedback.js +86 -0
  109. package/build/legacy/jsonSchemaForm/controlFeedback/index.js +1 -0
  110. package/build/legacy/jsonSchemaForm/genericSchema/GenericSchema.js +85 -0
  111. package/build/legacy/jsonSchemaForm/genericSchema/index.js +1 -0
  112. package/build/legacy/jsonSchemaForm/help/Help.js +20 -0
  113. package/build/legacy/jsonSchemaForm/help/index.js +1 -0
  114. package/build/legacy/jsonSchemaForm/index.js +1 -0
  115. package/build/legacy/jsonSchemaForm/objectSchema/ObjectSchema.js +77 -0
  116. package/build/legacy/jsonSchemaForm/objectSchema/index.js +1 -0
  117. package/build/legacy/jsonSchemaForm/oneOfSchema/OneOfSchema.js +155 -0
  118. package/build/legacy/jsonSchemaForm/oneOfSchema/index.js +1 -0
  119. package/build/legacy/jsonSchemaForm/oneOfSchema/utils.js +68 -0
  120. package/build/legacy/jsonSchemaForm/persistAsyncSchema/PersistAsyncSchema.js +26 -0
  121. package/build/legacy/jsonSchemaForm/persistAsyncSchema/index.js +1 -0
  122. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/PersistAsyncBasicSchema.js +165 -0
  123. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/index.js +1 -0
  124. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/PersistAsyncBlobSchema.js +131 -0
  125. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/UploadInputAdapter.js +31 -0
  126. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/index.js +1 -0
  127. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/PromotedOneOfSchema.js +72 -0
  128. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/index.js +1 -0
  129. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promoted-one-of-utils.js +8 -0
  130. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfCheckboxControl.js +27 -0
  131. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfControl.js +31 -0
  132. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfRadioControl.js +32 -0
  133. package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.js +54 -0
  134. package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.messages.js +13 -0
  135. package/build/legacy/jsonSchemaForm/readOnlySchema/index.js +1 -0
  136. package/build/legacy/jsonSchemaForm/schemaFormControl/SchemaFormControl.js +133 -0
  137. package/build/legacy/jsonSchemaForm/schemaFormControl/index.js +1 -0
  138. package/build/legacy/jsonSchemaForm/schemaFormControl/utils/index.js +1 -0
  139. package/build/legacy/jsonSchemaForm/schemaFormControl/utils/mapping-utils.js +107 -0
  140. package/build/legacy/jsonSchemaForm/validationAsyncSchema/ValidationAsyncSchema.js +150 -0
  141. package/build/legacy/jsonSchemaForm/validationAsyncSchema/index.js +1 -0
  142. package/build/legacy/layout/DynamicLayout.js +68 -0
  143. package/build/legacy/layout/alert/DynamicAlert.js +29 -0
  144. package/build/legacy/layout/box/DynamicBox.js +41 -0
  145. package/build/legacy/layout/button/DynamicButton.js +27 -0
  146. package/build/legacy/layout/button/utils.js +45 -0
  147. package/build/legacy/layout/columns/DynamicColumns.js +38 -0
  148. package/build/legacy/layout/decision/DynamicDecision.js +21 -0
  149. package/build/legacy/layout/divider/DynamicDivider.js +9 -0
  150. package/build/legacy/layout/external/DynamicExternal.js +32 -0
  151. package/build/legacy/layout/external/DynamicExternal.messages.js +8 -0
  152. package/build/legacy/layout/form/DynamicForm.js +22 -0
  153. package/build/legacy/layout/heading/DynamicHeading.js +51 -0
  154. package/build/legacy/layout/icon/DynamicIcon.js +17 -0
  155. package/build/legacy/layout/icon/FlagIcon.js +198 -0
  156. package/build/legacy/layout/icon/NamedIcon.js +19 -0
  157. package/build/legacy/layout/image/DynamicImage.js +111 -0
  158. package/build/legacy/layout/index.js +20 -0
  159. package/build/legacy/layout/instructions/DynamicInstructions.js +30 -0
  160. package/build/legacy/layout/list/DynamicStatusList.js +37 -0
  161. package/build/legacy/layout/loadingIndicator/DynamicLoadingIndicator.js +11 -0
  162. package/build/legacy/layout/markdown/DynamicMarkdown.js +23 -0
  163. package/build/legacy/layout/modal/DynamicModal.js +26 -0
  164. package/build/legacy/layout/paragraph/DynamicParagraph.js +46 -0
  165. package/build/legacy/layout/paragraph/useSnackBarIfAvailable.js +9 -0
  166. package/build/legacy/layout/review/DynamicReview.js +58 -0
  167. package/build/legacy/layout/search/DynamicSearch.js +58 -0
  168. package/build/legacy/layout/search/SearchInput.js +17 -0
  169. package/build/legacy/layout/search/SearchResults.js +31 -0
  170. package/build/legacy/layout/search/useSearch.js +137 -0
  171. package/build/legacy/layout/utils/getNavigationOptionMedia.js +28 -0
  172. package/build/legacy/layout/utils/index.js +32 -0
  173. package/build/legacy/step/cameraStep/CameraStep.js +124 -0
  174. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.js +161 -0
  175. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.messages.js +58 -0
  176. package/build/legacy/step/cameraStep/cameraCapture/components/bottomBar/BottomBar.js +28 -0
  177. package/build/legacy/step/cameraStep/cameraCapture/components/index.js +3 -0
  178. package/build/legacy/step/cameraStep/cameraCapture/components/orientationLockOverlay/OrientationLockOverlay.js +19 -0
  179. package/build/legacy/step/cameraStep/cameraCapture/components/orientationLockOverlay/OrientationLockOverlay.messages.js +8 -0
  180. package/build/legacy/step/cameraStep/cameraCapture/hooks/useFullScreenOrientationLock.js +60 -0
  181. package/build/legacy/step/cameraStep/cameraCapture/hooks/useVideoConstraints.js +80 -0
  182. package/build/legacy/step/cameraStep/cameraCapture/index.js +1 -0
  183. package/build/legacy/step/cameraStep/cameraCapture/overlay/Overlay.js +77 -0
  184. package/build/legacy/step/cameraStep/cameraCapture/screens/cameraErrorScreen/CameraErrorScreen.js +18 -0
  185. package/build/legacy/step/cameraStep/cameraCapture/screens/index.js +1 -0
  186. package/build/legacy/step/cameraStep/cameraCapture/tracking/index.js +109 -0
  187. package/build/legacy/step/cameraStep/cameraCapture/types/index.js +7 -0
  188. package/build/legacy/step/cameraStep/cameraCapture/utils/index.js +107 -0
  189. package/build/legacy/step/cameraStep/index.js +1 -0
  190. package/build/legacy/step/externalConfirmationStep/ExternalConfirmationStep.js +64 -0
  191. package/build/legacy/step/externalConfirmationStep/index.js +1 -0
  192. package/build/legacy/step/index.js +3 -0
  193. package/build/legacy/step/layoutStep/LayoutStep.js +33 -0
  194. package/build/legacy/step/layoutStep/index.js +1 -0
  195. package/build/legacy/step/layoutStep/utils/index.js +2 -0
  196. package/build/legacy/step/layoutStep/utils/inline-reference-utils.js +105 -0
  197. package/build/legacy/step/layoutStep/utils/layout-utils.js +212 -0
  198. package/build/main.js +4791 -226
  199. package/build/main.min.js +1 -1
  200. package/build/main.mjs +4792 -227
  201. package/build/revamp/domain/components/AlertComponent.js +50 -0
  202. package/build/revamp/domain/components/AllOfComponent.js +72 -0
  203. package/build/revamp/domain/components/BooleanInputComponent.js +108 -0
  204. package/build/revamp/domain/components/BoxComponent.js +65 -0
  205. package/build/revamp/domain/components/ButtonComponent.js +50 -0
  206. package/build/revamp/domain/components/ColumnsComponent.js +74 -0
  207. package/build/revamp/domain/components/ConstComponent.js +50 -0
  208. package/build/revamp/domain/components/ContainerComponent.js +65 -0
  209. package/build/revamp/domain/components/DateInputComponent.js +127 -0
  210. package/build/revamp/domain/components/DecisionComponent.js +50 -0
  211. package/build/revamp/domain/components/DividerComponent.js +50 -0
  212. package/build/revamp/domain/components/FormComponent.js +65 -0
  213. package/build/revamp/domain/components/HeadingComponent.js +50 -0
  214. package/build/revamp/domain/components/ImageComponent.js +50 -0
  215. package/build/revamp/domain/components/InstructionsComponent.js +50 -0
  216. package/build/revamp/domain/components/IntegerInputComponent.js +125 -0
  217. package/build/revamp/domain/components/LoadingIndicatorComponent.js +50 -0
  218. package/build/revamp/domain/components/MarkdownComponent.js +50 -0
  219. package/build/revamp/domain/components/ModalComponent.js +65 -0
  220. package/build/revamp/domain/components/MultiUploadInputComponent.js +190 -0
  221. package/build/revamp/domain/components/NumberInputComponent.js +125 -0
  222. package/build/revamp/domain/components/ObjectComponent.js +104 -0
  223. package/build/revamp/domain/components/ParagraphComponent.js +50 -0
  224. package/build/revamp/domain/components/ReviewComponent.js +50 -0
  225. package/build/revamp/domain/components/SelectInputComponent.js +138 -0
  226. package/build/revamp/domain/components/StatusListComponent.js +50 -0
  227. package/build/revamp/domain/components/StepDomainComponent.js +93 -0
  228. package/build/revamp/domain/components/TextInputComponent.js +125 -0
  229. package/build/revamp/domain/components/UploadInputComponent.js +151 -0
  230. package/build/revamp/domain/components/repeatableComponent/RepeatableComponent.js +148 -0
  231. package/build/revamp/domain/components/searchComponent/SearchComponent.js +108 -0
  232. package/build/revamp/domain/components/utils/component-utils.js +18 -0
  233. package/build/revamp/domain/components/utils/debounce.js +38 -0
  234. package/build/revamp/domain/components/utils/file-utils.js +46 -0
  235. package/build/revamp/domain/components/utils/getComponentForLocalValueKey.js +31 -0
  236. package/build/revamp/domain/components/utils/isPartialLocalValueMatch.js +40 -0
  237. package/build/revamp/domain/features/events.js +1 -0
  238. package/build/revamp/domain/features/persistAsync/getComponentPersistAsync.js +133 -0
  239. package/build/revamp/domain/features/persistAsync/getPerformPersistAsync.js +103 -0
  240. package/build/revamp/domain/features/refresh/getPerformRefresh.js +53 -0
  241. package/build/revamp/domain/features/summary/summary-utils.js +39 -0
  242. package/build/revamp/domain/features/utils/http-utils.js +34 -0
  243. package/build/revamp/domain/features/utils/response-utils.js +9 -0
  244. package/build/revamp/domain/features/validation/validation-functions.js +12 -0
  245. package/build/revamp/domain/features/validation/value-checks.js +111 -0
  246. package/build/revamp/domain/features/validationAsync/getComponentValidationAsync.js +94 -0
  247. package/build/revamp/domain/features/validationAsync/getPerformValidationAsync.js +107 -0
  248. package/build/revamp/domain/mappers/types.js +1 -0
  249. package/build/revamp/domain/types.js +1 -0
  250. package/build/revamp/flow/response-utils.js +88 -0
  251. package/build/revamp/renderers/CoreContainerRenderer.js +8 -0
  252. package/build/revamp/renderers/LoadingContext.js +7 -0
  253. package/build/revamp/renderers/types.js +1 -0
  254. package/build/revamp/types.js +1 -0
  255. package/build/revamp/utils/component-utils.js +86 -0
  256. package/build/revamp/utils/type-utils.js +56 -0
  257. package/build/revamp/utils/type-validators.js +16 -0
  258. package/build/revamp/wise/renderers/AlertRenderer.js +11 -0
  259. package/build/revamp/wise/renderers/BooleanInputRenderer.js +34 -0
  260. package/build/revamp/wise/renderers/BoxRenderer.js +30 -0
  261. package/build/revamp/wise/renderers/ButtonRenderer.js +64 -0
  262. package/build/revamp/wise/renderers/ColumnsRenderer.js +25 -0
  263. package/build/revamp/wise/renderers/components/FieldInput.js +20 -0
  264. package/build/revamp/wise/renderers/components/Help.js +21 -0
  265. package/build/revamp/wise/renderers/components/LabelContentWithHelp.js +6 -0
  266. package/build/revamp/wise/renderers/utils/layout-utils.js +31 -0
  267. package/build/types/legacy/step/externalConfirmationStep/ExternalConfirmationStep.d.ts +1 -1
  268. package/build/types/revamp/domain/components/StepDomainComponent.d.ts +4 -2
  269. package/build/types/revamp/renderers/step/ExternalConfirmationDialog.d.ts +6 -0
  270. package/build/types/revamp/renderers/{StepRenderer.d.ts → step/StepRenderer.d.ts} +1 -1
  271. package/build/types/revamp/renderers/step/useExternal.d.ts +4 -0
  272. package/build/types/revamp/renderers/stepComponentToProps.d.ts +1 -1
  273. package/build/types/revamp/renderers/types.d.ts +3 -0
  274. package/package.json +13 -13
  275. /package/build/types/{legacy/step/externalConfirmationStep/ExternalConfirmationStep.messages.d.ts → common/messages/external-confirmation.messages.d.ts} +0 -0
@@ -0,0 +1,72 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
22
+ import { useState } from 'react';
23
+ import { DynamicAlert } from '../../layout';
24
+ import GenericSchema from '../genericSchema';
25
+ import ObjectSchema from '../objectSchema';
26
+ import { getSelectionFromModel } from './promoted-one-of-utils';
27
+ import PromotedOneOfControl from './promotedOneOfControl/PromotedOneOfControl';
28
+ var isPromoted = function (schema) { return schema.promoted === true; };
29
+ var PromotedOneOfSchema = function (props) {
30
+ var _a;
31
+ // TODO: LOW avoid type assertion -- actually non-null assertion operator: props.model!
32
+ var _b = useState(getSelectionFromModel(props.schema, props.model) ||
33
+ ((_a = props.schema.promotion) === null || _a === void 0 ? void 0 : _a["default"]) ||
34
+ 'promoted'), selection = _b[0], setSelection = _b[1];
35
+ var promotedAlert = props.schema.alert;
36
+ var promotedOneOf = props.schema.oneOf.find(isPromoted);
37
+ // TODO: LOW avoid type assertion -- actually non-null assertion operator
38
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
39
+ var promotedObjectSchema = getPromotedObjectSchema(promotedOneOf);
40
+ var otherOneOf = getOtherOneOf(props.schema);
41
+ return (_jsxs(_Fragment, { children: [promotedAlert && _jsx(DynamicAlert, { component: promotedAlert }), _jsx(PromotedOneOfControl, { id: props.schema.$id, title: props.schema.title,
42
+ // TODO: LOW avoid type assertion -- actually non-null assertion operator
43
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
44
+ promotedOneOf: promotedOneOf,
45
+ // TODO: LOW avoid type assertion -- actually non-null assertion operator
46
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
47
+ promotion: props.schema.promotion, selection: selection, setSelection: setSelection }), selection === 'promoted' && _jsx(ObjectSchema, __assign({}, props, { schema: promotedObjectSchema })), selection === 'other' && _jsx(GenericSchema, __assign({}, props, { schema: otherOneOf }))] }));
48
+ };
49
+ function getPromotedObjectSchema(promotedSchema) {
50
+ return __assign(__assign({}, promotedSchema), {
51
+ // We don't need to show these since they are already displayed in the radio option
52
+ title: undefined, description: undefined });
53
+ }
54
+ function getOtherOneOf(schema) {
55
+ var _a, _b, _c;
56
+ var other = ((_a = schema.promotion) === null || _a === void 0 ? void 0 : _a.displayTwice)
57
+ ? __spreadArray([], schema.oneOf, true) : schema.oneOf.filter(function (one) { return !isPromoted(one); });
58
+ var title = (_c = (_b = schema.promotion) === null || _b === void 0 ? void 0 : _b.other.heading) === null || _c === void 0 ? void 0 : _c.text;
59
+ if (other.length === 1) {
60
+ return __assign(__assign({}, other[0]), { title: title });
61
+ }
62
+ if (other.length > 1) {
63
+ return {
64
+ title: title,
65
+ oneOf: other,
66
+ // TODO: LOW avoid type assertion -- the spec does not recognise a `control` property in ObjectSchema
67
+ control: schema.control
68
+ };
69
+ }
70
+ return null;
71
+ }
72
+ export default PromotedOneOfSchema;
@@ -0,0 +1 @@
1
+ export { default } from './PromotedOneOfSchema';
@@ -0,0 +1,8 @@
1
+ import { getBestMatchingSchemaIndexForValue } from '../oneOfSchema/utils';
2
+ export var getSelectionFromModel = function (schema, model) {
3
+ var index = getBestMatchingSchemaIndexForValue(schema, model);
4
+ if (index !== null) {
5
+ return schema.oneOf[index].promoted ? 'promoted' : 'other';
6
+ }
7
+ return null;
8
+ };
@@ -0,0 +1,27 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { Checkbox } from '@transferwise/components';
14
+ var PromotedOneOfCheckboxControl = function (props) {
15
+ var id = props.id, selection = props.selection, setSelection = props.setSelection;
16
+ var _a = props.promotion, promoted = _a.promoted, other = _a.other, checkedMeans = _a.checkedMeans;
17
+ var title = checkedMeans === 'other' ? other.title : (promoted === null || promoted === void 0 ? void 0 : promoted.title) || props.promotedOneOf.title;
18
+ var selectionWhenChecked = checkedMeans === 'other' ? 'other' : 'promoted';
19
+ var selectionWhenUnchecked = checkedMeans === 'other' ? 'promoted' : 'other';
20
+ var checked = selection === selectionWhenChecked;
21
+ var toggleSelection = function () {
22
+ setSelection(checked ? selectionWhenUnchecked : selectionWhenChecked);
23
+ };
24
+ return (_jsx("div", __assign({ className: "form-group" }, { children: _jsx(Checkbox, { id: id, label: title, checked: checked, onChange: toggleSelection }) })));
25
+ };
26
+ PromotedOneOfCheckboxControl.defaultProps = {};
27
+ export default PromotedOneOfCheckboxControl;
@@ -0,0 +1,31 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
13
+ import { generateRandomId } from '../../../common/utils';
14
+ import PromotedOneOfCheckboxControl from './PromotedOneOfCheckboxControl';
15
+ import PromotedOneOfRadioControl from './PromotedOneOfRadioControl';
16
+ function PromotedOneOfControl(props) {
17
+ var controlType = props.promotion.control || 'radio';
18
+ switch (controlType) {
19
+ case 'radio':
20
+ return _jsx(PromotedOneOfRadioControl, __assign({}, props));
21
+ case 'checkbox':
22
+ return _jsx(PromotedOneOfCheckboxControl, __assign({}, props));
23
+ default:
24
+ return _jsx(_Fragment, {});
25
+ }
26
+ }
27
+ PromotedOneOfControl.defaultProps = {
28
+ id: generateRandomId(),
29
+ title: undefined
30
+ };
31
+ export default PromotedOneOfControl;
@@ -0,0 +1,32 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { RadioGroup } from '@transferwise/components';
14
+ import { getAvatarPropertyForRadioOption } from '../../schemaFormControl/utils';
15
+ function PromotedOneOfRadioControl(props) {
16
+ var _a, _b;
17
+ var id = props.id, selection = props.selection, setSelection = props.setSelection, promotion = props.promotion, promotedOneOf = props.promotedOneOf, title = props.title;
18
+ var radios = [
19
+ __assign({ value: 'promoted',
20
+ // TODO: LOW avoid type assertion below: the expression may be nullish, but "label" cannot be
21
+ label: (((_a = promotion.promoted) === null || _a === void 0 ? void 0 : _a.title) || promotedOneOf.title), secondary: ((_b = promotion.promoted) === null || _b === void 0 ? void 0 : _b.description) || promotedOneOf.description }, getAvatarPropertyForRadioOption(promotedOneOf)),
22
+ __assign({ value: 'other', label: promotion.other.title, secondary: promotion.other.description }, getAvatarPropertyForRadioOption(promotion.other)),
23
+ ];
24
+ return (_jsxs("div", __assign({ className: "form-group" }, { children: [title && (_jsx("label", __assign({ className: "control-label", htmlFor: id }, { children: title }))), _jsx(RadioGroup, { name: "promoted-selection", selectedValue: selection, radios: radios,
25
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
26
+ // @ts-expect-error -- TODO: avoid @ts-ignore -- apparently RadioGroup does not expect an id prop
27
+ id: id, onChange: setSelection })] })));
28
+ }
29
+ PromotedOneOfRadioControl.defaultProps = {
30
+ title: undefined
31
+ };
32
+ export default PromotedOneOfRadioControl;
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DefinitionList, Layout } from '@transferwise/components';
3
+ import { useIntl } from 'react-intl';
4
+ import { isBasicSchema, isOneOfSchema } from '../../common/utils';
5
+ import { isBoolean } from '../../common/validators';
6
+ import { getAvatarPropertyForRadioOption } from '../schemaFormControl/utils';
7
+ import messages from './ReadOnlySchema.messages';
8
+ function ReadOnlySchema(_a) {
9
+ var schema = _a.schema, model = _a.model;
10
+ var _b = schema.title, title = _b === void 0 ? '' : _b;
11
+ var formatMessage = useIntl().formatMessage;
12
+ var value = getValueForSchema({ schema: schema, model: model, formatMessage: formatMessage });
13
+ // FIXME: This is a workaround for the fact that the DefinitionList component value prop doesn't match Model
14
+ return (_jsx(DefinitionList, { layout: Layout.VERTICAL_ONE_COLUMN, definitions: [{ title: title, value: value, key: '' }] }));
15
+ }
16
+ export default ReadOnlySchema;
17
+ function getValueForSchema(_a) {
18
+ var schema = _a.schema, model = _a.model, formatMessage = _a.formatMessage;
19
+ if (isBasicSchema(schema)) {
20
+ if (isOneOfSchema(schema)) {
21
+ return getValueFromOneOfSchema(schema, model);
22
+ // eslint-disable-next-line no-else-return
23
+ }
24
+ else {
25
+ // eslint-disable-next-line no-lonely-if
26
+ if (schema.type === 'boolean' && isBoolean(model)) {
27
+ return model ? formatMessage(messages.yes) : formatMessage(messages.no);
28
+ // eslint-disable-next-line no-else-return
29
+ }
30
+ else {
31
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
32
+ return (model && model.toString()) || '';
33
+ }
34
+ }
35
+ }
36
+ return '';
37
+ }
38
+ function getValueFromOneOfSchema(schema, model) {
39
+ var option = getSelectedOneOf(schema, model);
40
+ // FIXME Remove type assertion
41
+ return option ? getValueFromOption(option) : model;
42
+ }
43
+ function getSelectedOneOf(schema, model) {
44
+ return schema.oneOf.find(function (childSchema) {
45
+ return 'const' in childSchema ? model === childSchema["const"] : false;
46
+ });
47
+ }
48
+ function getValueFromOption(option) {
49
+ var text = option.title && option.description
50
+ ? "".concat(option.title, " - ").concat(option.description)
51
+ : option.title || '';
52
+ var icon = getAvatarPropertyForRadioOption({ icon: option.icon });
53
+ return (icon === null || icon === void 0 ? void 0 : icon.avatar) ? (_jsxs(_Fragment, { children: [icon.avatar, " ", text] })) : (text);
54
+ }
@@ -0,0 +1,13 @@
1
+ import { defineMessages } from 'react-intl';
2
+ export default defineMessages({
3
+ yes: {
4
+ id: 'dynamicFlows.ReadOnlySchema.yes',
5
+ defaultMessage: 'Yes',
6
+ description: 'Yes, used for boolean schemas with a value of true.'
7
+ },
8
+ no: {
9
+ id: 'dynamicFlows.ReadOnlySchema.no',
10
+ defaultMessage: 'No',
11
+ description: 'No: used for boolean schemas with a value of false.'
12
+ }
13
+ });
@@ -0,0 +1 @@
1
+ export { default } from './ReadOnlySchema';
@@ -0,0 +1,133 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { useEffect } from 'react';
14
+ import { FormControlType } from '../../common/constants';
15
+ import { isOneOfSchema, isStringSchema } from '../../common/utils';
16
+ import { getValidBasicModelOrNull, isNull, isUndefined } from '../../common/validators';
17
+ import FormControl from '../../formControl';
18
+ import { mapConstSchemaToOption, mapSchemaToUploadOptions } from './utils';
19
+ import { useLogger } from '../../common/contexts';
20
+ var isNativeInput = function (propsSchemaType) {
21
+ return propsSchemaType === 'string' || propsSchemaType === 'number';
22
+ };
23
+ export var getControlType = function (schema) {
24
+ if (isOneOfSchema(schema)) {
25
+ if (schema.control === FormControlType.TAB && schema.oneOf.length > 3) {
26
+ return FormControlType.SELECT;
27
+ }
28
+ return schema.control || FormControlType.SELECT;
29
+ }
30
+ if (isStringSchema(schema)) {
31
+ return getStringSchemaControlType(schema);
32
+ }
33
+ // We should really check if the control is known, but I don't want to break behaviour so I'm leaving it as is for now
34
+ if ('control' in schema && schema.control) {
35
+ return schema.control;
36
+ }
37
+ if (schema.type === 'boolean') {
38
+ return 'checkbox';
39
+ }
40
+ if (schema.type === 'integer') {
41
+ return 'number';
42
+ }
43
+ return schema.type;
44
+ };
45
+ export var getStringSchemaControlType = function (_a) {
46
+ var format = _a.format, control = _a.control;
47
+ if (control) {
48
+ return stringControlToFormControlType[control] || control;
49
+ }
50
+ if (format) {
51
+ return stringFormatToFormControlType[format] || 'text';
52
+ }
53
+ return 'text';
54
+ };
55
+ var stringControlToFormControlType = {
56
+ 'date-lookup': 'date-lookup',
57
+ password: 'password',
58
+ textarea: 'textarea',
59
+ email: 'email',
60
+ numeric: 'numeric',
61
+ 'phone-number': 'tel'
62
+ };
63
+ var stringFormatToFormControlType = {
64
+ date: 'date',
65
+ // Legacy formats
66
+ email: 'email',
67
+ base64url: 'file',
68
+ password: 'password',
69
+ 'phone-number': 'tel'
70
+ };
71
+ var getOptions = function (schema, controlType) {
72
+ if (schema.oneOf) {
73
+ return schema.oneOf.map(function (childSchema) { return mapConstSchemaToOption(childSchema, controlType); });
74
+ }
75
+ return null;
76
+ };
77
+ function SchemaFormControl(props) {
78
+ var id = props.id, schema = props.schema, value = props.value, disabled = props.disabled, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, onSearchChange = props.onSearchChange, describedBy = props.describedBy;
79
+ var log = useLogger();
80
+ var getSanitisedValue = function (value) {
81
+ return isNativeInput(schema.type) && (isNull(value) || isUndefined(value)) ? '' : value;
82
+ };
83
+ var onModelChange = function (value, type, metadata) {
84
+ onChange(getValidBasicModelOrNull(value, schema), type, metadata);
85
+ };
86
+ var controlType = getControlType(schema);
87
+ useEffect(function () {
88
+ warnIfInvalidSchema(schema, log, controlType);
89
+ // eslint-disable-next-line react-hooks/exhaustive-deps
90
+ }, [JSON.stringify(schema), log, controlType]);
91
+ var options = schema.values || getOptions(schema, controlType);
92
+ var events = {
93
+ onFocus: onFocus,
94
+ onBlur: onBlur,
95
+ onSearchChange: onSearchChange,
96
+ onChange: onModelChange
97
+ };
98
+ var safeValue = getSanitisedValue(value);
99
+ var controlProps = {
100
+ id: id,
101
+ name: id,
102
+ label: schema.title,
103
+ options: options || [],
104
+ placeholder: schema.placeholder,
105
+ autoComplete: !schema.help,
106
+ autocompleteHint: schema.autocompleteHint,
107
+ disabled: disabled || schema.disabled,
108
+ displayPattern: schema.displayFormat,
109
+ // TODO: LOW avoid type assertion below
110
+ uploadProps: mapSchemaToUploadOptions(schema),
111
+ describedBy: describedBy
112
+ };
113
+ return (_jsx("div", __assign({ "aria-describedby": describedBy }, { children: _jsx(FormControl, __assign({ type: controlType, value: safeValue }, events, controlProps)) })));
114
+ }
115
+ SchemaFormControl.defaultProps = {
116
+ value: null,
117
+ onFocus: null,
118
+ onBlur: null,
119
+ onSearchChange: null,
120
+ disabled: false
121
+ };
122
+ var warnIfInvalidSchema = function (schema, log, controlType) {
123
+ if (isOneOfSchema(schema) && schema.oneOf.length === 2 && !schema.control) {
124
+ log.warning('Deprecation warning', 'A oneOf schema with 2 options and no control type currently renders as a "radio" but will be changed to render as a "select". Please specify control radio to retain the existing behaviour.');
125
+ }
126
+ if (controlType === 'file') {
127
+ log.warning('Deprecation warning', 'Please use a persist-async blob schema instead of string with base64url for file uploads. The base64url does not perform well on low end devices. Support for this schema will be removed in a later release.');
128
+ }
129
+ if (schema.values) {
130
+ log.warning('Deprecated schema', 'Schema.values is a legacy approach. Please use oneOf.');
131
+ }
132
+ };
133
+ export default SchemaFormControl;
@@ -0,0 +1 @@
1
+ export { default } from './SchemaFormControl';
@@ -0,0 +1 @@
1
+ export * from './mapping-utils';
@@ -0,0 +1,107 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { Avatar, AvatarType } from '@transferwise/components';
14
+ import { Flag } from '@wise/art';
15
+ import { isArray, isNull, isUndefined } from '../../../common/validators';
16
+ import DynamicIcon, { isValidIconName } from '../../../layout/icon/DynamicIcon';
17
+ import { isFlagIcon } from '../../../layout/icon/FlagIcon';
18
+ var mapConstSchemaToOption = function (schema, controlType) {
19
+ switch (controlType) {
20
+ case 'select':
21
+ return mapConstSchemaToSelectOption(schema);
22
+ case 'radio':
23
+ default:
24
+ return mapConstSchemaToRadioOption(schema);
25
+ }
26
+ };
27
+ var mapConstSchemaToRadioOption = function (schema) { return (__assign(__assign(__assign({
28
+ // TODO: LOW avoid type assertion -- using || '' would fail some tests
29
+ label: schema.title, value: schema["const"] }, getRadioOptionDescription(schema.title, schema.description)), getAvatarPropertyForRadioOption(schema)), getDisabled(schema.disabled))); };
30
+ var mapConstSchemaToSelectOption = function (schema) { return (__assign(__assign(__assign(__assign(__assign({
31
+ // TODO: LOW avoid type assertion -- using || '' would fail some tests
32
+ label: schema.title, value: schema["const"] }, getOptionDescription(schema.title, schema.description)), getIconPropertyForSelectOption(schema.icon)), mapImage(schema.image)), getDisabled(schema.disabled)), mapKeywordsToSearchStrings(schema.keywords))); };
33
+ var mapKeywordsToSearchStrings = function (searchStrings) {
34
+ return isArray(searchStrings) ? { searchStrings: searchStrings } : {};
35
+ };
36
+ var mapImage = function (image) {
37
+ if (image === null || image === void 0 ? void 0 : image.url) {
38
+ return {
39
+ icon: (_jsx("div", __assign({ className: "media" }, { children: _jsx("div", __assign({ className: "np-option__no-media-circle" }, { children: _jsx("img", { src: image.url, alt: image.name || '' }) })) }))),
40
+ hideIconInTrigger: true
41
+ };
42
+ }
43
+ return null;
44
+ };
45
+ var getIconPropertyForSelectOption = function (icon) {
46
+ if ((icon === null || icon === void 0 ? void 0 : icon.name) && isFlagIcon(icon.name)) {
47
+ return {
48
+ icon: _jsx(Flag, { code: icon.name.substring(5), intrinsicSize: 24 })
49
+ };
50
+ }
51
+ if ((icon === null || icon === void 0 ? void 0 : icon.name) && isValidIconName(icon.name)) {
52
+ return {
53
+ icon: _jsx(DynamicIcon, { type: icon.name })
54
+ };
55
+ }
56
+ if (icon === null || icon === void 0 ? void 0 : icon.text) {
57
+ return {
58
+ icon: _jsx("span", { children: icon.text })
59
+ };
60
+ }
61
+ return null;
62
+ };
63
+ var getAvatarPropertyForRadioOption = function (_a) {
64
+ var image = _a.image, icon = _a.icon;
65
+ if (image === null || image === void 0 ? void 0 : image.url) {
66
+ return {
67
+ avatar: (_jsx(Avatar, __assign({ type: AvatarType.THUMBNAIL }, { children: _jsx("img", { src: image.url, alt: "" }) })))
68
+ };
69
+ }
70
+ if ((icon === null || icon === void 0 ? void 0 : icon.name) && isValidIconName(icon.name)) {
71
+ return {
72
+ avatar: (_jsx(Avatar, __assign({ type: AvatarType.ICON }, { children: _jsx(DynamicIcon, { type: icon.name }) })))
73
+ };
74
+ }
75
+ if (icon === null || icon === void 0 ? void 0 : icon.text) {
76
+ return {
77
+ avatar: _jsx(Avatar, __assign({ type: AvatarType.INITIALS }, { children: icon.text }))
78
+ };
79
+ }
80
+ return null;
81
+ };
82
+ var mapSchemaToUploadOptions = function (_a) {
83
+ var accepts = _a.accepts;
84
+ return (__assign({}, (isArray(accepts) && { usAccept: accepts.join(',') })));
85
+ };
86
+ var getOptionDescription = function (title, description) {
87
+ if (title && description) {
88
+ if ((title + description).length > 50) {
89
+ return { secondary: description };
90
+ }
91
+ return { note: description };
92
+ }
93
+ return undefined;
94
+ };
95
+ var getRadioOptionDescription = function (title, description) {
96
+ if (title && description) {
97
+ return { note: description };
98
+ }
99
+ return undefined;
100
+ };
101
+ var getDisabled = function (disabled) {
102
+ if (!isUndefined(disabled) && !isNull(disabled)) {
103
+ return { disabled: disabled };
104
+ }
105
+ return undefined;
106
+ };
107
+ export { mapConstSchemaToOption, getAvatarPropertyForRadioOption, mapSchemaToUploadOptions };
@@ -0,0 +1,150 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { jsx as _jsx } from "react/jsx-runtime";
49
+ import { useEffect, useRef, useState } from 'react';
50
+ import { useEventDispatcher, useLogger } from '../../common/contexts';
51
+ import { isEqual } from '../../common/utils';
52
+ import { isValidSchema, isNull, isObject, isString } from '../../common/validators';
53
+ import BasicTypeSchema from '../basicTypeSchema';
54
+ import { useHttpClient } from '../../../common/httpClientContext';
55
+ function ValidationAsyncSchema(props) {
56
+ var _this = this;
57
+ var schema = props.schema, model = props.model, required = props.required, submitted = props.submitted, errors = props.errors, onChange = props.onChange;
58
+ var _a = useState(model), validationAsyncModel = _a[0], setValidationAsyncModel = _a[1];
59
+ var previousRequestedModelReference = useRef(null);
60
+ var _b = useState(null), validationAsyncSuccessMessage = _b[0], setValidationAsyncSuccessMessage = _b[1];
61
+ var _c = useState(null), validationAsyncErrors = _c[0], setValidationAsyncErrors = _c[1];
62
+ var _d = useState(false), fieldSubmitted = _d[0], setFieldSubmitted = _d[1];
63
+ var _e = useState(null), abortController = _e[0], setAbortController = _e[1];
64
+ var httpClient = useHttpClient();
65
+ var onEvent = useEventDispatcher();
66
+ var log = useLogger();
67
+ useEffect(function () {
68
+ if (!schema.validationAsync.method) {
69
+ log.warning('Invalid schema or model', 'ValidationAsyncSchema without a "method" property would have defaulted to "GET" in previous versions. Now defaults to "POST".', {});
70
+ }
71
+ }, [log, schema.validationAsync.method]);
72
+ var getValidationAsyncResponse = function (currentValidationAsyncModel, validationAsyncSpec) { return __awaiter(_this, void 0, void 0, function () {
73
+ var signal, requestBody, response, jsonResponse, _a;
74
+ var _b;
75
+ return __generator(this, function (_c) {
76
+ switch (_c.label) {
77
+ case 0:
78
+ signal = abortCurrentRequestAndGetNewAbortSignal();
79
+ requestBody = (_b = {}, _b[validationAsyncSpec.param] = currentValidationAsyncModel, _b);
80
+ previousRequestedModelReference.current = currentValidationAsyncModel;
81
+ setFieldSubmitted(true);
82
+ onEvent('Dynamic Flow - ValidationAsync', { status: 'pending' });
83
+ return [4 /*yield*/, httpClient(validationAsyncSpec.url, {
84
+ method: validationAsyncSpec.method || 'POST',
85
+ headers: { 'Content-Type': 'application/json' },
86
+ body: validationAsyncSpec.method === 'GET' ? undefined : JSON.stringify(requestBody),
87
+ signal: signal
88
+ })];
89
+ case 1:
90
+ response = _c.sent();
91
+ _c.label = 2;
92
+ case 2:
93
+ _c.trys.push([2, 4, , 5]);
94
+ return [4 /*yield*/, response.json()];
95
+ case 3:
96
+ jsonResponse = _c.sent();
97
+ if (!isObject(jsonResponse)) {
98
+ throw new Error('Response body is not an object');
99
+ }
100
+ onEvent('Dynamic Flow - ValidationAsync', { status: 'success' });
101
+ if (response.status === 200) {
102
+ setValidationAsyncSuccessMessage(isString(jsonResponse.message) ? jsonResponse.message : null);
103
+ }
104
+ else if (response.status === 422) {
105
+ setValidationAsyncErrors(isString(jsonResponse.message) ? jsonResponse.message : null);
106
+ }
107
+ return [3 /*break*/, 5];
108
+ case 4:
109
+ _a = _c.sent();
110
+ onEvent('Dynamic Flow - ValidationAsync', { status: 'failure' });
111
+ return [3 /*break*/, 5];
112
+ case 5: return [2 /*return*/];
113
+ }
114
+ });
115
+ }); };
116
+ var abortCurrentRequestAndGetNewAbortSignal = function () {
117
+ if (abortController) {
118
+ abortController.abort();
119
+ }
120
+ var newAbortController = new AbortController();
121
+ setAbortController(newAbortController);
122
+ return newAbortController.signal;
123
+ };
124
+ var onBlur = function () {
125
+ if (!isNull(validationAsyncModel) &&
126
+ !isEqual(validationAsyncModel, previousRequestedModelReference.current) &&
127
+ isValidSchema(validationAsyncModel, schema)) {
128
+ void getValidationAsyncResponse(validationAsyncModel, schema.validationAsync);
129
+ }
130
+ };
131
+ var onValidationAsyncChange = function (parameters) {
132
+ onChange(__assign(__assign({}, parameters), { triggerSchema: schema, triggerModel: parameters.model }));
133
+ setValidationAsyncErrors(null);
134
+ setValidationAsyncSuccessMessage(null);
135
+ setValidationAsyncModel(parameters.model);
136
+ };
137
+ var basicTypeSchemaProps = {
138
+ submitted: submitted || fieldSubmitted,
139
+ model: validationAsyncModel,
140
+ errors: validationAsyncErrors || errors,
141
+ infoMessage: validationAsyncSuccessMessage,
142
+ onChange: onValidationAsyncChange,
143
+ onBlur: onBlur,
144
+ required: required,
145
+ schema: schema
146
+ };
147
+ return _jsx(BasicTypeSchema, __assign({}, basicTypeSchemaProps));
148
+ }
149
+ ValidationAsyncSchema.defaultProps = { required: false };
150
+ export default ValidationAsyncSchema;
@@ -0,0 +1 @@
1
+ export { default } from './ValidationAsyncSchema';