@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.
- package/build/common/errorBoundary/ErrorBoundary.js +44 -0
- package/build/common/errorBoundary/ErrorBoundaryAlert.js +12 -0
- package/build/common/httpClientContext/HttpClientContext.js +35 -0
- package/build/common/httpClientContext/index.js +1 -0
- package/build/common/makeHttpClient/index.js +1 -0
- package/build/common/makeHttpClient/makeHttpClient.js +34 -0
- package/build/common/messages/external-confirmation.messages.js +23 -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/validation.array.messages.js +13 -0
- package/build/common/messages/validation.messages.js +53 -0
- package/build/common/utils/api-utils.js +4 -0
- package/build/i18n/de.json +2 -1
- package/build/i18n/es.json +1 -0
- package/build/i18n/fr.json +1 -0
- package/build/i18n/hu.json +1 -0
- package/build/i18n/id.json +1 -0
- package/build/i18n/index.js +36 -0
- package/build/i18n/it.json +1 -0
- package/build/i18n/ja.json +1 -0
- package/build/i18n/pl.json +1 -0
- package/build/i18n/pt.json +1 -0
- package/build/i18n/ro.json +1 -0
- package/build/i18n/ru.json +1 -0
- package/build/i18n/th.json +1 -0
- package/build/i18n/tr.json +1 -0
- package/build/i18n/zh_CN.json +1 -0
- package/build/i18n/zh_HK.json +1 -0
- package/build/legacy/common/constants/DateMode.js +4 -0
- package/build/legacy/common/constants/FeatureName.js +4 -0
- package/build/legacy/common/constants/FormControlType.js +21 -0
- package/build/legacy/common/constants/MonthFormat.js +4 -0
- package/build/legacy/common/constants/Size.js +7 -0
- package/build/legacy/common/constants/index.js +4 -0
- package/build/legacy/common/contexts/dynamicFlowContexts/DynamicFlowContexts.js +36 -0
- package/build/legacy/common/contexts/dynamicFlowContexts/usePendingPromiseCounter.js +13 -0
- package/build/legacy/common/contexts/eventsContext/EventsContext.js +38 -0
- package/build/legacy/common/contexts/featureContext/FeatureContext.js +22 -0
- package/build/legacy/common/contexts/index.js +3 -0
- package/build/legacy/common/contexts/logContext/LogContext.js +44 -0
- package/build/legacy/common/hooks/index.js +7 -0
- package/build/legacy/common/hooks/useDebouncedFunction/useDebouncedFunction.js +9 -0
- package/build/legacy/common/hooks/useExternal/useExternal.js +15 -0
- package/build/legacy/common/hooks/useExternalStepPolling/useExternalStepPolling.js +70 -0
- package/build/legacy/common/hooks/usePersistAsync/usePersistAsync.js +172 -0
- package/build/legacy/common/hooks/usePolling/usePolling.js +51 -0
- package/build/legacy/common/hooks/usePrevious/usePrevious.js +8 -0
- package/build/legacy/common/hooks/useStepPolling/useStepPolling.js +43 -0
- package/build/legacy/common/messages.js +8 -0
- package/build/legacy/common/utils/api-utils.js +6 -0
- package/build/legacy/common/utils/date-utils.js +22 -0
- package/build/legacy/common/utils/debounce.js +38 -0
- package/build/legacy/common/utils/file-utils.js +45 -0
- package/build/legacy/common/utils/id-utils.js +5 -0
- package/build/legacy/common/utils/index.js +11 -0
- package/build/legacy/common/utils/is-equal.js +21 -0
- package/build/legacy/common/utils/misc-utils.js +4 -0
- package/build/legacy/common/utils/mobile-utils.js +23 -0
- package/build/legacy/common/utils/model-utils.js +33 -0
- package/build/legacy/common/utils/schema-utils.js +113 -0
- package/build/legacy/common/utils/step-utils.js +32 -0
- package/build/legacy/common/validators/index.js +5 -0
- package/build/legacy/common/validators/models/model-utils.js +119 -0
- package/build/legacy/common/validators/models/model-validators.js +62 -0
- package/build/legacy/common/validators/schemas/schema-validators.js +101 -0
- package/build/legacy/common/validators/types/type-validators.js +14 -0
- package/build/legacy/common/validators/validationFailures/validation-failures.js +139 -0
- package/build/legacy/common/validators/validationFailures/validation-failures.utils.js +40 -0
- package/build/legacy/common/validators/values/value-validators.js +6 -0
- package/build/legacy/dynamic-flow-types.js +1 -0
- package/build/legacy/dynamicFlow/BackButton.js +22 -0
- package/build/legacy/dynamicFlow/DynamicFlow.js +346 -0
- package/build/legacy/dynamicFlow/DynamicFlowStep.js +37 -0
- package/build/legacy/dynamicFlow/DynamicFlowTypes.js +1 -0
- package/build/legacy/dynamicFlow/index.js +1 -0
- package/build/legacy/dynamicFlow/utils/index.js +5 -0
- package/build/legacy/dynamicFlow/utils/responseParsers/response-parsers.js +185 -0
- package/build/legacy/dynamicFlow/utils/useDebouncedRefresh/useDebouncedRefresh.js +26 -0
- package/build/legacy/dynamicFlow/utils/useDynamicFlowState.js +137 -0
- package/build/legacy/dynamicFlow/utils/useLoader.js +22 -0
- package/build/legacy/formControl/FormControl.js +266 -0
- package/build/legacy/formControl/index.js +1 -0
- package/build/legacy/formControl/utils/getAutocompleteString.js +80 -0
- package/build/legacy/formControl/utils/index.js +2 -0
- package/build/legacy/formControl/utils/value-utils.js +108 -0
- package/build/legacy/jsonSchemaForm/JsonSchemaForm.js +24 -0
- package/build/legacy/jsonSchemaForm/allOfSchema/AllOfSchema.js +50 -0
- package/build/legacy/jsonSchemaForm/allOfSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/ArraySchema.js +25 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/ArrayListSchema.js +34 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multiSelectSchema/MultiSelectSchema.js +84 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/MultipleFileUploadSchema.js +141 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/index.js +2 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/upload-utils.js +79 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/useFormattedDefaultErrorMessages.js +14 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/ItemSummary.js +7 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchema.js +134 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchemaStep.js +85 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.js +135 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/basicTypeSchema/BasicTypeSchema.js +111 -0
- package/build/legacy/jsonSchemaForm/basicTypeSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/controlFeedback/ControlFeedback.js +86 -0
- package/build/legacy/jsonSchemaForm/controlFeedback/index.js +1 -0
- package/build/legacy/jsonSchemaForm/genericSchema/GenericSchema.js +85 -0
- package/build/legacy/jsonSchemaForm/genericSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/help/Help.js +20 -0
- package/build/legacy/jsonSchemaForm/help/index.js +1 -0
- package/build/legacy/jsonSchemaForm/index.js +1 -0
- package/build/legacy/jsonSchemaForm/objectSchema/ObjectSchema.js +77 -0
- package/build/legacy/jsonSchemaForm/objectSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/oneOfSchema/OneOfSchema.js +155 -0
- package/build/legacy/jsonSchemaForm/oneOfSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/oneOfSchema/utils.js +68 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/PersistAsyncSchema.js +26 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/PersistAsyncBasicSchema.js +165 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/PersistAsyncBlobSchema.js +131 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/UploadInputAdapter.js +31 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/PromotedOneOfSchema.js +72 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promoted-one-of-utils.js +8 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfCheckboxControl.js +27 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfControl.js +31 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfRadioControl.js +32 -0
- package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.js +54 -0
- package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.messages.js +13 -0
- package/build/legacy/jsonSchemaForm/readOnlySchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/schemaFormControl/SchemaFormControl.js +133 -0
- package/build/legacy/jsonSchemaForm/schemaFormControl/index.js +1 -0
- package/build/legacy/jsonSchemaForm/schemaFormControl/utils/index.js +1 -0
- package/build/legacy/jsonSchemaForm/schemaFormControl/utils/mapping-utils.js +107 -0
- package/build/legacy/jsonSchemaForm/validationAsyncSchema/ValidationAsyncSchema.js +150 -0
- package/build/legacy/jsonSchemaForm/validationAsyncSchema/index.js +1 -0
- package/build/legacy/layout/DynamicLayout.js +68 -0
- package/build/legacy/layout/alert/DynamicAlert.js +29 -0
- package/build/legacy/layout/box/DynamicBox.js +41 -0
- package/build/legacy/layout/button/DynamicButton.js +27 -0
- package/build/legacy/layout/button/utils.js +45 -0
- package/build/legacy/layout/columns/DynamicColumns.js +38 -0
- package/build/legacy/layout/decision/DynamicDecision.js +21 -0
- package/build/legacy/layout/divider/DynamicDivider.js +9 -0
- package/build/legacy/layout/external/DynamicExternal.js +32 -0
- package/build/legacy/layout/external/DynamicExternal.messages.js +8 -0
- package/build/legacy/layout/form/DynamicForm.js +22 -0
- package/build/legacy/layout/heading/DynamicHeading.js +51 -0
- package/build/legacy/layout/icon/DynamicIcon.js +17 -0
- package/build/legacy/layout/icon/FlagIcon.js +198 -0
- package/build/legacy/layout/icon/NamedIcon.js +19 -0
- package/build/legacy/layout/image/DynamicImage.js +111 -0
- package/build/legacy/layout/index.js +20 -0
- package/build/legacy/layout/instructions/DynamicInstructions.js +30 -0
- package/build/legacy/layout/list/DynamicStatusList.js +37 -0
- package/build/legacy/layout/loadingIndicator/DynamicLoadingIndicator.js +11 -0
- package/build/legacy/layout/markdown/DynamicMarkdown.js +23 -0
- package/build/legacy/layout/modal/DynamicModal.js +26 -0
- package/build/legacy/layout/paragraph/DynamicParagraph.js +46 -0
- package/build/legacy/layout/paragraph/useSnackBarIfAvailable.js +9 -0
- package/build/legacy/layout/review/DynamicReview.js +58 -0
- package/build/legacy/layout/search/DynamicSearch.js +58 -0
- package/build/legacy/layout/search/SearchInput.js +17 -0
- package/build/legacy/layout/search/SearchResults.js +31 -0
- package/build/legacy/layout/search/useSearch.js +137 -0
- package/build/legacy/layout/utils/getNavigationOptionMedia.js +28 -0
- package/build/legacy/layout/utils/index.js +32 -0
- package/build/legacy/step/cameraStep/CameraStep.js +124 -0
- package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.js +161 -0
- package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.messages.js +58 -0
- package/build/legacy/step/cameraStep/cameraCapture/components/bottomBar/BottomBar.js +28 -0
- package/build/legacy/step/cameraStep/cameraCapture/components/index.js +3 -0
- package/build/legacy/step/cameraStep/cameraCapture/components/orientationLockOverlay/OrientationLockOverlay.js +19 -0
- package/build/legacy/step/cameraStep/cameraCapture/components/orientationLockOverlay/OrientationLockOverlay.messages.js +8 -0
- package/build/legacy/step/cameraStep/cameraCapture/hooks/useFullScreenOrientationLock.js +60 -0
- package/build/legacy/step/cameraStep/cameraCapture/hooks/useVideoConstraints.js +80 -0
- package/build/legacy/step/cameraStep/cameraCapture/index.js +1 -0
- package/build/legacy/step/cameraStep/cameraCapture/overlay/Overlay.js +77 -0
- package/build/legacy/step/cameraStep/cameraCapture/screens/cameraErrorScreen/CameraErrorScreen.js +18 -0
- package/build/legacy/step/cameraStep/cameraCapture/screens/index.js +1 -0
- package/build/legacy/step/cameraStep/cameraCapture/tracking/index.js +109 -0
- package/build/legacy/step/cameraStep/cameraCapture/types/index.js +7 -0
- package/build/legacy/step/cameraStep/cameraCapture/utils/index.js +107 -0
- package/build/legacy/step/cameraStep/index.js +1 -0
- package/build/legacy/step/externalConfirmationStep/ExternalConfirmationStep.js +64 -0
- package/build/legacy/step/externalConfirmationStep/index.js +1 -0
- package/build/legacy/step/index.js +3 -0
- package/build/legacy/step/layoutStep/LayoutStep.js +33 -0
- package/build/legacy/step/layoutStep/index.js +1 -0
- package/build/legacy/step/layoutStep/utils/index.js +2 -0
- package/build/legacy/step/layoutStep/utils/inline-reference-utils.js +105 -0
- package/build/legacy/step/layoutStep/utils/layout-utils.js +212 -0
- package/build/main.js +4791 -226
- package/build/main.min.js +1 -1
- package/build/main.mjs +4792 -227
- package/build/revamp/domain/components/AlertComponent.js +50 -0
- package/build/revamp/domain/components/AllOfComponent.js +72 -0
- package/build/revamp/domain/components/BooleanInputComponent.js +108 -0
- package/build/revamp/domain/components/BoxComponent.js +65 -0
- package/build/revamp/domain/components/ButtonComponent.js +50 -0
- package/build/revamp/domain/components/ColumnsComponent.js +74 -0
- package/build/revamp/domain/components/ConstComponent.js +50 -0
- package/build/revamp/domain/components/ContainerComponent.js +65 -0
- package/build/revamp/domain/components/DateInputComponent.js +127 -0
- package/build/revamp/domain/components/DecisionComponent.js +50 -0
- package/build/revamp/domain/components/DividerComponent.js +50 -0
- package/build/revamp/domain/components/FormComponent.js +65 -0
- package/build/revamp/domain/components/HeadingComponent.js +50 -0
- package/build/revamp/domain/components/ImageComponent.js +50 -0
- package/build/revamp/domain/components/InstructionsComponent.js +50 -0
- package/build/revamp/domain/components/IntegerInputComponent.js +125 -0
- package/build/revamp/domain/components/LoadingIndicatorComponent.js +50 -0
- package/build/revamp/domain/components/MarkdownComponent.js +50 -0
- package/build/revamp/domain/components/ModalComponent.js +65 -0
- package/build/revamp/domain/components/MultiUploadInputComponent.js +190 -0
- package/build/revamp/domain/components/NumberInputComponent.js +125 -0
- package/build/revamp/domain/components/ObjectComponent.js +104 -0
- package/build/revamp/domain/components/ParagraphComponent.js +50 -0
- package/build/revamp/domain/components/ReviewComponent.js +50 -0
- package/build/revamp/domain/components/SelectInputComponent.js +138 -0
- package/build/revamp/domain/components/StatusListComponent.js +50 -0
- package/build/revamp/domain/components/StepDomainComponent.js +93 -0
- package/build/revamp/domain/components/TextInputComponent.js +125 -0
- package/build/revamp/domain/components/UploadInputComponent.js +151 -0
- package/build/revamp/domain/components/repeatableComponent/RepeatableComponent.js +148 -0
- package/build/revamp/domain/components/searchComponent/SearchComponent.js +108 -0
- package/build/revamp/domain/components/utils/component-utils.js +18 -0
- package/build/revamp/domain/components/utils/debounce.js +38 -0
- package/build/revamp/domain/components/utils/file-utils.js +46 -0
- package/build/revamp/domain/components/utils/getComponentForLocalValueKey.js +31 -0
- package/build/revamp/domain/components/utils/isPartialLocalValueMatch.js +40 -0
- package/build/revamp/domain/features/events.js +1 -0
- package/build/revamp/domain/features/persistAsync/getComponentPersistAsync.js +133 -0
- package/build/revamp/domain/features/persistAsync/getPerformPersistAsync.js +103 -0
- package/build/revamp/domain/features/refresh/getPerformRefresh.js +53 -0
- package/build/revamp/domain/features/summary/summary-utils.js +39 -0
- package/build/revamp/domain/features/utils/http-utils.js +34 -0
- package/build/revamp/domain/features/utils/response-utils.js +9 -0
- package/build/revamp/domain/features/validation/validation-functions.js +12 -0
- package/build/revamp/domain/features/validation/value-checks.js +111 -0
- package/build/revamp/domain/features/validationAsync/getComponentValidationAsync.js +94 -0
- package/build/revamp/domain/features/validationAsync/getPerformValidationAsync.js +107 -0
- package/build/revamp/domain/mappers/types.js +1 -0
- package/build/revamp/domain/types.js +1 -0
- package/build/revamp/flow/response-utils.js +88 -0
- package/build/revamp/renderers/CoreContainerRenderer.js +8 -0
- package/build/revamp/renderers/LoadingContext.js +7 -0
- package/build/revamp/renderers/types.js +1 -0
- package/build/revamp/types.js +1 -0
- package/build/revamp/utils/component-utils.js +86 -0
- package/build/revamp/utils/type-utils.js +56 -0
- package/build/revamp/utils/type-validators.js +16 -0
- package/build/revamp/wise/renderers/AlertRenderer.js +11 -0
- package/build/revamp/wise/renderers/BooleanInputRenderer.js +34 -0
- package/build/revamp/wise/renderers/BoxRenderer.js +30 -0
- package/build/revamp/wise/renderers/ButtonRenderer.js +64 -0
- package/build/revamp/wise/renderers/ColumnsRenderer.js +25 -0
- package/build/revamp/wise/renderers/components/FieldInput.js +20 -0
- package/build/revamp/wise/renderers/components/Help.js +21 -0
- package/build/revamp/wise/renderers/components/LabelContentWithHelp.js +6 -0
- package/build/revamp/wise/renderers/utils/layout-utils.js +31 -0
- package/build/types/legacy/step/externalConfirmationStep/ExternalConfirmationStep.d.ts +1 -1
- package/build/types/revamp/domain/components/StepDomainComponent.d.ts +4 -2
- package/build/types/revamp/renderers/step/ExternalConfirmationDialog.d.ts +6 -0
- package/build/types/revamp/renderers/{StepRenderer.d.ts → step/StepRenderer.d.ts} +1 -1
- package/build/types/revamp/renderers/step/useExternal.d.ts +4 -0
- package/build/types/revamp/renderers/stepComponentToProps.d.ts +1 -1
- package/build/types/revamp/renderers/types.d.ts +3 -0
- package/package.json +13 -13
- /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;
|
package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfControl.js
ADDED
|
@@ -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';
|