@wise/dynamic-flow-client 5.8.1 → 5.9.0
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.
- package/build/DynamicFlowCore.js +5 -0
- package/build/common/errorBoundary/ErrorBoundary.js +26 -0
- package/build/common/errorBoundary/ErrorBoundary.test.js +29 -0
- package/build/common/errorBoundary/ErrorBoundaryAlert.js +11 -0
- package/build/common/makeHttpClient/api-utils.js +3 -0
- package/build/common/makeHttpClient/index.js +1 -0
- package/build/common/makeHttpClient/makeHttpClient.js +10 -0
- package/build/common/makeHttpClient/makeHttpClient.test.js +186 -0
- package/build/common/messages/external-confirmation.messages.js +23 -0
- package/build/common/messages/file-upload.messages.js +13 -0
- package/build/common/messages/generic-error.messages.js +18 -0
- package/build/common/messages/help.messages.js +8 -0
- package/build/common/messages/multi-file-upload.messages.js +18 -0
- package/build/common/messages/multi-select.messages.js +8 -0
- package/build/common/messages/paragraph.messages.js +13 -0
- package/build/common/messages/repeatable.messages.js +23 -0
- package/build/common/messages/search.messages.js +8 -0
- package/build/common/messages/validation.array.messages.js +13 -0
- package/build/common/messages/validation.messages.js +53 -0
- package/build/controller/FlowController.js +368 -0
- package/build/controller/executePoll.js +49 -0
- package/build/controller/executeRefresh.js +39 -0
- package/build/controller/executeRequest.js +77 -0
- package/build/controller/executeSubmission.js +69 -0
- package/build/controller/getErrorMessage.js +7 -0
- package/build/controller/getRequestAbortController.js +13 -0
- package/build/controller/getResponseType.js +35 -0
- package/build/controller/getSafeHttpClient.js +8 -0
- package/build/controller/getStepCounter.js +16 -0
- package/build/controller/handleErrorResponse.js +26 -0
- package/build/controller/makeSafeHttpClient.js +8 -0
- package/build/controller/response-utils.js +72 -0
- package/build/domain/components/AlertComponent.js +1 -0
- package/build/domain/components/AllOfComponent.js +40 -0
- package/build/domain/components/BooleanInputComponent.js +50 -0
- package/build/domain/components/BoxComponent.js +3 -0
- package/build/domain/components/ButtonComponent.js +1 -0
- package/build/domain/components/ColumnsComponent.js +3 -0
- package/build/domain/components/ConstComponent.js +18 -0
- package/build/domain/components/ContainerComponent.js +3 -0
- package/build/domain/components/DateInputComponent.js +75 -0
- package/build/domain/components/DecisionComponent.js +1 -0
- package/build/domain/components/DividerComponent.js +1 -0
- package/build/domain/components/FormComponent.js +3 -0
- package/build/domain/components/FormattedValueComponent.js +44 -0
- package/build/domain/components/HeadingComponent.js +1 -0
- package/build/domain/components/ImageComponent.js +1 -0
- package/build/domain/components/InstructionsComponent.js +1 -0
- package/build/domain/components/IntegerInputComponent.js +74 -0
- package/build/domain/components/ListComponent.js +1 -0
- package/build/domain/components/LoadingIndicatorComponent.js +1 -0
- package/build/domain/components/MarkdownComponent.js +1 -0
- package/build/domain/components/MediaComponent.js +1 -0
- package/build/domain/components/ModalComponent.js +16 -0
- package/build/domain/components/ModalLayoutComponent.js +3 -0
- package/build/domain/components/MoneyInputComponent.js +57 -0
- package/build/domain/components/MultiSelectInputComponent.js +81 -0
- package/build/domain/components/MultiUploadInputComponent.js +88 -0
- package/build/domain/components/NumberInputComponent.js +73 -0
- package/build/domain/components/ObjectComponent.js +45 -0
- package/build/domain/components/ParagraphComponent.js +1 -0
- package/build/domain/components/PersistAsyncComponent.js +92 -0
- package/build/domain/components/ProgressComponent.js +1 -0
- package/build/domain/components/RepeatableComponent.js +103 -0
- package/build/domain/components/ReviewComponent.js +1 -0
- package/build/domain/components/RootDomainComponent.js +173 -0
- package/build/domain/components/SectionComponent.js +5 -0
- package/build/domain/components/SelectInputComponent.js +88 -0
- package/build/domain/components/StatusListComponent.js +1 -0
- package/build/domain/components/SubflowDomainComponent.js +9 -0
- package/build/domain/components/TabsComponent.js +1 -0
- package/build/domain/components/TextInputComponent.js +76 -0
- package/build/domain/components/TupleComponent.js +41 -0
- package/build/domain/components/UploadInputComponent.js +83 -0
- package/build/domain/components/UpsellComponent.js +25 -0
- package/build/domain/components/searchComponent/SearchComponent.js +92 -0
- package/build/domain/components/searchComponent/SearchComponent.test.js +190 -0
- package/build/domain/components/step/ExternalConfirmationComponent.js +28 -0
- package/build/domain/components/step/StepDomainComponent.js +73 -0
- package/build/domain/components/step/ToolbarComponent.js +1 -0
- package/build/domain/components/utils/WithUpdate.js +1 -0
- package/build/domain/components/utils/component-utils.js +12 -0
- package/build/domain/components/utils/debounce.js +34 -0
- package/build/domain/components/utils/debounce.test.js +67 -0
- package/build/domain/components/utils/file-utils.js +21 -0
- package/build/domain/components/utils/file-utils.test.js +27 -0
- package/build/domain/components/utils/getRandomId.js +1 -0
- package/build/domain/components/utils/isExactLocalValueMatch.js +14 -0
- package/build/domain/components/utils/isOrWasValid.js +5 -0
- package/build/domain/components/utils/isPartialModelMatch.js +18 -0
- package/build/domain/components/utils/isPartialModelMatch.test.js +74 -0
- package/build/domain/features/eventNames.js +24 -0
- package/build/domain/features/events.js +1 -0
- package/build/domain/features/persistAsync/getComponentMultiPersistAsync.js +50 -0
- package/build/domain/features/persistAsync/getInitialPersistedState.js +7 -0
- package/build/domain/features/persistAsync/getPerformPersistAsync.js +43 -0
- package/build/domain/features/persistAsync/getPerformPersistAsync.test.js +139 -0
- package/build/domain/features/polling/getStepPolling.js +43 -0
- package/build/domain/features/polling/getStepPolling.test.js +90 -0
- package/build/domain/features/prefetch/getStepPrefetch.js +43 -0
- package/build/domain/features/prefetch/request-cache.js +49 -0
- package/build/domain/features/prefetch/request-cache.test.js +70 -0
- package/build/domain/features/refreshAfter/getStepRefreshAfter.js +24 -0
- package/build/domain/features/refreshAfter/getStepRefreshAfter.test.js +40 -0
- package/build/domain/features/schema-on-change/getDebouncedSchemaOnChange.js +50 -0
- package/build/domain/features/schema-on-change/getSchemaOnChange.js +34 -0
- package/build/domain/features/search/getPerformSearchFunction.js +75 -0
- package/build/domain/features/search/getPerformSearchFunction.test.js +301 -0
- package/build/domain/features/summary/summary-utils.js +40 -0
- package/build/domain/features/summary/summary-utils.test.js +125 -0
- package/build/domain/features/utils/http-utils.js +21 -0
- package/build/domain/features/utils/response-utils.js +9 -0
- package/build/domain/features/validation/spec-utils.js +19 -0
- package/build/domain/features/validation/validateStringPattern.js +24 -0
- package/build/domain/features/validation/validation-functions.js +6 -0
- package/build/domain/features/validation/validation-functions.test.js +108 -0
- package/build/domain/features/validation/value-checks.js +125 -0
- package/build/domain/features/validation/value-checks.test.js +262 -0
- package/build/domain/features/validationAsync/getComponentValidationAsync.js +53 -0
- package/build/domain/features/validationAsync/getComponentValidationAsync.test.js +67 -0
- package/build/domain/features/validationAsync/getInitialValidationAsyncState.js +5 -0
- package/build/domain/features/validationAsync/getPerformValidationAsync.js +45 -0
- package/build/domain/features/validationAsync/getPerformValidationAsync.test.js +143 -0
- package/build/domain/mappers/layout/alertLayoutToComponent.js +16 -0
- package/build/domain/mappers/layout/boxLayoutToComponent.js +13 -0
- package/build/domain/mappers/layout/buttonLayoutToComponent.js +77 -0
- package/build/domain/mappers/layout/columnsLayoutToComponent.js +13 -0
- package/build/domain/mappers/layout/decisionLayoutToComponent.js +22 -0
- package/build/domain/mappers/layout/deprecatedListLayoutToComponent.js +30 -0
- package/build/domain/mappers/layout/dividerLayoutToComponent.js +2 -0
- package/build/domain/mappers/layout/formLayoutToComponent.js +19 -0
- package/build/domain/mappers/layout/headingLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/imageLayoutToComponent.js +20 -0
- package/build/domain/mappers/layout/infoLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/instructionsLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/listLayoutToComponent.js +39 -0
- package/build/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +9 -0
- package/build/domain/mappers/layout/markdownLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/mediaLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/modalLayoutToComponent.js +17 -0
- package/build/domain/mappers/layout/modalToComponent.js +8 -0
- package/build/domain/mappers/layout/paragraphLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/progressLayoutToComponent.js +15 -0
- package/build/domain/mappers/layout/reviewLayoutToComponent.js +48 -0
- package/build/domain/mappers/layout/searchLayoutToComponent.js +44 -0
- package/build/domain/mappers/layout/sectionLayoutToComponent.js +15 -0
- package/build/domain/mappers/layout/statusListLayoutToComponent.js +15 -0
- package/build/domain/mappers/layout/tabsLayoutToComponent.js +16 -0
- package/build/domain/mappers/layout/upsellLayoutToComponent.js +25 -0
- package/build/domain/mappers/mapLayoutToComponent.js +81 -0
- package/build/domain/mappers/mapSchemaToComponent.js +61 -0
- package/build/domain/mappers/mapSchemaToComponent.test.js +112 -0
- package/build/domain/mappers/mapStepSchemas.js +17 -0
- package/build/domain/mappers/mapStepToComponent.js +132 -0
- package/build/domain/mappers/mapStepToComponent.test.js +221 -0
- package/build/domain/mappers/mapToolbarToComponent.js +15 -0
- package/build/domain/mappers/schema/allOfSchemaToComponent.js +16 -0
- package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +26 -0
- package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiSelectComponent.js +55 -0
- package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +67 -0
- package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +57 -0
- package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToTupleComponent.js +20 -0
- package/build/domain/mappers/schema/blobSchemaToComponent.js +15 -0
- package/build/domain/mappers/schema/booleanSchemaToComponent.js +29 -0
- package/build/domain/mappers/schema/constSchemaToComponent.js +23 -0
- package/build/domain/mappers/schema/integerSchemaToComponent.js +28 -0
- package/build/domain/mappers/schema/numberSchemaToComponent.js +26 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/assertDisplayOrder.js +23 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToFormattedValueComponent.js +9 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.js +119 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.test.js +96 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.js +31 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.test.js +99 -0
- package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +76 -0
- package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.test.js +265 -0
- package/build/domain/mappers/schema/persistAsyncSchemaToComponent.js +29 -0
- package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +18 -0
- package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.test.js +133 -0
- package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToDateInputComponent.js +48 -0
- package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +37 -0
- package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +28 -0
- package/build/domain/mappers/schema/tests/test-utils.js +16 -0
- package/build/domain/mappers/schema/types.js +1 -0
- package/build/domain/mappers/schema/utils/getPerformPersistAsyncFn.js +19 -0
- package/build/domain/mappers/schema/utils/getValidationAsyncInitialState.js +23 -0
- package/build/domain/mappers/schema/utils/mapCommonSchemaProps.js +16 -0
- package/build/domain/mappers/types.js +1 -0
- package/build/domain/mappers/utils/FeatureFlags.js +22 -0
- package/build/domain/mappers/utils/behavior-utils.js +44 -0
- package/build/domain/mappers/utils/call-to-action-utils.js +21 -0
- package/build/domain/mappers/utils/getAutocompleteString.js +76 -0
- package/build/domain/mappers/utils/getAutocompleteString.test.js +21 -0
- package/build/domain/mappers/utils/groupLayoutByPinned.js +38 -0
- package/build/domain/mappers/utils/groupLayoutByPinned.test.js +166 -0
- package/build/domain/mappers/utils/image.js +9 -0
- package/build/domain/mappers/utils/layout-utils.js +11 -0
- package/build/domain/mappers/utils/legacy-utils.js +49 -0
- package/build/domain/mappers/utils/media-utils.js +14 -0
- package/build/domain/mappers/utils/suggestions-utils.js +26 -0
- package/build/domain/mappers/utils/suggestions-utils.test.js +36 -0
- package/build/domain/mappers/utils/tags-utils.js +1 -0
- package/build/domain/mappers/utils/utils.js +35 -0
- package/build/domain/types.js +1 -0
- package/build/getSubflowCallbacks.js +38 -0
- package/build/i18n/index.js +40 -0
- package/build/index.js +8 -0
- package/build/main.js +112 -54
- package/build/main.mjs +111 -53
- package/build/renderers/CoreContainerRenderer.js +5 -0
- package/build/renderers/CoreRootRenderer.js +12 -0
- package/build/renderers/EmptyLoadingStateRenderer.js +5 -0
- package/build/renderers/getRenderFunction.js +24 -0
- package/build/renderers/getSchemaErrorMessageFunction.js +97 -0
- package/build/renderers/mappers/alertComponentToProps.js +2 -0
- package/build/renderers/mappers/allOfComponentToProps.js +6 -0
- package/build/renderers/mappers/booleanInputComponentToProps.js +5 -0
- package/build/renderers/mappers/boxComponentToProps.js +13 -0
- package/build/renderers/mappers/buttonComponentToProps.js +4 -0
- package/build/renderers/mappers/columnsComponentToProps.js +11 -0
- package/build/renderers/mappers/componentToRendererProps.js +164 -0
- package/build/renderers/mappers/constComponentToProps.js +5 -0
- package/build/renderers/mappers/containerComponentToProps.js +7 -0
- package/build/renderers/mappers/dateInputComponentToProps.js +2 -0
- package/build/renderers/mappers/decisionComponentToProps.js +16 -0
- package/build/renderers/mappers/dividerComponentToProps.js +2 -0
- package/build/renderers/mappers/externalComponentToProps.js +3 -0
- package/build/renderers/mappers/formComponentToProps.js +12 -0
- package/build/renderers/mappers/formattedValueComponentToProps.js +5 -0
- package/build/renderers/mappers/headingComponentToProps.js +2 -0
- package/build/renderers/mappers/hiddenComponentToProps.js +4 -0
- package/build/renderers/mappers/imageComponentToProps.js +2 -0
- package/build/renderers/mappers/instructionsComponentToProps.js +2 -0
- package/build/renderers/mappers/integerInputComponentToProps.js +2 -0
- package/build/renderers/mappers/listComponentToProps.js +2 -0
- package/build/renderers/mappers/loadingIndicatorComponentToProps.js +2 -0
- package/build/renderers/mappers/markdownComponentToProps.js +2 -0
- package/build/renderers/mappers/mediaComponentToProps.js +2 -0
- package/build/renderers/mappers/modalComponentToProps.js +11 -0
- package/build/renderers/mappers/modalLayoutComponentToProps.js +16 -0
- package/build/renderers/mappers/moneyInputComponentToProps.js +36 -0
- package/build/renderers/mappers/multiSelectComponentToProps.js +23 -0
- package/build/renderers/mappers/multiUploadInputComponentToProps.js +12 -0
- package/build/renderers/mappers/numberInputComponentToProps.js +2 -0
- package/build/renderers/mappers/objectComponentToProps.js +8 -0
- package/build/renderers/mappers/paragraphComponentToProps.js +2 -0
- package/build/renderers/mappers/persistAsyncComponentToProps.js +8 -0
- package/build/renderers/mappers/progressComponentToProps.js +2 -0
- package/build/renderers/mappers/repeatableComponentToProps.js +30 -0
- package/build/renderers/mappers/reviewComponentToProps.js +2 -0
- package/build/renderers/mappers/rootComponentToProps.js +21 -0
- package/build/renderers/mappers/searchComponentToProps.js +57 -0
- package/build/renderers/mappers/sectionComponentToProps.js +6 -0
- package/build/renderers/mappers/selectInputComponentToProps.js +26 -0
- package/build/renderers/mappers/statusListComponentToProps.js +2 -0
- package/build/renderers/mappers/subflowComponentToRendererProps.js +4 -0
- package/build/renderers/mappers/tabsComponentToProps.js +14 -0
- package/build/renderers/mappers/textInputComponentToProps.js +2 -0
- package/build/renderers/mappers/tupleComponentToProps.js +8 -0
- package/build/renderers/mappers/uploadInputComponentToProps.js +8 -0
- package/build/renderers/mappers/upsellComponentToProps.js +2 -0
- package/build/renderers/mappers/utils/getValidationState.js +12 -0
- package/build/renderers/mappers/utils/inputComponentToProps.js +26 -0
- package/build/renderers/mappers/utils/mapErrorsToValidationState.js +9 -0
- package/build/renderers/mappers/utils/pick.js +8 -0
- package/build/renderers/mappers/utils/selectInputOptionsToProps.js +11 -0
- package/build/renderers/stepComponentToProps.js +32 -0
- package/build/renderers/utils.js +69 -0
- package/build/renderers/utils.test.js +70 -0
- package/build/stories/dev-tools/ContainerQueries.story.js +66 -0
- package/build/stories/dev-tools/Debugger.story.js +38 -0
- package/build/stories/dev-tools/FixtureSelect.story.js +23 -0
- package/build/stories/dev-tools/TestServer.story.js +32 -0
- package/build/stories/examples/NativeFlow.story.js +80 -0
- package/build/stories/examples/Recipients.story.js +568 -0
- package/build/stories/spec/behavior/Copy.story.js +59 -0
- package/build/stories/spec/behavior/Modal.story.js +76 -0
- package/build/stories/spec/behavior/Subflow.story.js +267 -0
- package/build/stories/spec/layouts/Decision.story.js +241 -0
- package/build/stories/spec/layouts/Image.story.js +42 -0
- package/build/stories/spec/layouts/Modal.story.js +81 -0
- package/build/stories/spec/layouts/Search.story.js +325 -0
- package/build/stories/spec/layouts/Upsell.story.js +55 -0
- package/build/stories/spec/layouts/button/Button.story.js +100 -0
- package/build/stories/spec/layouts/button/PinnedButton.story.js +81 -0
- package/build/stories/spec/response/ActionResponse.story.js +66 -0
- package/build/stories/spec/schemas/MultiSelect.story.js +148 -0
- package/build/stories/spec/schemas/Upload.story.js +168 -0
- package/build/stories/spec/schemas/const/ConstLayout.story.js +159 -0
- package/build/stories/spec/schemas/const/ObjectConst.story.js +94 -0
- package/build/stories/spec/schemas/features/PersistAsync.story.js +176 -0
- package/build/stories/spec/schemas/features/ValidationAsync.story.js +103 -0
- package/build/stories/spec/schemas/object/FormattedValue.story.js +92 -0
- package/build/stories/spec/schemas/object/MoneyInput.story.js +240 -0
- package/build/stories/spec/schemas/oneOf/OneOfInitialisation.story.js +55 -0
- package/build/stories/spec/step/Controls.story.js +109 -0
- package/build/stories/spec/step/DFModal.story.js +58 -0
- package/build/stories/spec/step/Footer.story.js +70 -0
- package/build/stories/spec/step/Navigation.story.js +20 -0
- package/build/stories/spec/step/Tags.story.js +39 -0
- package/build/stories/spec/step/ToolBar.story.js +60 -0
- package/build/stories/spec/step/features/ErrorHandling.story.js +92 -0
- package/build/stories/spec/step/features/External.story.js +44 -0
- package/build/stories/spec/step/features/Polling.story.js +108 -0
- package/build/stories/spec/step/features/RefreshAfter.story.js +92 -0
- package/build/stories/spec/step/features/refresh/Refresh.story.js +258 -0
- package/build/stories/spec/step/features/refresh/RefreshWithPersistAsync.story.js +958 -0
- package/build/stories/types.js +1 -0
- package/build/stories/utils/fixtureHttpClient.js +70 -0
- package/build/stories/utils/getBasicStep.js +223 -0
- package/build/stories/utils/mockSearchHandler.js +71 -0
- package/build/stories/utils/render-utils.js +41 -0
- package/build/stories/visual-tests/layouts/NotUsingListItem.story.js +17 -0
- package/build/test-utils/DynamicFlowWise.js +32 -0
- package/build/test-utils/DynamicFlowWiseModal.js +34 -0
- package/build/test-utils/NeptuneProviders.js +11 -0
- package/build/test-utils/component-utils.js +5 -0
- package/build/test-utils/fetch-utils.js +45 -0
- package/build/test-utils/getMergedTestRenderers.js +34 -0
- package/build/test-utils/getRandomId.js +1 -0
- package/build/test-utils/index.js +3 -0
- package/build/test-utils/rtl-utils.js +7 -0
- package/build/test-utils/step-utils.js +6 -0
- package/build/test-utils/wait.js +3 -0
- package/build/tests/AlertLayout.test.js +78 -0
- package/build/tests/ArrayTuple.test.js +118 -0
- package/build/tests/ButtonLayout.test.js +308 -0
- package/build/tests/ConstLayout.test.js +95 -0
- package/build/tests/DateInput.test.js +163 -0
- package/build/tests/DecisionLayout.test.js +146 -0
- package/build/tests/DynamicFlow.test.js +147 -0
- package/build/tests/External.test.js +169 -0
- package/build/tests/Flow.test.js +328 -0
- package/build/tests/FormLayout.test.js +28 -0
- package/build/tests/FormattedValue.test.js +107 -0
- package/build/tests/ImageRenderer.test.js +78 -0
- package/build/tests/InitialAction.test.js +179 -0
- package/build/tests/InitialStep.test.js +168 -0
- package/build/tests/InstructionsLayout.test.js +45 -0
- package/build/tests/ListLayout.test.js +145 -0
- package/build/tests/Logging.test.js +53 -0
- package/build/tests/ModalBehavior.test.js +149 -0
- package/build/tests/MoneyInput.test.js +316 -0
- package/build/tests/MultiUpload.test.js +293 -0
- package/build/tests/NativeBack.test.js +267 -0
- package/build/tests/OneOfInitialisation.test.js +571 -0
- package/build/tests/PersistAsync.test.js +653 -0
- package/build/tests/Polling.test.js +617 -0
- package/build/tests/Prefetching.test.js +230 -0
- package/build/tests/RefreshAfter.test.js +63 -0
- package/build/tests/RefreshOnChange.ResponseHandling.test.js +205 -0
- package/build/tests/RefreshOnChange.test.js +233 -0
- package/build/tests/RefreshOnChange.with.Segmented.test.js +348 -0
- package/build/tests/RefreshOnChange.with.Tabs.test.js +358 -0
- package/build/tests/RefreshOnChangePreserve.test.js +224 -0
- package/build/tests/RendererProps.test.js +342 -0
- package/build/tests/Repeatable.test.js +107 -0
- package/build/tests/Rerendering.test.js +67 -0
- package/build/tests/ReviewLayout.test.js +274 -0
- package/build/tests/SchemaOnChange.test.js +133 -0
- package/build/tests/ScrollToError.test.js +217 -0
- package/build/tests/SegmentedControl.test.js +49 -0
- package/build/tests/SingleFileUpload.test.js +88 -0
- package/build/tests/StatusList.test.js +85 -0
- package/build/tests/Subflow.test.js +710 -0
- package/build/tests/Submission.ResponseHandling.test.js +557 -0
- package/build/tests/Submission.merging.test.js +202 -0
- package/build/tests/Submission.test.js +523 -0
- package/build/tests/Tags.test.js +475 -0
- package/build/tests/Upsell.test.js +126 -0
- package/build/tests/ValidationAsync.test.js +295 -0
- package/build/tests/legacy/Actions.test.js +158 -0
- package/build/tests/legacy/BackButton.test.js +114 -0
- package/build/tests/legacy/HiddenSchemas.test.js +246 -0
- package/build/tests/legacy/MultiSelect.test.js +497 -0
- package/build/tests/legacy/MultipleFileUploadSchema.test.js +341 -0
- package/build/tests/legacy/PersistAsync.blob-schema.test.js +224 -0
- package/build/tests/legacy/PersistAsync.string-schema.test.js +211 -0
- package/build/tests/legacy/RefreshStepOnChange.debouncing.test.js +209 -0
- package/build/tests/legacy/RefreshStepOnChange.test.js +424 -0
- package/build/tests/legacy/Search.test.js +437 -0
- package/build/tests/renderers/MultiSelectInputRendererProps.test.js +58 -0
- package/build/tests/renderers/SelectInputRendererProps.test.js +42 -0
- package/build/tests/renderers/TextInputRenderer.test.js +51 -0
- package/build/types/domain/components/UpsellComponent.d.ts +2 -3
- package/build/types/domain/components/UpsellComponent.d.ts.map +1 -1
- package/build/types/domain/components/searchComponent/SearchComponent.d.ts +5 -4
- package/build/types/domain/components/searchComponent/SearchComponent.d.ts.map +1 -1
- package/build/types/domain/features/search/getPerformSearchFunction.d.ts +1 -1
- package/build/types/domain/features/search/getPerformSearchFunction.d.ts.map +1 -1
- package/build/types/domain/mappers/layout/searchLayoutToComponent.d.ts +2 -1
- package/build/types/domain/mappers/layout/searchLayoutToComponent.d.ts.map +1 -1
- package/build/types/domain/mappers/layout/upsellLayoutToComponent.d.ts +1 -1
- package/build/types/domain/mappers/layout/upsellLayoutToComponent.d.ts.map +1 -1
- package/build/types/renderers/EmptyLoadingStateRenderer.d.ts +3 -0
- package/build/types/renderers/EmptyLoadingStateRenderer.d.ts.map +1 -0
- package/build/types/renderers/mappers/rootComponentToProps.d.ts.map +1 -1
- package/build/types/renderers/mappers/searchComponentToProps.d.ts +1 -1
- package/build/types/renderers/mappers/searchComponentToProps.d.ts.map +1 -1
- package/build/types/renderers/mappers/upsellComponentToProps.d.ts +2 -2
- package/build/types/renderers/mappers/upsellComponentToProps.d.ts.map +1 -1
- package/build/types/test-utils/getMergedTestRenderers.d.ts +1 -1
- package/build/types/test-utils/getMergedTestRenderers.d.ts.map +1 -1
- package/build/types/useDynamicFlow.d.ts.map +1 -1
- package/build/types.js +1 -0
- package/build/useDynamicFlow.js +104 -0
- package/build/useDynamicFlowModal.js +58 -0
- package/build/utils/analyse-step.js +14 -0
- package/build/utils/component-utils.js +8 -0
- package/build/utils/component-utils.test.js +113 -0
- package/build/utils/getScrollToTop.js +12 -0
- package/build/utils/normalise-flow-id.js +1 -0
- package/build/utils/normalise-flow-id.test.js +24 -0
- package/build/utils/openLinkInNewTab.js +10 -0
- package/build/utils/recursiveMerge.js +40 -0
- package/build/utils/recursiveMerge.test.js +93 -0
- package/build/utils/type-utils.js +21 -0
- package/build/utils/type-validators.js +11 -0
- package/build/utils/type-validators.test.js +180 -0
- package/build/utils/useStableCallback.js +15 -0
- package/package.json +4 -4
package/build/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { makeHttpClient } from './common/makeHttpClient';
|
|
2
|
+
export { default as translations } from './i18n';
|
|
3
|
+
export { findRendererPropsByType } from './renderers/utils';
|
|
4
|
+
export { useDynamicFlow } from './useDynamicFlow';
|
|
5
|
+
export { useDynamicFlowModal } from './useDynamicFlowModal';
|
|
6
|
+
export { DynamicFlowCore as DynamicFlow } from './DynamicFlowCore';
|
|
7
|
+
export { makeRequestCache } from './domain/features/prefetch/request-cache';
|
|
8
|
+
export { eventNames } from './domain/features/eventNames';
|
package/build/main.js
CHANGED
|
@@ -836,6 +836,7 @@ var getChildren = (node) => {
|
|
|
836
836
|
case "heading":
|
|
837
837
|
case "hidden":
|
|
838
838
|
case "image":
|
|
839
|
+
case "loading-state":
|
|
839
840
|
case "instructions":
|
|
840
841
|
case "input-integer":
|
|
841
842
|
case "list":
|
|
@@ -2091,7 +2092,7 @@ var debounce = (callback, waitMs) => {
|
|
|
2091
2092
|
// src/domain/components/searchComponent/SearchComponent.ts
|
|
2092
2093
|
var DEBOUNCE_TIME = 400;
|
|
2093
2094
|
var createSearchComponent = (searchProps, performSearch, onBehavior, onComponentUpdate) => {
|
|
2094
|
-
const { uid, analyticsId, control, emptyMessage, hint, margin, tags, title } = searchProps;
|
|
2095
|
+
const { uid, analyticsId, control, emptyMessage, initialState, hint, margin, tags, title } = searchProps;
|
|
2095
2096
|
const update = getInputUpdateFunction(onComponentUpdate);
|
|
2096
2097
|
let abortController = new AbortController();
|
|
2097
2098
|
const search = (component2, query, searchConfig) => {
|
|
@@ -2105,7 +2106,7 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
|
|
|
2105
2106
|
}).then((state) => {
|
|
2106
2107
|
if (!signal.aborted) {
|
|
2107
2108
|
update(component2, (draft) => {
|
|
2108
|
-
draft.state = state;
|
|
2109
|
+
draft.state = state != null ? state : initialState;
|
|
2109
2110
|
draft.isLoading = false;
|
|
2110
2111
|
draft.error = void 0;
|
|
2111
2112
|
});
|
|
@@ -2127,9 +2128,10 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
|
|
|
2127
2128
|
analyticsId,
|
|
2128
2129
|
control,
|
|
2129
2130
|
emptyMessage,
|
|
2131
|
+
initialState,
|
|
2130
2132
|
hint,
|
|
2131
2133
|
margin,
|
|
2132
|
-
state:
|
|
2134
|
+
state: initialState,
|
|
2133
2135
|
tags,
|
|
2134
2136
|
title,
|
|
2135
2137
|
isLoading: false,
|
|
@@ -2138,11 +2140,22 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
|
|
|
2138
2140
|
update(this, updateFn);
|
|
2139
2141
|
},
|
|
2140
2142
|
onChange(query) {
|
|
2141
|
-
|
|
2142
|
-
draft
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2143
|
+
if (query.trim()) {
|
|
2144
|
+
this._update((draft) => {
|
|
2145
|
+
draft.query = query;
|
|
2146
|
+
draft.isLoading = true;
|
|
2147
|
+
});
|
|
2148
|
+
debouncedSearch(this, query.trim());
|
|
2149
|
+
} else {
|
|
2150
|
+
abortController.abort();
|
|
2151
|
+
debouncedSearch.cancel();
|
|
2152
|
+
update(component, (draft) => {
|
|
2153
|
+
draft.query = query;
|
|
2154
|
+
draft.state = initialState;
|
|
2155
|
+
draft.isLoading = false;
|
|
2156
|
+
draft.error = void 0;
|
|
2157
|
+
});
|
|
2158
|
+
}
|
|
2146
2159
|
},
|
|
2147
2160
|
onSelect({ type, value }) {
|
|
2148
2161
|
if (type === "action") {
|
|
@@ -2238,11 +2251,23 @@ var isValidResponseBody = (body) => {
|
|
|
2238
2251
|
var hashRequest = (query, config) => JSON.stringify({ query, config });
|
|
2239
2252
|
|
|
2240
2253
|
// src/domain/mappers/layout/searchLayoutToComponent.ts
|
|
2241
|
-
var searchLayoutToComponent = (uid, {
|
|
2254
|
+
var searchLayoutToComponent = (uid, {
|
|
2255
|
+
analyticsId,
|
|
2256
|
+
control,
|
|
2257
|
+
emptyMessage = "",
|
|
2258
|
+
initialState,
|
|
2259
|
+
hint,
|
|
2260
|
+
method,
|
|
2261
|
+
param,
|
|
2262
|
+
title,
|
|
2263
|
+
url,
|
|
2264
|
+
margin,
|
|
2265
|
+
tags
|
|
2266
|
+
}, mapperProps) => {
|
|
2242
2267
|
const { httpClient, onBehavior, onComponentUpdate } = mapperProps;
|
|
2243
2268
|
const search = getPerformSearchFunction(
|
|
2244
2269
|
httpClient,
|
|
2245
|
-
(layout) => mapLayoutToComponent(`${uid}-search-response`, layout, mapperProps, []),
|
|
2270
|
+
(layout, index) => mapLayoutToComponent(`${uid}-search-response-${index}`, layout, mapperProps, []),
|
|
2246
2271
|
{ method, param, url }
|
|
2247
2272
|
);
|
|
2248
2273
|
return createSearchComponent(
|
|
@@ -2250,7 +2275,8 @@ var searchLayoutToComponent = (uid, { analyticsId, control, emptyMessage, hint,
|
|
|
2250
2275
|
uid,
|
|
2251
2276
|
analyticsId,
|
|
2252
2277
|
control,
|
|
2253
|
-
emptyMessage
|
|
2278
|
+
emptyMessage,
|
|
2279
|
+
initialState: getInitialState(uid, initialState, mapperProps),
|
|
2254
2280
|
hint,
|
|
2255
2281
|
margin: margin != null ? margin : "md",
|
|
2256
2282
|
tags,
|
|
@@ -2261,6 +2287,33 @@ var searchLayoutToComponent = (uid, { analyticsId, control, emptyMessage, hint,
|
|
|
2261
2287
|
onComponentUpdate
|
|
2262
2288
|
);
|
|
2263
2289
|
};
|
|
2290
|
+
var getInitialState = (uid, initialState, mapperProps) => {
|
|
2291
|
+
if (!initialState) {
|
|
2292
|
+
return emptyInitialState;
|
|
2293
|
+
}
|
|
2294
|
+
switch (initialState.type) {
|
|
2295
|
+
case "layout":
|
|
2296
|
+
return {
|
|
2297
|
+
type: "layout",
|
|
2298
|
+
content: initialState.content.map(
|
|
2299
|
+
(layout, index) => mapLayoutToComponent(`${uid}-initial-${index}`, layout, mapperProps, [])
|
|
2300
|
+
)
|
|
2301
|
+
};
|
|
2302
|
+
case "results":
|
|
2303
|
+
return {
|
|
2304
|
+
type: "results",
|
|
2305
|
+
results: initialState.results
|
|
2306
|
+
};
|
|
2307
|
+
default: {
|
|
2308
|
+
const exhaustiveCheck = initialState;
|
|
2309
|
+
return emptyInitialState;
|
|
2310
|
+
}
|
|
2311
|
+
}
|
|
2312
|
+
};
|
|
2313
|
+
var emptyInitialState = {
|
|
2314
|
+
type: "layout",
|
|
2315
|
+
content: []
|
|
2316
|
+
};
|
|
2264
2317
|
|
|
2265
2318
|
// src/domain/components/SectionComponent.ts
|
|
2266
2319
|
var createSectionComponent = (props) => {
|
|
@@ -2351,24 +2404,13 @@ var createUpsellComponent = (upsellProps, onComponentUpdate) => {
|
|
|
2351
2404
|
};
|
|
2352
2405
|
|
|
2353
2406
|
// src/domain/mappers/layout/upsellLayoutToComponent.ts
|
|
2354
|
-
var upsellLayoutToComponent = (uid, {
|
|
2355
|
-
analyticsId,
|
|
2356
|
-
callToAction,
|
|
2357
|
-
context,
|
|
2358
|
-
control,
|
|
2359
|
-
margin,
|
|
2360
|
-
media,
|
|
2361
|
-
onDismiss,
|
|
2362
|
-
tags,
|
|
2363
|
-
text
|
|
2364
|
-
}, mapperProps) => {
|
|
2407
|
+
var upsellLayoutToComponent = (uid, { analyticsId, callToAction, control, margin, media, onDismiss, tags, text }, mapperProps) => {
|
|
2365
2408
|
const { onComponentUpdate } = mapperProps;
|
|
2366
2409
|
return createUpsellComponent(
|
|
2367
2410
|
{
|
|
2368
2411
|
uid,
|
|
2369
2412
|
analyticsId,
|
|
2370
2413
|
callToAction: getDomainLayerCallToAction(callToAction, mapperProps),
|
|
2371
|
-
context: context ? mapLegacyContext(context) : "neutral",
|
|
2372
2414
|
control,
|
|
2373
2415
|
margin: margin != null ? margin : "md",
|
|
2374
2416
|
media: getDomainLayerMedia({ media }),
|
|
@@ -6983,16 +7025,23 @@ var CoreContainerRenderer = {
|
|
|
6983
7025
|
render: ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children })
|
|
6984
7026
|
};
|
|
6985
7027
|
|
|
6986
|
-
// src/renderers/
|
|
7028
|
+
// src/renderers/EmptyLoadingStateRenderer.tsx
|
|
6987
7029
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
7030
|
+
var EmptyLoadingStateRenderer = {
|
|
7031
|
+
canRenderType: "loading-state",
|
|
7032
|
+
render: () => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, {})
|
|
7033
|
+
};
|
|
7034
|
+
|
|
7035
|
+
// src/renderers/CoreRootRenderer.tsx
|
|
7036
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
6988
7037
|
var CoreRootRenderer = {
|
|
6989
7038
|
canRenderType: "root",
|
|
6990
7039
|
render: ({ children, childrenProps, subflow }) => {
|
|
6991
7040
|
if ((subflow == null ? void 0 : subflow.presentation.type) === "push") {
|
|
6992
|
-
return /* @__PURE__ */ (0,
|
|
7041
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: subflow.children });
|
|
6993
7042
|
}
|
|
6994
7043
|
const [stepProps] = findRendererPropsByType(childrenProps, "step");
|
|
6995
|
-
return /* @__PURE__ */ (0,
|
|
7044
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { id: stepProps == null ? void 0 : stepProps.id, className: "dynamic-flow-step", children: [
|
|
6996
7045
|
children,
|
|
6997
7046
|
(subflow == null ? void 0 : subflow.presentation.type) === "modal" ? subflow.children : void 0
|
|
6998
7047
|
] });
|
|
@@ -7000,7 +7049,7 @@ var CoreRootRenderer = {
|
|
|
7000
7049
|
};
|
|
7001
7050
|
|
|
7002
7051
|
// src/renderers/getRenderFunction.tsx
|
|
7003
|
-
var
|
|
7052
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
7004
7053
|
var getRenderFunction = (renderers) => {
|
|
7005
7054
|
function ComponentRenderer(props) {
|
|
7006
7055
|
const { type } = props;
|
|
@@ -7020,9 +7069,9 @@ var getRenderFunction = (renderers) => {
|
|
|
7020
7069
|
}
|
|
7021
7070
|
const render = (props) => {
|
|
7022
7071
|
if (!props) {
|
|
7023
|
-
return /* @__PURE__ */ (0,
|
|
7072
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, {});
|
|
7024
7073
|
}
|
|
7025
|
-
return /* @__PURE__ */ (0,
|
|
7074
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ComponentRenderer, __spreadValues({}, props), props.uid);
|
|
7026
7075
|
};
|
|
7027
7076
|
return render;
|
|
7028
7077
|
};
|
|
@@ -7919,14 +7968,17 @@ var getToolbarProps = (toolbar, rendererMapperProps) => {
|
|
|
7919
7968
|
|
|
7920
7969
|
// src/renderers/mappers/rootComponentToProps.ts
|
|
7921
7970
|
var rootComponentToProps = (rootComponent, rendererMapperProps) => {
|
|
7922
|
-
const childrenProps =
|
|
7923
|
-
|
|
7924
|
-
|
|
7925
|
-
|
|
7926
|
-
|
|
7927
|
-
|
|
7928
|
-
|
|
7929
|
-
|
|
7971
|
+
const childrenProps = [
|
|
7972
|
+
__spreadValues({ type: "loading-state", uid: "loading-state" }, rendererMapperProps),
|
|
7973
|
+
...rootComponent.getChildren().map((child) => {
|
|
7974
|
+
if (child.type === "step") {
|
|
7975
|
+
return stepComponentToProps(child, __spreadProps(__spreadValues({}, rendererMapperProps), {
|
|
7976
|
+
showBack: rootComponent.canPerformBack()
|
|
7977
|
+
}));
|
|
7978
|
+
}
|
|
7979
|
+
return componentToRendererProps(child, rendererMapperProps);
|
|
7980
|
+
})
|
|
7981
|
+
];
|
|
7930
7982
|
const subflow = rootComponent.subflow ? {
|
|
7931
7983
|
presentation: rootComponent.subflow.presentation,
|
|
7932
7984
|
children: rendererMapperProps.render(
|
|
@@ -7982,7 +8034,7 @@ var getSearchState = ({
|
|
|
7982
8034
|
onChange,
|
|
7983
8035
|
onSelect
|
|
7984
8036
|
}) => {
|
|
7985
|
-
if (
|
|
8037
|
+
if (isLoading) {
|
|
7986
8038
|
return { type: "pending" };
|
|
7987
8039
|
}
|
|
7988
8040
|
if (error) {
|
|
@@ -8002,19 +8054,21 @@ var getSearchState = ({
|
|
|
8002
8054
|
layoutProps
|
|
8003
8055
|
};
|
|
8004
8056
|
}
|
|
8005
|
-
if (state.results.length === 0) {
|
|
8057
|
+
if (query && state.results.length === 0) {
|
|
8006
8058
|
return { type: "noResults", message: emptyMessage };
|
|
8007
8059
|
}
|
|
8008
|
-
|
|
8009
|
-
|
|
8010
|
-
|
|
8011
|
-
|
|
8012
|
-
|
|
8013
|
-
|
|
8014
|
-
|
|
8015
|
-
|
|
8016
|
-
|
|
8017
|
-
|
|
8060
|
+
return {
|
|
8061
|
+
type: "results",
|
|
8062
|
+
results: state.results.map((result) => {
|
|
8063
|
+
var _a;
|
|
8064
|
+
return __spreadProps(__spreadValues({}, result), {
|
|
8065
|
+
id: result.type === "action" ? (_a = result.value.id) != null ? _a : result.value.$id : void 0,
|
|
8066
|
+
image: mapSpecImage(result.image),
|
|
8067
|
+
media: getDomainLayerMedia(result),
|
|
8068
|
+
onClick: () => onSelect(result)
|
|
8069
|
+
});
|
|
8070
|
+
})
|
|
8071
|
+
};
|
|
8018
8072
|
};
|
|
8019
8073
|
|
|
8020
8074
|
// src/renderers/mappers/sectionComponentToProps.ts
|
|
@@ -8129,7 +8183,6 @@ var upsellComponentToProps = (component, rendererMapperProps) => __spreadValues(
|
|
|
8129
8183
|
"analyticsId",
|
|
8130
8184
|
"type",
|
|
8131
8185
|
"callToAction",
|
|
8132
|
-
"context",
|
|
8133
8186
|
"control",
|
|
8134
8187
|
"margin",
|
|
8135
8188
|
"media",
|
|
@@ -8308,7 +8361,7 @@ function useStableCallback(handler) {
|
|
|
8308
8361
|
}
|
|
8309
8362
|
|
|
8310
8363
|
// src/useDynamicFlow.tsx
|
|
8311
|
-
var
|
|
8364
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
8312
8365
|
var className = "dynamic-flow";
|
|
8313
8366
|
var noop3 = () => {
|
|
8314
8367
|
};
|
|
@@ -8359,7 +8412,12 @@ function useDynamicFlow(props) {
|
|
|
8359
8412
|
scrollToTop
|
|
8360
8413
|
}));
|
|
8361
8414
|
const render = (0, import_react3.useMemo)(
|
|
8362
|
-
() => getRenderFunction([
|
|
8415
|
+
() => getRenderFunction([
|
|
8416
|
+
CoreRootRenderer,
|
|
8417
|
+
CoreContainerRenderer,
|
|
8418
|
+
...renderers,
|
|
8419
|
+
EmptyLoadingStateRenderer
|
|
8420
|
+
]),
|
|
8363
8421
|
[renderers]
|
|
8364
8422
|
);
|
|
8365
8423
|
const tree = componentToRendererProps(rootComponent, {
|
|
@@ -8376,7 +8434,7 @@ function useDynamicFlow(props) {
|
|
|
8376
8434
|
validate: () => rootComponent.validate(),
|
|
8377
8435
|
cancel
|
|
8378
8436
|
},
|
|
8379
|
-
view: /* @__PURE__ */ (0,
|
|
8437
|
+
view: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
8380
8438
|
ErrorBoundary_default,
|
|
8381
8439
|
{
|
|
8382
8440
|
onError: (error) => {
|
|
@@ -8386,7 +8444,7 @@ function useDynamicFlow(props) {
|
|
|
8386
8444
|
errorMessage: getErrorMessage(error)
|
|
8387
8445
|
});
|
|
8388
8446
|
},
|
|
8389
|
-
children: /* @__PURE__ */ (0,
|
|
8447
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { id: normalisedFlowId, className, children: render(tree) })
|
|
8390
8448
|
}
|
|
8391
8449
|
)
|
|
8392
8450
|
};
|
package/build/main.mjs
CHANGED
|
@@ -806,6 +806,7 @@ var getChildren = (node) => {
|
|
|
806
806
|
case "heading":
|
|
807
807
|
case "hidden":
|
|
808
808
|
case "image":
|
|
809
|
+
case "loading-state":
|
|
809
810
|
case "instructions":
|
|
810
811
|
case "input-integer":
|
|
811
812
|
case "list":
|
|
@@ -2061,7 +2062,7 @@ var debounce = (callback, waitMs) => {
|
|
|
2061
2062
|
// src/domain/components/searchComponent/SearchComponent.ts
|
|
2062
2063
|
var DEBOUNCE_TIME = 400;
|
|
2063
2064
|
var createSearchComponent = (searchProps, performSearch, onBehavior, onComponentUpdate) => {
|
|
2064
|
-
const { uid, analyticsId, control, emptyMessage, hint, margin, tags, title } = searchProps;
|
|
2065
|
+
const { uid, analyticsId, control, emptyMessage, initialState, hint, margin, tags, title } = searchProps;
|
|
2065
2066
|
const update = getInputUpdateFunction(onComponentUpdate);
|
|
2066
2067
|
let abortController = new AbortController();
|
|
2067
2068
|
const search = (component2, query, searchConfig) => {
|
|
@@ -2075,7 +2076,7 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
|
|
|
2075
2076
|
}).then((state) => {
|
|
2076
2077
|
if (!signal.aborted) {
|
|
2077
2078
|
update(component2, (draft) => {
|
|
2078
|
-
draft.state = state;
|
|
2079
|
+
draft.state = state != null ? state : initialState;
|
|
2079
2080
|
draft.isLoading = false;
|
|
2080
2081
|
draft.error = void 0;
|
|
2081
2082
|
});
|
|
@@ -2097,9 +2098,10 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
|
|
|
2097
2098
|
analyticsId,
|
|
2098
2099
|
control,
|
|
2099
2100
|
emptyMessage,
|
|
2101
|
+
initialState,
|
|
2100
2102
|
hint,
|
|
2101
2103
|
margin,
|
|
2102
|
-
state:
|
|
2104
|
+
state: initialState,
|
|
2103
2105
|
tags,
|
|
2104
2106
|
title,
|
|
2105
2107
|
isLoading: false,
|
|
@@ -2108,11 +2110,22 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
|
|
|
2108
2110
|
update(this, updateFn);
|
|
2109
2111
|
},
|
|
2110
2112
|
onChange(query) {
|
|
2111
|
-
|
|
2112
|
-
draft
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2113
|
+
if (query.trim()) {
|
|
2114
|
+
this._update((draft) => {
|
|
2115
|
+
draft.query = query;
|
|
2116
|
+
draft.isLoading = true;
|
|
2117
|
+
});
|
|
2118
|
+
debouncedSearch(this, query.trim());
|
|
2119
|
+
} else {
|
|
2120
|
+
abortController.abort();
|
|
2121
|
+
debouncedSearch.cancel();
|
|
2122
|
+
update(component, (draft) => {
|
|
2123
|
+
draft.query = query;
|
|
2124
|
+
draft.state = initialState;
|
|
2125
|
+
draft.isLoading = false;
|
|
2126
|
+
draft.error = void 0;
|
|
2127
|
+
});
|
|
2128
|
+
}
|
|
2116
2129
|
},
|
|
2117
2130
|
onSelect({ type, value }) {
|
|
2118
2131
|
if (type === "action") {
|
|
@@ -2208,11 +2221,23 @@ var isValidResponseBody = (body) => {
|
|
|
2208
2221
|
var hashRequest = (query, config) => JSON.stringify({ query, config });
|
|
2209
2222
|
|
|
2210
2223
|
// src/domain/mappers/layout/searchLayoutToComponent.ts
|
|
2211
|
-
var searchLayoutToComponent = (uid, {
|
|
2224
|
+
var searchLayoutToComponent = (uid, {
|
|
2225
|
+
analyticsId,
|
|
2226
|
+
control,
|
|
2227
|
+
emptyMessage = "",
|
|
2228
|
+
initialState,
|
|
2229
|
+
hint,
|
|
2230
|
+
method,
|
|
2231
|
+
param,
|
|
2232
|
+
title,
|
|
2233
|
+
url,
|
|
2234
|
+
margin,
|
|
2235
|
+
tags
|
|
2236
|
+
}, mapperProps) => {
|
|
2212
2237
|
const { httpClient, onBehavior, onComponentUpdate } = mapperProps;
|
|
2213
2238
|
const search = getPerformSearchFunction(
|
|
2214
2239
|
httpClient,
|
|
2215
|
-
(layout) => mapLayoutToComponent(`${uid}-search-response`, layout, mapperProps, []),
|
|
2240
|
+
(layout, index) => mapLayoutToComponent(`${uid}-search-response-${index}`, layout, mapperProps, []),
|
|
2216
2241
|
{ method, param, url }
|
|
2217
2242
|
);
|
|
2218
2243
|
return createSearchComponent(
|
|
@@ -2220,7 +2245,8 @@ var searchLayoutToComponent = (uid, { analyticsId, control, emptyMessage, hint,
|
|
|
2220
2245
|
uid,
|
|
2221
2246
|
analyticsId,
|
|
2222
2247
|
control,
|
|
2223
|
-
emptyMessage
|
|
2248
|
+
emptyMessage,
|
|
2249
|
+
initialState: getInitialState(uid, initialState, mapperProps),
|
|
2224
2250
|
hint,
|
|
2225
2251
|
margin: margin != null ? margin : "md",
|
|
2226
2252
|
tags,
|
|
@@ -2231,6 +2257,33 @@ var searchLayoutToComponent = (uid, { analyticsId, control, emptyMessage, hint,
|
|
|
2231
2257
|
onComponentUpdate
|
|
2232
2258
|
);
|
|
2233
2259
|
};
|
|
2260
|
+
var getInitialState = (uid, initialState, mapperProps) => {
|
|
2261
|
+
if (!initialState) {
|
|
2262
|
+
return emptyInitialState;
|
|
2263
|
+
}
|
|
2264
|
+
switch (initialState.type) {
|
|
2265
|
+
case "layout":
|
|
2266
|
+
return {
|
|
2267
|
+
type: "layout",
|
|
2268
|
+
content: initialState.content.map(
|
|
2269
|
+
(layout, index) => mapLayoutToComponent(`${uid}-initial-${index}`, layout, mapperProps, [])
|
|
2270
|
+
)
|
|
2271
|
+
};
|
|
2272
|
+
case "results":
|
|
2273
|
+
return {
|
|
2274
|
+
type: "results",
|
|
2275
|
+
results: initialState.results
|
|
2276
|
+
};
|
|
2277
|
+
default: {
|
|
2278
|
+
const exhaustiveCheck = initialState;
|
|
2279
|
+
return emptyInitialState;
|
|
2280
|
+
}
|
|
2281
|
+
}
|
|
2282
|
+
};
|
|
2283
|
+
var emptyInitialState = {
|
|
2284
|
+
type: "layout",
|
|
2285
|
+
content: []
|
|
2286
|
+
};
|
|
2234
2287
|
|
|
2235
2288
|
// src/domain/components/SectionComponent.ts
|
|
2236
2289
|
var createSectionComponent = (props) => {
|
|
@@ -2321,24 +2374,13 @@ var createUpsellComponent = (upsellProps, onComponentUpdate) => {
|
|
|
2321
2374
|
};
|
|
2322
2375
|
|
|
2323
2376
|
// src/domain/mappers/layout/upsellLayoutToComponent.ts
|
|
2324
|
-
var upsellLayoutToComponent = (uid, {
|
|
2325
|
-
analyticsId,
|
|
2326
|
-
callToAction,
|
|
2327
|
-
context,
|
|
2328
|
-
control,
|
|
2329
|
-
margin,
|
|
2330
|
-
media,
|
|
2331
|
-
onDismiss,
|
|
2332
|
-
tags,
|
|
2333
|
-
text
|
|
2334
|
-
}, mapperProps) => {
|
|
2377
|
+
var upsellLayoutToComponent = (uid, { analyticsId, callToAction, control, margin, media, onDismiss, tags, text }, mapperProps) => {
|
|
2335
2378
|
const { onComponentUpdate } = mapperProps;
|
|
2336
2379
|
return createUpsellComponent(
|
|
2337
2380
|
{
|
|
2338
2381
|
uid,
|
|
2339
2382
|
analyticsId,
|
|
2340
2383
|
callToAction: getDomainLayerCallToAction(callToAction, mapperProps),
|
|
2341
|
-
context: context ? mapLegacyContext(context) : "neutral",
|
|
2342
2384
|
control,
|
|
2343
2385
|
margin: margin != null ? margin : "md",
|
|
2344
2386
|
media: getDomainLayerMedia({ media }),
|
|
@@ -6953,13 +6995,20 @@ var CoreContainerRenderer = {
|
|
|
6953
6995
|
render: ({ children }) => /* @__PURE__ */ jsx3(Fragment2, { children })
|
|
6954
6996
|
};
|
|
6955
6997
|
|
|
6998
|
+
// src/renderers/EmptyLoadingStateRenderer.tsx
|
|
6999
|
+
import { Fragment as Fragment3, jsx as jsx4 } from "react/jsx-runtime";
|
|
7000
|
+
var EmptyLoadingStateRenderer = {
|
|
7001
|
+
canRenderType: "loading-state",
|
|
7002
|
+
render: () => /* @__PURE__ */ jsx4(Fragment3, {})
|
|
7003
|
+
};
|
|
7004
|
+
|
|
6956
7005
|
// src/renderers/CoreRootRenderer.tsx
|
|
6957
|
-
import { Fragment as
|
|
7006
|
+
import { Fragment as Fragment4, jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
6958
7007
|
var CoreRootRenderer = {
|
|
6959
7008
|
canRenderType: "root",
|
|
6960
7009
|
render: ({ children, childrenProps, subflow }) => {
|
|
6961
7010
|
if ((subflow == null ? void 0 : subflow.presentation.type) === "push") {
|
|
6962
|
-
return /* @__PURE__ */
|
|
7011
|
+
return /* @__PURE__ */ jsx5(Fragment4, { children: subflow.children });
|
|
6963
7012
|
}
|
|
6964
7013
|
const [stepProps] = findRendererPropsByType(childrenProps, "step");
|
|
6965
7014
|
return /* @__PURE__ */ jsxs2("div", { id: stepProps == null ? void 0 : stepProps.id, className: "dynamic-flow-step", children: [
|
|
@@ -6970,7 +7019,7 @@ var CoreRootRenderer = {
|
|
|
6970
7019
|
};
|
|
6971
7020
|
|
|
6972
7021
|
// src/renderers/getRenderFunction.tsx
|
|
6973
|
-
import { Fragment as
|
|
7022
|
+
import { Fragment as Fragment5, jsx as jsx6 } from "react/jsx-runtime";
|
|
6974
7023
|
var getRenderFunction = (renderers) => {
|
|
6975
7024
|
function ComponentRenderer(props) {
|
|
6976
7025
|
const { type } = props;
|
|
@@ -6990,9 +7039,9 @@ var getRenderFunction = (renderers) => {
|
|
|
6990
7039
|
}
|
|
6991
7040
|
const render = (props) => {
|
|
6992
7041
|
if (!props) {
|
|
6993
|
-
return /* @__PURE__ */
|
|
7042
|
+
return /* @__PURE__ */ jsx6(Fragment5, {});
|
|
6994
7043
|
}
|
|
6995
|
-
return /* @__PURE__ */
|
|
7044
|
+
return /* @__PURE__ */ jsx6(ComponentRenderer, __spreadValues({}, props), props.uid);
|
|
6996
7045
|
};
|
|
6997
7046
|
return render;
|
|
6998
7047
|
};
|
|
@@ -7889,14 +7938,17 @@ var getToolbarProps = (toolbar, rendererMapperProps) => {
|
|
|
7889
7938
|
|
|
7890
7939
|
// src/renderers/mappers/rootComponentToProps.ts
|
|
7891
7940
|
var rootComponentToProps = (rootComponent, rendererMapperProps) => {
|
|
7892
|
-
const childrenProps =
|
|
7893
|
-
|
|
7894
|
-
|
|
7895
|
-
|
|
7896
|
-
|
|
7897
|
-
|
|
7898
|
-
|
|
7899
|
-
|
|
7941
|
+
const childrenProps = [
|
|
7942
|
+
__spreadValues({ type: "loading-state", uid: "loading-state" }, rendererMapperProps),
|
|
7943
|
+
...rootComponent.getChildren().map((child) => {
|
|
7944
|
+
if (child.type === "step") {
|
|
7945
|
+
return stepComponentToProps(child, __spreadProps(__spreadValues({}, rendererMapperProps), {
|
|
7946
|
+
showBack: rootComponent.canPerformBack()
|
|
7947
|
+
}));
|
|
7948
|
+
}
|
|
7949
|
+
return componentToRendererProps(child, rendererMapperProps);
|
|
7950
|
+
})
|
|
7951
|
+
];
|
|
7900
7952
|
const subflow = rootComponent.subflow ? {
|
|
7901
7953
|
presentation: rootComponent.subflow.presentation,
|
|
7902
7954
|
children: rendererMapperProps.render(
|
|
@@ -7952,7 +8004,7 @@ var getSearchState = ({
|
|
|
7952
8004
|
onChange,
|
|
7953
8005
|
onSelect
|
|
7954
8006
|
}) => {
|
|
7955
|
-
if (
|
|
8007
|
+
if (isLoading) {
|
|
7956
8008
|
return { type: "pending" };
|
|
7957
8009
|
}
|
|
7958
8010
|
if (error) {
|
|
@@ -7972,19 +8024,21 @@ var getSearchState = ({
|
|
|
7972
8024
|
layoutProps
|
|
7973
8025
|
};
|
|
7974
8026
|
}
|
|
7975
|
-
if (state.results.length === 0) {
|
|
8027
|
+
if (query && state.results.length === 0) {
|
|
7976
8028
|
return { type: "noResults", message: emptyMessage };
|
|
7977
8029
|
}
|
|
7978
|
-
|
|
7979
|
-
|
|
7980
|
-
|
|
7981
|
-
|
|
7982
|
-
|
|
7983
|
-
|
|
7984
|
-
|
|
7985
|
-
|
|
7986
|
-
|
|
7987
|
-
|
|
8030
|
+
return {
|
|
8031
|
+
type: "results",
|
|
8032
|
+
results: state.results.map((result) => {
|
|
8033
|
+
var _a;
|
|
8034
|
+
return __spreadProps(__spreadValues({}, result), {
|
|
8035
|
+
id: result.type === "action" ? (_a = result.value.id) != null ? _a : result.value.$id : void 0,
|
|
8036
|
+
image: mapSpecImage(result.image),
|
|
8037
|
+
media: getDomainLayerMedia(result),
|
|
8038
|
+
onClick: () => onSelect(result)
|
|
8039
|
+
});
|
|
8040
|
+
})
|
|
8041
|
+
};
|
|
7988
8042
|
};
|
|
7989
8043
|
|
|
7990
8044
|
// src/renderers/mappers/sectionComponentToProps.ts
|
|
@@ -8099,7 +8153,6 @@ var upsellComponentToProps = (component, rendererMapperProps) => __spreadValues(
|
|
|
8099
8153
|
"analyticsId",
|
|
8100
8154
|
"type",
|
|
8101
8155
|
"callToAction",
|
|
8102
|
-
"context",
|
|
8103
8156
|
"control",
|
|
8104
8157
|
"margin",
|
|
8105
8158
|
"media",
|
|
@@ -8278,7 +8331,7 @@ function useStableCallback(handler) {
|
|
|
8278
8331
|
}
|
|
8279
8332
|
|
|
8280
8333
|
// src/useDynamicFlow.tsx
|
|
8281
|
-
import { jsx as
|
|
8334
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
8282
8335
|
var className = "dynamic-flow";
|
|
8283
8336
|
var noop3 = () => {
|
|
8284
8337
|
};
|
|
@@ -8329,7 +8382,12 @@ function useDynamicFlow(props) {
|
|
|
8329
8382
|
scrollToTop
|
|
8330
8383
|
}));
|
|
8331
8384
|
const render = useMemo(
|
|
8332
|
-
() => getRenderFunction([
|
|
8385
|
+
() => getRenderFunction([
|
|
8386
|
+
CoreRootRenderer,
|
|
8387
|
+
CoreContainerRenderer,
|
|
8388
|
+
...renderers,
|
|
8389
|
+
EmptyLoadingStateRenderer
|
|
8390
|
+
]),
|
|
8333
8391
|
[renderers]
|
|
8334
8392
|
);
|
|
8335
8393
|
const tree = componentToRendererProps(rootComponent, {
|
|
@@ -8346,7 +8404,7 @@ function useDynamicFlow(props) {
|
|
|
8346
8404
|
validate: () => rootComponent.validate(),
|
|
8347
8405
|
cancel
|
|
8348
8406
|
},
|
|
8349
|
-
view: /* @__PURE__ */
|
|
8407
|
+
view: /* @__PURE__ */ jsx7(
|
|
8350
8408
|
ErrorBoundary_default,
|
|
8351
8409
|
{
|
|
8352
8410
|
onError: (error) => {
|
|
@@ -8356,7 +8414,7 @@ function useDynamicFlow(props) {
|
|
|
8356
8414
|
errorMessage: getErrorMessage(error)
|
|
8357
8415
|
});
|
|
8358
8416
|
},
|
|
8359
|
-
children: /* @__PURE__ */
|
|
8417
|
+
children: /* @__PURE__ */ jsx7("div", { id: normalisedFlowId, className, children: render(tree) })
|
|
8360
8418
|
}
|
|
8361
8419
|
)
|
|
8362
8420
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { findRendererPropsByType } from './utils';
|
|
3
|
+
export const CoreRootRenderer = {
|
|
4
|
+
canRenderType: 'root',
|
|
5
|
+
render: ({ children, childrenProps, subflow }) => {
|
|
6
|
+
if ((subflow === null || subflow === void 0 ? void 0 : subflow.presentation.type) === 'push') {
|
|
7
|
+
return _jsx(_Fragment, { children: subflow.children });
|
|
8
|
+
}
|
|
9
|
+
const [stepProps] = findRendererPropsByType(childrenProps, 'step');
|
|
10
|
+
return (_jsxs("div", { id: stepProps === null || stepProps === void 0 ? void 0 : stepProps.id, className: "dynamic-flow-step", children: [children, (subflow === null || subflow === void 0 ? void 0 : subflow.presentation.type) === 'modal' ? subflow.children : undefined] }));
|
|
11
|
+
},
|
|
12
|
+
};
|