@wise/dynamic-flow-client 3.3.2 → 3.4.0-experimental-9862ccf
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/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/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/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/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 +97 -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/DynamicFlowStep.js +37 -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/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 +30 -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/help/Help.js +20 -0
- package/build/legacy/jsonSchemaForm/help/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/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/ExternalConfirmationStep.messages.js +23 -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 +13 -28
- package/build/main.min.js +1 -1
- package/build/main.mjs +13 -28
- package/build/types/revamp/domain/features/events.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,141 @@
|
|
|
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, jsxs as _jsxs } from "react/jsx-runtime";
|
|
49
|
+
import { Status, UploadInput, } from '@transferwise/components';
|
|
50
|
+
import classNames from 'classnames';
|
|
51
|
+
import { useMemo, useState } from 'react';
|
|
52
|
+
import { useEventDispatcher } from '../../../../common/contexts';
|
|
53
|
+
import { usePersistAsync } from '../../../../common/hooks';
|
|
54
|
+
import { areFilesSame, toKilobytes, generateRandomId, isBlobSchema, } from '../../../../common/utils';
|
|
55
|
+
import { isNumber, isString, getArrayValidationFailures } from '../../../../common/validators';
|
|
56
|
+
import ControlFeedback from '../../../controlFeedback';
|
|
57
|
+
import { constructUploadResponse, constructUploadError, createPayload } from './utils';
|
|
58
|
+
import { useFormattedDefaultErrorMessages } from './utils/useFormattedDefaultErrorMessages';
|
|
59
|
+
function MultipleFileUploadSchema(props) {
|
|
60
|
+
var _this = this;
|
|
61
|
+
var _a, _b;
|
|
62
|
+
var onChange = props.onChange, schema = props.schema;
|
|
63
|
+
var onEvent = useEventDispatcher();
|
|
64
|
+
var defaultErrorMessages = useFormattedDefaultErrorMessages(schema);
|
|
65
|
+
var uid = useMemo(function () { return schema.$id || generateRandomId(); }, [schema.$id]);
|
|
66
|
+
var _c = useState(false), inputChanged = _c[0], setInputChanged = _c[1];
|
|
67
|
+
var _d = useState(function () { return convertFileIdsToComponentFileObjects(props.model || []); }), files = _d[0], setFiles = _d[1];
|
|
68
|
+
var performPersistAsync = usePersistAsync(schema.items.persistAsync);
|
|
69
|
+
var fileSchemaDescriptor = schema.items.persistAsync.schema;
|
|
70
|
+
var isBlob = isBlobSchema(fileSchemaDescriptor);
|
|
71
|
+
var uploadFile = function (userUploadedFile) { return __awaiter(_this, void 0, void 0, function () {
|
|
72
|
+
var payload, response, error_1;
|
|
73
|
+
return __generator(this, function (_a) {
|
|
74
|
+
switch (_a.label) {
|
|
75
|
+
case 0:
|
|
76
|
+
setInputChanged(true);
|
|
77
|
+
_a.label = 1;
|
|
78
|
+
case 1:
|
|
79
|
+
_a.trys.push([1, 4, , 5]);
|
|
80
|
+
return [4 /*yield*/, createPayload(userUploadedFile, isBlob)];
|
|
81
|
+
case 2:
|
|
82
|
+
payload = _a.sent();
|
|
83
|
+
onEvent('Dynamic Flow - PersistAsync', { status: 'pending', schemaId: schema.$id });
|
|
84
|
+
return [4 /*yield*/, performPersistAsync(payload)];
|
|
85
|
+
case 3:
|
|
86
|
+
response = _a.sent();
|
|
87
|
+
onEvent('Dynamic Flow - PersistAsync', { status: 'success', schemaId: schema.$id });
|
|
88
|
+
return [2 /*return*/, constructUploadResponse(response)];
|
|
89
|
+
case 4:
|
|
90
|
+
error_1 = _a.sent();
|
|
91
|
+
onEvent('Dynamic Flow - PersistAsync', { status: 'failure', schemaId: schema.$id });
|
|
92
|
+
return [2 /*return*/, Promise.reject(constructUploadError(error_1))];
|
|
93
|
+
case 5: return [2 /*return*/];
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}); };
|
|
97
|
+
function onFilesChange(newFiles) {
|
|
98
|
+
if (areFilesSame(newFiles, files)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
setFiles(newFiles);
|
|
102
|
+
var validFiles = getSuccessfullyProcessedFiles(newFiles);
|
|
103
|
+
var data = validFiles.map(function (file) { return file.id; });
|
|
104
|
+
onChange({
|
|
105
|
+
model: data,
|
|
106
|
+
triggerSchema: schema,
|
|
107
|
+
triggerModel: data
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
var validFiles = getSuccessfullyProcessedFiles(files);
|
|
111
|
+
var fileIds = validFiles.map(function (file) { return file.id; });
|
|
112
|
+
var fileListValidationFailures = getArrayValidationFailures(fileIds, schema, props.required);
|
|
113
|
+
var showError = Boolean(props.errors) ||
|
|
114
|
+
((inputChanged || props.submitted) && Boolean(fileListValidationFailures.length));
|
|
115
|
+
var accepts = 'accepts' in fileSchemaDescriptor && fileSchemaDescriptor.accepts;
|
|
116
|
+
var maxSize = 'maxSize' in fileSchemaDescriptor && fileSchemaDescriptor.maxSize;
|
|
117
|
+
var uploadInputProps = __assign(__assign(__assign({ multiple: true, className: 'form-control', files: files, fileInputName: uid, id: uid }, (accepts ? { fileTypes: accepts } : undefined)), (maxSize ? { sizeLimit: toKilobytes(maxSize) } : undefined)), { sizeLimitErrorMessage: ((_a = fileSchemaDescriptor.validationMessages) === null || _a === void 0 ? void 0 : _a.maxSize) ||
|
|
118
|
+
defaultErrorMessages.maxFileSizeErrorMessage, maxFiles: props.schema.maxItems, maxFilesErrorMessage: ((_b = props.schema.validationMessages) === null || _b === void 0 ? void 0 : _b.maxItems) || defaultErrorMessages.maxItemsErrorMessage, uploadButtonTitle: fileSchemaDescriptor.title, description: fileSchemaDescriptor.description, disabled: props.disabled, onUploadFile: function (formData) { return uploadFile(formData.get(uid)); }, onFilesChange: onFilesChange, onDeleteFile: function () { return Promise.resolve(); } });
|
|
119
|
+
var feedbackId = "".concat(uid, "-feedback");
|
|
120
|
+
return (_jsxs("div", __assign({ className: classNames('form-group', { 'has-error': showError }) }, { children: [_jsx("label", __assign({ className: "d-block control-label", htmlFor: uid }, { children: props.schema.title })), _jsx("div", __assign({ "aria-describedby": feedbackId }, { children: _jsx(UploadInput, __assign({}, uploadInputProps)) })), _jsx(ControlFeedback, { id: feedbackId, changed: inputChanged, submitted: props.submitted, errors: props.errors, schema: props.schema, validations: fileListValidationFailures, validationMessages: getValidationMessages(schema, Boolean(props.required), defaultErrorMessages), infoMessage: null, focused: false, blurred: true })] })));
|
|
121
|
+
}
|
|
122
|
+
MultipleFileUploadSchema.defaultProps = {
|
|
123
|
+
errors: null,
|
|
124
|
+
required: false
|
|
125
|
+
};
|
|
126
|
+
export default MultipleFileUploadSchema;
|
|
127
|
+
function getSuccessfullyProcessedFiles(allFiles) {
|
|
128
|
+
return allFiles.filter(function (file) { return !file.error && file.status === 'succeeded'; });
|
|
129
|
+
}
|
|
130
|
+
function convertFileIdsToComponentFileObjects(fileIds) {
|
|
131
|
+
return fileIds
|
|
132
|
+
.map(function (id) { return (isValidId(id) ? { id: id, status: Status.SUCCEEDED } : null); })
|
|
133
|
+
.filter(function (item) { return item !== null; });
|
|
134
|
+
}
|
|
135
|
+
function isValidId(id) {
|
|
136
|
+
return isNumber(id) || isString(id);
|
|
137
|
+
}
|
|
138
|
+
function getValidationMessages(schema, required, defaultErrorMessages) {
|
|
139
|
+
var minItems = schema.minItems, maxItems = schema.maxItems;
|
|
140
|
+
return __assign(__assign(__assign({}, (required && { required: defaultErrorMessages.requiredMessage })), (minItems && { minItems: defaultErrorMessages.minItemsErrorMessage })), (maxItems && { maxItems: defaultErrorMessages.maxItemsErrorMessage }));
|
|
141
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './MultipleFileUploadSchema';
|
|
@@ -0,0 +1,79 @@
|
|
|
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 { toBase64, generateRandomId } from '../../../../../common/utils';
|
|
49
|
+
import { isObject, isString } from '../../../../../common/validators';
|
|
50
|
+
export function createPayload(userUploadedFile, isBlobSchema) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
52
|
+
return __generator(this, function (_a) {
|
|
53
|
+
if (isBlobSchema) {
|
|
54
|
+
return [2 /*return*/, userUploadedFile];
|
|
55
|
+
}
|
|
56
|
+
if (userUploadedFile instanceof Blob) {
|
|
57
|
+
return [2 /*return*/, toBase64(userUploadedFile)];
|
|
58
|
+
}
|
|
59
|
+
throw new Error('Error creating payload for MultipleFileUploadSchema. Uploaded file is not an instance of Blob.');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
export function constructUploadResponse(response) {
|
|
64
|
+
var id = response.data;
|
|
65
|
+
return __assign({ id: id }, response);
|
|
66
|
+
}
|
|
67
|
+
export function constructUploadError(response) {
|
|
68
|
+
var isError = response instanceof Error;
|
|
69
|
+
var hasValidData = isObject(response) && 'data' in response;
|
|
70
|
+
var isInvalidResponseData = !hasValidData && !isError;
|
|
71
|
+
if (isInvalidResponseData) {
|
|
72
|
+
return isString(response) ? response : undefined;
|
|
73
|
+
}
|
|
74
|
+
if (isError) {
|
|
75
|
+
var error = response;
|
|
76
|
+
return { id: generateRandomId(), message: error.message };
|
|
77
|
+
}
|
|
78
|
+
return __assign({ message: isString(response.message) ? response.message : '' }, response);
|
|
79
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useIntl } from 'react-intl';
|
|
2
|
+
import CommonMessages from '../../../../../common/messages';
|
|
3
|
+
import MultiFileUploadMessages from '../../../../../../common/messages/multi-file-upload.messages';
|
|
4
|
+
export function useFormattedDefaultErrorMessages(_a) {
|
|
5
|
+
var maxItems = _a.maxItems, minItems = _a.minItems;
|
|
6
|
+
var formatMessage = useIntl().formatMessage;
|
|
7
|
+
var maxFileSizeError = MultiFileUploadMessages.maxFileSizeError, maxItemsError = MultiFileUploadMessages.maxItemsError, minItemsError = MultiFileUploadMessages.minItemsError;
|
|
8
|
+
return {
|
|
9
|
+
maxFileSizeErrorMessage: formatMessage(maxFileSizeError),
|
|
10
|
+
maxItemsErrorMessage: formatMessage(maxItemsError, { maxItems: maxItems }),
|
|
11
|
+
minItemsErrorMessage: formatMessage(minItemsError, { minItems: minItems }),
|
|
12
|
+
requiredMessage: formatMessage(CommonMessages.required)
|
|
13
|
+
};
|
|
14
|
+
}
|
package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/ItemSummary.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { NavigationOption } from '@transferwise/components';
|
|
3
|
+
import { getNavigationOptionMedia } from '../../../../layout/utils';
|
|
4
|
+
export function ItemSummaryOption(_a) {
|
|
5
|
+
var item = _a.item, onClick = _a.onClick;
|
|
6
|
+
return (_jsx(NavigationOption, { media: getNavigationOptionMedia(item), title: item.title, content: item.description, showMediaAtAllSizes: true, onClick: onClick }));
|
|
7
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
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, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
+
import { Header, Modal, NavigationOption } from '@transferwise/components';
|
|
23
|
+
import { Plus } from '@transferwise/icons';
|
|
24
|
+
import { useMemo, useState } from 'react';
|
|
25
|
+
import { useIntl } from 'react-intl';
|
|
26
|
+
import { getValidationFailures, isArray, isEmpty, isObject, isValidSchema, } from '../../../../common/validators';
|
|
27
|
+
import { ItemSummaryOption } from './ItemSummary';
|
|
28
|
+
import messages from '../../../../../common/messages/repeatable.messages';
|
|
29
|
+
import RepeatableSchemaStep from './RepeatableSchemaStep';
|
|
30
|
+
import { getItemSummaryFromSchema } from './utils/summary-utils';
|
|
31
|
+
import classNames from 'classnames';
|
|
32
|
+
import ControlFeedback from '../../../controlFeedback';
|
|
33
|
+
import { generateRandomId } from '../../../../common/utils';
|
|
34
|
+
import { useFormattedDefaultErrorMessages } from '../multipleFileUploadSchema/utils';
|
|
35
|
+
function RepeatableSchema(_a) {
|
|
36
|
+
var _b;
|
|
37
|
+
var schema = _a.schema, model = _a.model, errors = _a.errors, submitted = _a.submitted, _c = _a.required, required = _c === void 0 ? false : _c, onChange = _a.onChange;
|
|
38
|
+
var _d = useState(null), openModalType = _d[0], setOpenModalType = _d[1];
|
|
39
|
+
var _e = useState(false), changed = _e[0], setChanged = _e[1];
|
|
40
|
+
var _f = useState(function () {
|
|
41
|
+
if (isObject(model) && !isArray(model)) {
|
|
42
|
+
throw new Error('RepeatableSchema does not support object models. Ensure your array schema is wrapped inside an object schema.');
|
|
43
|
+
}
|
|
44
|
+
return model
|
|
45
|
+
? model.map(function (item) { return getItemSummaryFromSchema(schema.items, item, schema === null || schema === void 0 ? void 0 : schema.summary); })
|
|
46
|
+
: null;
|
|
47
|
+
}), itemSummaries = _f[0], setItemSummaries = _f[1];
|
|
48
|
+
var _g = useState({ item: null, model: null }), editableItem = _g[0], setEditableItem = _g[1];
|
|
49
|
+
var id = useMemo(function () { return schema.$id || generateRandomId(); }, [schema.$id]);
|
|
50
|
+
var broadcastModelChange = function (updatedItems) {
|
|
51
|
+
var updatedModel = updatedItems
|
|
52
|
+
? updatedItems.map(function (_a) {
|
|
53
|
+
var value = _a.value;
|
|
54
|
+
return value;
|
|
55
|
+
})
|
|
56
|
+
: null;
|
|
57
|
+
onChange({
|
|
58
|
+
model: updatedModel,
|
|
59
|
+
triggerSchema: schema.items,
|
|
60
|
+
triggerModel: updatedModel
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
var onAddItem = function () {
|
|
64
|
+
setOpenModalType('add');
|
|
65
|
+
};
|
|
66
|
+
var onEditItem = function (item) {
|
|
67
|
+
setEditableItem({ item: item, model: item.value });
|
|
68
|
+
setOpenModalType('edit');
|
|
69
|
+
};
|
|
70
|
+
var onSaveItem = function (action, summaryTextOverride) {
|
|
71
|
+
var _a;
|
|
72
|
+
setChanged(true);
|
|
73
|
+
var updatedItem = action === 'remove'
|
|
74
|
+
? null
|
|
75
|
+
: getItemSummaryFromSchema(schema.items, editableItem.model, schema.summary, summaryTextOverride);
|
|
76
|
+
if (action !== 'remove' && !isValidSchema((_a = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.value) !== null && _a !== void 0 ? _a : null, schema.items)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
var updatedItemSummaries = getUpdatedItemSummaries(action, {
|
|
80
|
+
originalItem: editableItem.item,
|
|
81
|
+
updatedItem: updatedItem,
|
|
82
|
+
itemSummaries: itemSummaries
|
|
83
|
+
});
|
|
84
|
+
setItemSummaries(updatedItemSummaries);
|
|
85
|
+
broadcastModelChange(updatedItemSummaries);
|
|
86
|
+
setEditableItem({ item: null, model: null });
|
|
87
|
+
setOpenModalType(null);
|
|
88
|
+
};
|
|
89
|
+
var onCancelEdit = function () {
|
|
90
|
+
setEditableItem({ item: null, model: null });
|
|
91
|
+
setOpenModalType(null);
|
|
92
|
+
};
|
|
93
|
+
var formatMessage = useIntl().formatMessage;
|
|
94
|
+
var validations = getValidationFailures(model, schema, required);
|
|
95
|
+
var base64ValidationMessages = useFormattedDefaultErrorMessages({
|
|
96
|
+
minItems: schema.minItems,
|
|
97
|
+
maxItems: schema.maxItems
|
|
98
|
+
});
|
|
99
|
+
var validationMessages = schema.items.type === 'string' && schema.items.format === 'base64url'
|
|
100
|
+
? {
|
|
101
|
+
minItems: base64ValidationMessages.minItemsErrorMessage,
|
|
102
|
+
maxItems: base64ValidationMessages.maxItemsErrorMessage,
|
|
103
|
+
required: base64ValidationMessages.requiredMessage
|
|
104
|
+
}
|
|
105
|
+
: undefined;
|
|
106
|
+
var formGroupClasses = {
|
|
107
|
+
'has-error': (_b = (errors && !isEmpty(errors))) !== null && _b !== void 0 ? _b : (submitted && validations.length)
|
|
108
|
+
};
|
|
109
|
+
return (_jsxs("div", __assign({ id: id, className: classNames(formGroupClasses) }, { children: [schema.title && _jsx(Header, { title: schema.title }), itemSummaries === null || itemSummaries === void 0 ? void 0 : itemSummaries.map(function (itemSummary) { return (_jsx(ItemSummaryOption, { item: itemSummary, onClick: function () { return onEditItem(itemSummary); } }, JSON.stringify(itemSummary))); }), _jsx(NavigationOption, { media: _jsx(Plus, {}), title: schema.addItemTitle || formatMessage(messages.addItemTitle), showMediaAtAllSizes: true, onClick: onAddItem }), _jsx(Modal, { open: openModalType !== null, title: (openModalType === 'add' ? schema.addItemTitle : schema.editItemTitle) ||
|
|
110
|
+
formatMessage(messages.addItemTitle), body: _jsx(RepeatableSchemaStep, { type: openModalType !== null && openModalType !== void 0 ? openModalType : 'add', schema: schema, model: editableItem.model, errors: errors, submitted: submitted, onAction: onSaveItem, onModelChange: function (_a) {
|
|
111
|
+
var model = _a.model;
|
|
112
|
+
return setEditableItem(__assign(__assign({}, editableItem), { model: model }));
|
|
113
|
+
} }), onClose: onCancelEdit }), _jsx(ControlFeedback, { id: "".concat(id, "-feedback"), changed: changed, focused: false, blurred: false, errors: typeof errors === 'string' ? errors : undefined, submitted: submitted, schema: schema, validations: validations, validationMessages: validationMessages, infoMessage: null })] })));
|
|
114
|
+
}
|
|
115
|
+
var getUpdatedItemSummaries = function (action, _a) {
|
|
116
|
+
var originalItem = _a.originalItem, updatedItem = _a.updatedItem, itemSummaries = _a.itemSummaries;
|
|
117
|
+
if (action === 'remove') {
|
|
118
|
+
return (itemSummaries || []).filter(function (itemSummary) { return itemSummary !== originalItem; });
|
|
119
|
+
}
|
|
120
|
+
if (!updatedItem) {
|
|
121
|
+
return itemSummaries;
|
|
122
|
+
}
|
|
123
|
+
switch (action) {
|
|
124
|
+
case 'add':
|
|
125
|
+
return __spreadArray(__spreadArray([], (itemSummaries || []), true), [updatedItem], false);
|
|
126
|
+
case 'edit':
|
|
127
|
+
return (itemSummaries || []).map(function (itemSummary) {
|
|
128
|
+
return itemSummary === originalItem ? updatedItem : itemSummary;
|
|
129
|
+
});
|
|
130
|
+
default:
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
export default RepeatableSchema;
|
|
@@ -0,0 +1,85 @@
|
|
|
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 __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
24
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
25
|
+
if (ar || !(i in from)) {
|
|
26
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
27
|
+
ar[i] = from[i];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
31
|
+
};
|
|
32
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
33
|
+
import { useState } from 'react';
|
|
34
|
+
import { useIntl } from 'react-intl';
|
|
35
|
+
import { DynamicFlowStep } from '../../../../dynamicFlow/DynamicFlowStep';
|
|
36
|
+
import messages from '../../../../../common/messages/repeatable.messages';
|
|
37
|
+
function RepeatableSchemaStep(_a) {
|
|
38
|
+
var type = _a.type, schema = _a.schema, model = _a.model, errors = _a.errors, submitted = _a.submitted, onModelChange = _a.onModelChange, onAction = _a.onAction;
|
|
39
|
+
var formatMessage = useIntl().formatMessage;
|
|
40
|
+
var _b = useState(undefined), filename = _b[0], setFilename = _b[1];
|
|
41
|
+
var step = {
|
|
42
|
+
layout: __spreadArray([
|
|
43
|
+
{
|
|
44
|
+
type: 'form',
|
|
45
|
+
schema: schema.items
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: 'button',
|
|
49
|
+
control: 'primary',
|
|
50
|
+
action: {
|
|
51
|
+
url: type,
|
|
52
|
+
title: formatMessage(type === 'add' ? messages.addItem : messages.editItem)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
], (type === 'edit'
|
|
56
|
+
? [
|
|
57
|
+
{
|
|
58
|
+
type: 'button',
|
|
59
|
+
context: 'negative',
|
|
60
|
+
action: {
|
|
61
|
+
url: 'remove',
|
|
62
|
+
title: formatMessage(messages.removeItem)
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
]
|
|
66
|
+
: []), true),
|
|
67
|
+
title: '',
|
|
68
|
+
actions: [],
|
|
69
|
+
schemas: []
|
|
70
|
+
};
|
|
71
|
+
var onChange = function (props) {
|
|
72
|
+
var metadata = props.metadata, model = props.model, modelChangeProps = __rest(props, ["metadata", "model"]);
|
|
73
|
+
if (schema.items.format === 'base64url' &&
|
|
74
|
+
typeof model === 'string' &&
|
|
75
|
+
typeof (metadata === null || metadata === void 0 ? void 0 : metadata.filename) === 'string') {
|
|
76
|
+
setFilename(metadata.filename);
|
|
77
|
+
}
|
|
78
|
+
onModelChange(__assign(__assign({}, modelChangeProps), { model: model }));
|
|
79
|
+
};
|
|
80
|
+
return (_jsx(DynamicFlowStep, { step: step, model: model, stepLayoutOptions: { displayStepTitle: false }, submitted: submitted, formErrors: errors, globalError: null, onAction: function (action) {
|
|
81
|
+
onAction(action.url, filename);
|
|
82
|
+
setFilename(undefined);
|
|
83
|
+
}, onModelChange: onChange }));
|
|
84
|
+
}
|
|
85
|
+
export default RepeatableSchemaStep;
|
|
@@ -0,0 +1,135 @@
|
|
|
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 { getSchemaType, isConstSchema, isNullableStringModel, isObjectModel, isOneOfObjectSchema, } from '../../../../../common/utils';
|
|
13
|
+
import { isString } from '../../../../../common/validators';
|
|
14
|
+
import { getActiveSchemaIndex, getBestMatchingSchemaIndexForValue, } from '../../../../oneOfSchema/utils';
|
|
15
|
+
export var getItemSummaryFromSchema = function (schema, model, defaults, summaryTextOverride) {
|
|
16
|
+
if (defaults === void 0) { defaults = {}; }
|
|
17
|
+
var _a = defaults.defaultTitle, defaultTitle = _a === void 0 ? '' : _a, _b = defaults.defaultDescription, defaultDescription = _b === void 0 ? '' : _b, defaultIcon = defaults.defaultIcon, defaultImage = defaults.defaultImage;
|
|
18
|
+
var title = getSummaryPropFromSchema({
|
|
19
|
+
schema: schema,
|
|
20
|
+
model: model,
|
|
21
|
+
providesProp: 'providesTitle',
|
|
22
|
+
getValueFromSchema: function (schema, model) {
|
|
23
|
+
return summaryTextOverride !== null && summaryTextOverride !== void 0 ? summaryTextOverride : getStringValueFromSchema(schema, model);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
var description = getSummaryPropFromSchema({
|
|
27
|
+
schema: schema,
|
|
28
|
+
model: model,
|
|
29
|
+
providesProp: 'providesDescription',
|
|
30
|
+
getValueFromSchema: function (schema, model) {
|
|
31
|
+
return summaryTextOverride !== null && summaryTextOverride !== void 0 ? summaryTextOverride : getStringValueFromSchema(schema, model);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
var icon = getSummaryPropFromSchema({
|
|
35
|
+
schema: schema,
|
|
36
|
+
model: model,
|
|
37
|
+
providesProp: 'providesIcon',
|
|
38
|
+
getValueFromSchema: function (schema) { var _a; return (_a = schema.icon) !== null && _a !== void 0 ? _a : null; }
|
|
39
|
+
});
|
|
40
|
+
var image = getSummaryPropFromSchema({
|
|
41
|
+
schema: schema,
|
|
42
|
+
model: model,
|
|
43
|
+
providesProp: 'providesImage',
|
|
44
|
+
getValueFromSchema: function (schema) { var _a; return (_a = schema.image) !== null && _a !== void 0 ? _a : null; }
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
value: model,
|
|
48
|
+
title: title || defaultTitle,
|
|
49
|
+
description: description || defaultDescription,
|
|
50
|
+
icon: icon || defaultIcon,
|
|
51
|
+
image: image || defaultImage
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
var getSummaryPropFromSchema = function (props) {
|
|
55
|
+
var schema = props.schema, model = props.model, providesProp = props.providesProp, getValueFromSchema = props.getValueFromSchema;
|
|
56
|
+
var type = getSchemaType(schema);
|
|
57
|
+
if (schemaSummaryProvides(schema.summary, providesProp)) {
|
|
58
|
+
return getValueFromSchema(schema, model);
|
|
59
|
+
}
|
|
60
|
+
switch (type) {
|
|
61
|
+
case 'object': {
|
|
62
|
+
return getObjectValueFromSchema(props);
|
|
63
|
+
}
|
|
64
|
+
case 'oneOf': {
|
|
65
|
+
return getOneOfValueFromSchema(props);
|
|
66
|
+
}
|
|
67
|
+
case 'allOf': {
|
|
68
|
+
return getAllOfValueFromSchema(props);
|
|
69
|
+
}
|
|
70
|
+
default:
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
var getObjectValueFromSchema = function (props) {
|
|
75
|
+
var schema = props.schema, model = props.model;
|
|
76
|
+
var objectSchema = schema;
|
|
77
|
+
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
78
|
+
for (var propertyKey in objectSchema.properties) {
|
|
79
|
+
var propertySchema = objectSchema.properties[propertyKey];
|
|
80
|
+
var propertyModel = isObjectModel(model) && propertyKey in model ? model[propertyKey] : null;
|
|
81
|
+
var result = getSummaryPropFromSchema(__assign(__assign({}, props), { schema: propertySchema, model: propertyModel }));
|
|
82
|
+
if (result) {
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
};
|
|
88
|
+
var getOneOfValueFromSchema = function (props) {
|
|
89
|
+
var schema = props.schema, model = props.model;
|
|
90
|
+
if (isOneOfObjectSchema(schema)) {
|
|
91
|
+
if (!isObjectModel(model)) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
var activeSchemaIndex_1 = getBestMatchingSchemaIndexForValue(schema, model);
|
|
95
|
+
if (activeSchemaIndex_1 === null || activeSchemaIndex_1 < 0) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
var activeSchema = schema.oneOf[activeSchemaIndex_1];
|
|
99
|
+
return getSummaryPropFromSchema(__assign(__assign({}, props), { schema: activeSchema }));
|
|
100
|
+
}
|
|
101
|
+
var oneOfSchema = schema;
|
|
102
|
+
var activeSchemaIndex = getActiveSchemaIndex(oneOfSchema, model);
|
|
103
|
+
if (activeSchemaIndex === null || activeSchemaIndex < 0) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
return getSummaryPropFromSchema(__assign(__assign({}, props), { schema: oneOfSchema.oneOf[activeSchemaIndex] }));
|
|
107
|
+
};
|
|
108
|
+
var getAllOfValueFromSchema = function (props) {
|
|
109
|
+
var schema = props.schema;
|
|
110
|
+
var allOfSchema = schema;
|
|
111
|
+
for (var _i = 0, _a = allOfSchema.allOf; _i < _a.length; _i++) {
|
|
112
|
+
var childSchema = _a[_i];
|
|
113
|
+
var result = getSummaryPropFromSchema(__assign(__assign({}, props), { schema: childSchema }));
|
|
114
|
+
if (result) {
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
};
|
|
120
|
+
var getStringValueFromSchema = function (schema, model) {
|
|
121
|
+
if (isConstSchema(schema)) {
|
|
122
|
+
if (schema.title) {
|
|
123
|
+
return schema.title;
|
|
124
|
+
}
|
|
125
|
+
if (isString(schema["const"])) {
|
|
126
|
+
return schema["const"];
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
return isNullableStringModel(model) ? model : null;
|
|
131
|
+
};
|
|
132
|
+
var schemaSummaryProvides = function (summary, providesProp) {
|
|
133
|
+
// eslint-disable-next-line prefer-object-has-own, no-implicit-coercion
|
|
134
|
+
return !!summary && Object.hasOwnProperty.call(summary, providesProp) && Boolean(summary[providesProp]);
|
|
135
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './ArraySchema';
|