fuse-importer 0.0.5-testing → 0.0.7-testing
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/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +2 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +5 -4
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +2 -2
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.d.ts +1 -0
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.js +8 -3
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.d.ts +3 -1
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +38 -11
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.d.ts +11 -5
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +21 -9
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +1 -10
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.d.ts +2 -2
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +33 -11
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.d.ts +7 -3
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +136 -38
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +6 -1
- package/lib/esm/Importer/data/index.d.ts +2 -2
- package/lib/esm/Importer/data/index.js +12 -10
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +2 -1
- package/lib/esm/common/Table/TableActions/TableActions.js +3 -2
- package/lib/esm/common/Table/TableActions/TableActions.styles.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/TableActions.styles.js +4 -3
- package/lib/esm/common/Table/TableActions/TransformedRecordsCount.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +71 -0
- package/lib/esm/common/Table/TableActions/icons.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/icons.js +1 -0
- package/lib/esm/common/Table/TableView/TableRows/TableRow.js +1 -1
- package/lib/esm/common/columnsTransformations.d.ts +1 -0
- package/lib/esm/common/columnsTransformations.js +12 -10
- package/lib/esm/common/columnsValidations.js +261 -5
- package/lib/esm/locales/de.d.ts +5 -0
- package/lib/esm/locales/de.js +5 -0
- package/lib/esm/locales/en.d.ts +5 -0
- package/lib/esm/locales/en.js +5 -0
- package/lib/esm/locales/es.d.ts +5 -0
- package/lib/esm/locales/es.js +5 -0
- package/lib/esm/locales/fr.d.ts +5 -0
- package/lib/esm/locales/fr.js +5 -0
- package/lib/esm/types.d.ts +7 -0
- package/lib/main.js +17 -17
- package/package.json +1 -1
|
@@ -44,7 +44,7 @@ var ImporterDropzone = function () {
|
|
|
44
44
|
var _a = useUploaderContext(), setIsUploading = _a.setIsUploading, setFileName = _a.setFileName;
|
|
45
45
|
var setUploadedData = useImporterContext().setUploadedData;
|
|
46
46
|
var validHeadersCount = function (headersLength) {
|
|
47
|
-
var headersCountLimit =
|
|
47
|
+
var headersCountLimit = 70;
|
|
48
48
|
if (headersLength > headersCountLimit) {
|
|
49
49
|
addToast("File cannot contain more than ".concat(headersCountLimit, " columns"), "error");
|
|
50
50
|
return false;
|
|
@@ -37,6 +37,8 @@ type State = {
|
|
|
37
37
|
isFiltering: boolean;
|
|
38
38
|
sortBy: SortBy | null;
|
|
39
39
|
setSortBy: React.Dispatch<React.SetStateAction<SortBy>>;
|
|
40
|
+
setIsTransformTooltipOpened: React.Dispatch<React.SetStateAction<boolean>>;
|
|
41
|
+
isTransformTooltipOpened: boolean;
|
|
40
42
|
} & ValidationState;
|
|
41
43
|
type Props = SpreadsheetProps & {
|
|
42
44
|
children: JSX.Element;
|
|
@@ -53,8 +53,9 @@ export var SpreadsheetContextProvider = function (_a) {
|
|
|
53
53
|
var _g = useState(""), filteredInputValue = _g[0], setFilteredInputValue = _g[1];
|
|
54
54
|
var _h = useState(null), sortBy = _h[0], setSortBy = _h[1];
|
|
55
55
|
var addRowTimeoutRef = useRef(null);
|
|
56
|
-
var _j =
|
|
57
|
-
var _k =
|
|
56
|
+
var _j = useState(false), isTransformTooltipOpened = _j[0], setIsTransformTooltipOpened = _j[1];
|
|
57
|
+
var _k = useSpreadsheetFilter(), spreadsheetFilter = _k.spreadsheetFilter, filterRecordsByRowType = _k.filterRecordsByRowType, filterRecordsByFieldErrors = _k.filterRecordsByFieldErrors, resetSpreadsheetFilter = _k.resetSpreadsheetFilter;
|
|
58
|
+
var _l = useValidationState({
|
|
58
59
|
dataSet: dataSet,
|
|
59
60
|
initialDataSet: initialDataSet,
|
|
60
61
|
fields: fields,
|
|
@@ -63,7 +64,7 @@ export var SpreadsheetContextProvider = function (_a) {
|
|
|
63
64
|
setDataSet: setDataSet,
|
|
64
65
|
setIsLoading: setIsLoading,
|
|
65
66
|
onValidateRecord: onValidateRecord,
|
|
66
|
-
}), updateRecordAndRevalidate =
|
|
67
|
+
}), updateRecordAndRevalidate = _l.updateRecordAndRevalidate, deleteRecords = _l.deleteRecords, warnings = _l.warnings, errors = _l.errors, validationState = __rest(_l, ["updateRecordAndRevalidate", "deleteRecords", "warnings", "errors"]);
|
|
67
68
|
var addNewRowsToSpreadsheet = function () {
|
|
68
69
|
addRowTimeoutRef.current = setTimeout(function () {
|
|
69
70
|
var _a, _b;
|
|
@@ -169,7 +170,7 @@ export var SpreadsheetContextProvider = function (_a) {
|
|
|
169
170
|
return updatedData;
|
|
170
171
|
});
|
|
171
172
|
}, [dataSet, dataSnapshot]);
|
|
172
|
-
var value = __assign(__assign({ data: updatedDataSnapshot, fields: fields, isLoading: isLoading }, validationState), { isReadOnly: isReadOnly, sortByFieldErrors: sortByFieldErrors, sortByFieldWarnings: sortByFieldWarnings, options: options, recordsWithValuesCount: recordsWithValuesCount, filteredDataCount: filteredDataCount, sortBy: sortBy, warnings: warnings, errors: errors, setIsLoading: setIsLoading, setSortByFieldErrors: handleSortByFieldErrors, setSortByFieldWarnings: handleSortByFieldWarnings, onValidateRecord: onValidateRecord, updateRecord: updateRecordAndRevalidate, selectedRows: selectedRows, setSelectedRows: setSelectedRows, deleteRecords: handleDeleteErrors, filteredInputValue: filteredInputValue, setFilteredInputValue: setFilteredInputValue, lastClickedIndexRef: lastClickedIndexRef, addNewRowsToSpreadsheet: addNewRowsToSpreadsheet, spreadsheetFilter: spreadsheetFilter, resetSpreadsheetFilter: resetSpreadsheetFilter, filterRecordsByRowType: filterRecordsByRowType, filterRecordsByFieldErrors: filterRecordsByFieldErrors, checkboxColumnWidth: checkboxColumnWidth, setSortBy: setSortBy, isFiltering: isFiltering });
|
|
173
|
+
var value = __assign(__assign({ data: updatedDataSnapshot, fields: fields, isLoading: isLoading }, validationState), { isReadOnly: isReadOnly, sortByFieldErrors: sortByFieldErrors, sortByFieldWarnings: sortByFieldWarnings, options: options, recordsWithValuesCount: recordsWithValuesCount, filteredDataCount: filteredDataCount, sortBy: sortBy, warnings: warnings, errors: errors, setIsLoading: setIsLoading, setSortByFieldErrors: handleSortByFieldErrors, setSortByFieldWarnings: handleSortByFieldWarnings, onValidateRecord: onValidateRecord, updateRecord: updateRecordAndRevalidate, selectedRows: selectedRows, setSelectedRows: setSelectedRows, deleteRecords: handleDeleteErrors, filteredInputValue: filteredInputValue, setFilteredInputValue: setFilteredInputValue, lastClickedIndexRef: lastClickedIndexRef, addNewRowsToSpreadsheet: addNewRowsToSpreadsheet, spreadsheetFilter: spreadsheetFilter, resetSpreadsheetFilter: resetSpreadsheetFilter, filterRecordsByRowType: filterRecordsByRowType, filterRecordsByFieldErrors: filterRecordsByFieldErrors, checkboxColumnWidth: checkboxColumnWidth, setSortBy: setSortBy, isFiltering: isFiltering, setIsTransformTooltipOpened: setIsTransformTooltipOpened, isTransformTooltipOpened: isTransformTooltipOpened });
|
|
173
174
|
return (_jsx(SpreadsheetContext.Provider, __assign({ value: value }, { children: children })));
|
|
174
175
|
};
|
|
175
176
|
export var useSpreadsheetContext = function () { return useContext(SpreadsheetContext); };
|
|
@@ -77,8 +77,8 @@ var SpreadsheetData = function (props) {
|
|
|
77
77
|
Header: function () { return (_jsx(FieldHeader, { field: field, sortByFieldErrors: setSortByFieldErrors, sortByFieldWarnings: setSortByFieldWarnings })); },
|
|
78
78
|
Content: function (record) {
|
|
79
79
|
var Input = inputTypes[field.type];
|
|
80
|
-
var rowIndex = record.rowIndex, recordProp = __rest(record, ["rowIndex"]);
|
|
81
|
-
return (_jsx(Input, { id: "".concat(field.name, "-").concat(rowIndex), fieldType: field.type, name: field.name, options: field.options, record: recordProp }));
|
|
80
|
+
var rowIndex = record.rowIndex, columnWidth = record.columnWidth, recordProp = __rest(record, ["rowIndex", "columnWidth"]);
|
|
81
|
+
return (_jsx(Input, { id: "".concat(field.name, "-").concat(rowIndex), fieldType: field.type, name: field.name, options: field.options, record: recordProp, columnWidth: columnWidth }));
|
|
82
82
|
},
|
|
83
83
|
}); });
|
|
84
84
|
}, [fields, setSortByFieldErrors]);
|
|
@@ -20,6 +20,7 @@ import { Autocomplete as AutocompleteBase, } from "../../../../../common/inputs/
|
|
|
20
20
|
import { SelectMenuDiv, SelectMenuScrollArea, } from "../../../../../common/inputs/SelectMenu";
|
|
21
21
|
import { HTMLInput, TextInputIcon, } from "../../../../../common/inputs/TextInput";
|
|
22
22
|
import { spreadsheetRowHeightPx } from "../../common";
|
|
23
|
+
import { useSpreadsheetContext } from "../../SpreadsheetContextProvider";
|
|
23
24
|
var Autocomplete = styled(AutocompleteBase)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n ", " {\n border: none;\n border-radius: 0;\n margin: 0;\n background: transparent;\n height: ", "px;\n padding: 0 12px;\n\n ", "\n\n ::placeholder {\n ", "\n\n ", "\n\n ::placeholder {\n ", "\n }\n }\n\n :focus {\n border: none;\n box-shadow: none;\n }\n\n :hover {\n background: transparent;\n }\n }\n ", " {\n right: 6px;\n }\n ", " {\n border-radius: 7px;\n }\n ", " {\n padding: 4px;\n }\n"], ["\n ", " {\n border: none;\n border-radius: 0;\n margin: 0;\n background: transparent;\n height: ", "px;\n padding: 0 12px;\n\n ", "\n\n ::placeholder {\n ", "\n\n ", "\n\n ::placeholder {\n ", "\n }\n }\n\n :focus {\n border: none;\n box-shadow: none;\n }\n\n :hover {\n background: transparent;\n }\n }\n ", " {\n right: 6px;\n }\n ", " {\n border-radius: 7px;\n }\n ", " {\n padding: 4px;\n }\n"])), HTMLInput, spreadsheetRowHeightPx - 5, function (p) {
|
|
24
25
|
return p.hasWarning && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.orange1200; });
|
|
25
26
|
}, function (p) {
|
|
@@ -30,9 +31,13 @@ var Autocomplete = styled(AutocompleteBase)(templateObject_5 || (templateObject_
|
|
|
30
31
|
return p.hasError && css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.error; });
|
|
31
32
|
}, TextInputIcon, SelectMenuDiv, SelectMenuScrollArea);
|
|
32
33
|
export var SpreadsheetAutocomplete = function (props) {
|
|
33
|
-
var
|
|
34
|
-
var
|
|
35
|
-
|
|
34
|
+
var _a, _b, _c;
|
|
35
|
+
var name = props.name, record = props.record, options = props.options, fieldType = props.fieldType, _d = props.isInputDisabled, isInputDisabled = _d === void 0 ? false : _d, id = props.id;
|
|
36
|
+
var _e = useSpreadsheetField(name, record, fieldType), value = _e.value, setValue = _e.setValue, validationError = _e.validationError, validationWarning = _e.validationWarning;
|
|
37
|
+
var isTransformTooltipOpened = useSpreadsheetContext().isTransformTooltipOpened;
|
|
38
|
+
var isHighlighted = isTransformTooltipOpened &&
|
|
39
|
+
((_c = (_b = (_a = record._meta) === null || _a === void 0 ? void 0 : _a.transformedRow) === null || _b === void 0 ? void 0 : _b[name]) === null || _c === void 0 ? void 0 : _c.transformed);
|
|
40
|
+
return (_jsx(SpreadsheetField, __assign({ validationError: validationError, validationWarning: validationWarning, isHighlighted: isHighlighted }, { children: _jsx(Autocomplete, { placement: "bottom", isInputDisabled: isInputDisabled, hasError: !!validationError, hasWarning: !!validationWarning, options: options, value: value, icon: chevronDownIcon, onChange: function (v) { return !isTransformTooltipOpened && setValue(v); }, disabledWhen: isTransformTooltipOpened, id: id }) })));
|
|
36
41
|
};
|
|
37
42
|
var chevronDownIcon = (_jsx("svg", __assign({ width: "10", height: "6", viewBox: "0 0 10 6", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: _jsx("path", { d: "M8.46289 1L4.98131 4.48159L1.49972 1", stroke: "black", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) })));
|
|
38
43
|
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
|
|
@@ -4,9 +4,11 @@ export type SpreadsheetTextInputArgs = {
|
|
|
4
4
|
name: string;
|
|
5
5
|
record: Record;
|
|
6
6
|
fieldType: FieldTypes;
|
|
7
|
+
columnWidth?: string;
|
|
7
8
|
} & HTMLInputCSSProps;
|
|
8
|
-
export declare const SpreadsheetInput: ({ name, record, fieldType, ...props }: SpreadsheetTextInputArgs) => JSX.Element;
|
|
9
|
+
export declare const SpreadsheetInput: ({ name, record, fieldType, columnWidth, ...props }: SpreadsheetTextInputArgs) => JSX.Element;
|
|
9
10
|
export declare const Input: import("styled-components").StyledComponent<"input", import("styled-components").DefaultTheme, {
|
|
10
11
|
hasError: boolean;
|
|
11
12
|
hasWarning?: boolean;
|
|
13
|
+
fitContent?: boolean;
|
|
12
14
|
} & import("../../../../../styled/utils").HTMLInputProps & import("../../../../../styled/utils").CSSProps, never>;
|
|
@@ -24,20 +24,47 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
24
24
|
}
|
|
25
25
|
return t;
|
|
26
26
|
};
|
|
27
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
27
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
28
|
+
import { useMemo } from "react";
|
|
28
29
|
import styled, { css } from "styled-components";
|
|
29
30
|
import { SpreadsheetField, useSpreadsheetField } from ".";
|
|
31
|
+
import { Div } from "../../../../../styled/utils";
|
|
32
|
+
import { useSpreadsheetContext } from "../../SpreadsheetContextProvider";
|
|
30
33
|
export var SpreadsheetInput = function (_a) {
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
var _b, _c, _d, _e, _f, _g;
|
|
35
|
+
var name = _a.name, record = _a.record, fieldType = _a.fieldType, columnWidth = _a.columnWidth, props = __rest(_a, ["name", "record", "fieldType", "columnWidth"]);
|
|
36
|
+
var _h = useSpreadsheetField(name, record, fieldType), value = _h.value, setValue = _h.setValue, validationError = _h.validationError, validationWarning = _h.validationWarning;
|
|
37
|
+
var isTransformTooltipOpened = useSpreadsheetContext().isTransformTooltipOpened;
|
|
38
|
+
var isHighlighted = isTransformTooltipOpened &&
|
|
39
|
+
((_d = (_c = (_b = record._meta) === null || _b === void 0 ? void 0 : _b.transformedRow) === null || _c === void 0 ? void 0 : _c[name]) === null || _d === void 0 ? void 0 : _d.transformed);
|
|
40
|
+
var expandedFieldWidth = useMemo(function () {
|
|
41
|
+
var _a, _b, _c, _d;
|
|
42
|
+
// if the value is falsy, returns the default width
|
|
43
|
+
if (!value)
|
|
44
|
+
return columnWidth;
|
|
45
|
+
var averageCharacterSize = 9;
|
|
46
|
+
var inputPadding = 24; // 12 left + 12 right
|
|
47
|
+
var transformedValueSize = value.length * averageCharacterSize;
|
|
48
|
+
var originalValueSize = isTransformTooltipOpened
|
|
49
|
+
? ((_d = (_c = (_b = (_a = record._meta) === null || _a === void 0 ? void 0 : _a.transformedRow) === null || _b === void 0 ? void 0 : _b[name]) === null || _c === void 0 ? void 0 : _c.original) === null || _d === void 0 ? void 0 : _d.length) *
|
|
50
|
+
averageCharacterSize
|
|
51
|
+
: 0 || 0;
|
|
52
|
+
var totalInputSize = transformedValueSize + originalValueSize + inputPadding + 50;
|
|
53
|
+
var defaultWidthAsNumber = Number.parseInt(columnWidth.replace("px", ""));
|
|
54
|
+
return totalInputSize > defaultWidthAsNumber
|
|
55
|
+
? "".concat(totalInputSize, "px")
|
|
56
|
+
: "".concat(defaultWidthAsNumber, "px");
|
|
57
|
+
}, [value, record, columnWidth]);
|
|
58
|
+
return (_jsxs(SpreadsheetField, __assign({ validationError: validationError, validationWarning: validationWarning, isHighlighted: isHighlighted, expandedFieldWidth: expandedFieldWidth, shouldExpandInput: true }, { children: [_jsx(Input, __assign({ hasError: !!validationError, hasWarning: !!validationWarning, value: value || "", onChange: function (_a) {
|
|
59
|
+
var value = _a.target.value;
|
|
60
|
+
return !isTransformTooltipOpened && setValue(value);
|
|
61
|
+
}, disabledWhen: isTransformTooltipOpened }, props)), ((_g = (_f = (_e = record === null || record === void 0 ? void 0 : record._meta) === null || _e === void 0 ? void 0 : _e.transformedRow) === null || _f === void 0 ? void 0 : _f[name]) === null || _g === void 0 ? void 0 : _g.original) &&
|
|
62
|
+
isTransformTooltipOpened && (_jsx(SuffixText, __assign({ className: "suffix" }, { children: record._meta.transformedRow[name].original })))] })));
|
|
37
63
|
};
|
|
38
|
-
|
|
39
|
-
|
|
64
|
+
var SuffixText = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: #1c1c1c;\n font-family: DM Sans;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n position: absolute;\n right: 12px;\n text-decoration: line-through;\n visibility: hidden;\n white-space: nowrap;\n"], ["\n color: #1c1c1c;\n font-family: DM Sans;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n position: absolute;\n right: 12px;\n text-decoration: line-through;\n visibility: hidden;\n white-space: nowrap;\n"])));
|
|
65
|
+
export var Input = styled.input(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n background: transparent;\n border: none;\n box-shadow: none;\n box-sizing: border-box;\n height: calc(100% - 2px);\n margin: 0px;\n outline: none;\n width: 100%;\n\n ::-webkit-outer-spin-button,\n ::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n /* Firefox */\n -moz-appearance: textfield;\n\n padding: 0 12px;\n ", ";\n color: ", ";\n ::placeholder {\n color: ", ";\n }\n\n ", "\n\n ", "\n"], ["\n background: transparent;\n border: none;\n box-shadow: none;\n box-sizing: border-box;\n height: calc(100% - 2px);\n margin: 0px;\n outline: none;\n width: 100%;\n\n ::-webkit-outer-spin-button,\n ::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n /* Firefox */\n -moz-appearance: textfield;\n\n padding: 0 12px;\n ", ";\n color: ", ";\n ::placeholder {\n color: ", ";\n }\n\n ", "\n\n ", "\n"])), function (props) { return props.theme.css.body1; }, function (props) { return props.theme.colors.gray1000; }, function (props) { return props.theme.colors.placeholder; }, function (p) {
|
|
66
|
+
return p.hasWarning && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.orange1200; });
|
|
40
67
|
}, function (p) {
|
|
41
|
-
return p.hasError && css(
|
|
68
|
+
return p.hasError && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.error; });
|
|
42
69
|
});
|
|
43
|
-
var templateObject_1, templateObject_2, templateObject_3;
|
|
70
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { FieldTypes, Record } from "../../../../../types";
|
|
2
3
|
export declare const useSpreadsheetField: (name: string, record: Record, fieldType: FieldTypes) => {
|
|
3
4
|
value: any;
|
|
@@ -5,8 +6,13 @@ export declare const useSpreadsheetField: (name: string, record: Record, fieldTy
|
|
|
5
6
|
validationError: any;
|
|
6
7
|
validationWarning: any;
|
|
7
8
|
};
|
|
8
|
-
|
|
9
|
-
validationError:
|
|
10
|
-
validationWarning:
|
|
11
|
-
children:
|
|
12
|
-
|
|
9
|
+
type SpreadsheetFieldProps = {
|
|
10
|
+
validationError: string | JSX.Element;
|
|
11
|
+
validationWarning: string | JSX.Element;
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
isHighlighted?: boolean;
|
|
14
|
+
expandedFieldWidth?: string;
|
|
15
|
+
shouldExpandInput?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare const SpreadsheetField: ({ validationError, validationWarning, children, isHighlighted, expandedFieldWidth, shouldExpandInput, }: SpreadsheetFieldProps) => JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -75,22 +75,34 @@ export var useSpreadsheetField = function (name, record, fieldType) {
|
|
|
75
75
|
setValue(value);
|
|
76
76
|
updateData(value);
|
|
77
77
|
}, [record, updateData]);
|
|
78
|
-
return {
|
|
78
|
+
return {
|
|
79
|
+
value: value,
|
|
80
|
+
setValue: updateValue,
|
|
81
|
+
validationError: validationError,
|
|
82
|
+
validationWarning: validationWarning,
|
|
83
|
+
};
|
|
79
84
|
};
|
|
80
|
-
var ContentContainer = styled(Div)(
|
|
81
|
-
|
|
85
|
+
var ContentContainer = styled(Div)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n height: calc(100% - 1px);\n width: 100%;\n\n &:focus-within {\n ", "\n }\n\n ", ";\n ", "\n ", "\n ", "\n ", "\n"], ["\n height: calc(100% - 1px);\n width: 100%;\n\n &:focus-within {\n ", "\n }\n\n ", ";\n ", "\n ", "\n ", "\n ", "\n"])), function (_a) {
|
|
86
|
+
var isHighlighted = _a.isHighlighted, expandedFieldWidth = _a.expandedFieldWidth, theme = _a.theme, shouldExpandInput = _a.shouldExpandInput;
|
|
87
|
+
return shouldExpandInput && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n box-shadow: 0px 0px 0px 2px ", " inset;\n width: ", ";\n position: absolute;\n z-index: 1;\n background: ", ";\n\n .suffix {\n visibility: visible;\n }\n "], ["\n box-shadow: 0px 0px 0px 2px ", " inset;\n width: ", ";\n position: absolute;\n z-index: 1;\n background: ", ";\n\n .suffix {\n visibility: visible;\n }\n "])), function (p) { return p.theme.colors.blue500; }, expandedFieldWidth || "auto", !isHighlighted
|
|
88
|
+
? theme.colors.white
|
|
89
|
+
: theme.colors.blue100);
|
|
90
|
+
}, function (p) { return p.theme.css.alignCenter; }, function (p) {
|
|
91
|
+
return p.isHighlighted && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 2px ", " inset;\n "], ["\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 2px ", " inset;\n "])), function (p) { return p.theme.colors.blue100; }, function (p) { return p.theme.colors.blue500; });
|
|
92
|
+
}, function (p) {
|
|
93
|
+
return p.hasWarning && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "], ["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "])), function (p) { return p.theme.colors.orange1200; }, function (p) { return p.theme.colors.orange1100; }, function (p) { return p.theme.colors.orange500; });
|
|
82
94
|
}, function (p) {
|
|
83
|
-
return p.hasError && css(
|
|
95
|
+
return p.hasError && css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "], ["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "])), function (p) { return p.theme.colors.error; }, function (p) { return p.theme.colors.red100; }, function (p) { return p.theme.colors.error; });
|
|
84
96
|
}, function (p) {
|
|
85
|
-
return p.isReadOnly && css(
|
|
97
|
+
return p.isReadOnly && css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n pointer-events: none;\n "], ["\n pointer-events: none;\n "])));
|
|
86
98
|
});
|
|
87
99
|
var Wrapper = styled(Div)(function (_a) {
|
|
88
100
|
var isLoading = _a.isLoading;
|
|
89
|
-
return css(
|
|
101
|
+
return css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n ", "\n "], ["\n ", "\n "])), isLoading && css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n pointer-events: none;\n "], ["\n pointer-events: none;\n "]))));
|
|
90
102
|
});
|
|
91
103
|
export var SpreadsheetField = function (_a) {
|
|
92
|
-
var validationError = _a.validationError, validationWarning = _a.validationWarning, children = _a.children;
|
|
104
|
+
var validationError = _a.validationError, validationWarning = _a.validationWarning, children = _a.children, isHighlighted = _a.isHighlighted, expandedFieldWidth = _a.expandedFieldWidth, shouldExpandInput = _a.shouldExpandInput;
|
|
93
105
|
var _b = useSpreadsheetContext(), isReadOnly = _b.isReadOnly, isLoading = _b.isLoading;
|
|
94
|
-
return (_jsx(Wrapper, __assign({ dim: "100%", isLoading: isLoading }, { children: _jsx(TooltipProvider, __assign({ tooltip: validationError || validationWarning }, { children: _jsx(Div, __assign({ dim: "100%" }, { children: _jsx(ContentContainer, __assign({ hasError: !!validationError, hasWarning: !!validationWarning, isReadOnly: isReadOnly, className: "input-content" }, { children: children })) })) })) })));
|
|
106
|
+
return (_jsx(Wrapper, __assign({ dim: "100%", isLoading: isLoading }, { children: _jsx(TooltipProvider, __assign({ tooltip: validationError || validationWarning }, { children: _jsx(Div, __assign({ dim: "100%" }, { children: _jsx(ContentContainer, __assign({ hasError: !!validationError, hasWarning: !!validationWarning, isHighlighted: isHighlighted, expandedFieldWidth: expandedFieldWidth, shouldExpandInput: shouldExpandInput, isReadOnly: isReadOnly, className: "input-content" }, { children: children })) })) })) })));
|
|
95
107
|
};
|
|
96
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
|
|
108
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;
|
|
@@ -115,7 +115,6 @@ export var useValidationState = function (_a) {
|
|
|
115
115
|
useEffect(function () {
|
|
116
116
|
if (!initialDataSet || isReadOnly)
|
|
117
117
|
return;
|
|
118
|
-
var isCancelled = false;
|
|
119
118
|
setIsLoading(true);
|
|
120
119
|
var initialValidation = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
121
120
|
var errors, warnings, initialData, length, _a, batchValidationDelayMs, _b, batchValidationSize, batchSize, batchCount, batchIdx, idx, batch, index, record, recordId, _c, recordErrors, recordWarnings, hasError, hasWarning, validationPercentage_1;
|
|
@@ -133,16 +132,12 @@ export var useValidationState = function (_a) {
|
|
|
133
132
|
_d.label = 1;
|
|
134
133
|
case 1:
|
|
135
134
|
if (!(batchIdx < batchCount)) return [3 /*break*/, 8];
|
|
136
|
-
if (isCancelled)
|
|
137
|
-
return [2 /*return*/];
|
|
138
135
|
idx = batchIdx * batchSize;
|
|
139
136
|
batch = initialData.slice(idx, idx + batchSize);
|
|
140
137
|
index = 0;
|
|
141
138
|
_d.label = 2;
|
|
142
139
|
case 2:
|
|
143
140
|
if (!(index < batch.length)) return [3 /*break*/, 5];
|
|
144
|
-
if (isCancelled)
|
|
145
|
-
return [2 /*return*/];
|
|
146
141
|
record = batch[index];
|
|
147
142
|
recordId = record._meta.id;
|
|
148
143
|
return [4 /*yield*/, validateRecord({
|
|
@@ -199,16 +194,12 @@ export var useValidationState = function (_a) {
|
|
|
199
194
|
case 2: return [4 /*yield*/, initialValidation()];
|
|
200
195
|
case 3:
|
|
201
196
|
_a.sent();
|
|
202
|
-
|
|
203
|
-
setIsLoading(false);
|
|
197
|
+
setIsLoading(false);
|
|
204
198
|
setIsLoadingApp(false);
|
|
205
199
|
return [2 /*return*/];
|
|
206
200
|
}
|
|
207
201
|
});
|
|
208
202
|
}); })();
|
|
209
|
-
return function () {
|
|
210
|
-
isCancelled = true;
|
|
211
|
-
};
|
|
212
203
|
}, [initialDataSet]);
|
|
213
204
|
var columnErrorCounts = useMemo(function () {
|
|
214
205
|
return Object.keys(errors).reduce(function (errorsByColumns, rowId) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Field, Record } from "../../../../types";
|
|
1
|
+
import { Field, Record, TransformedRecord } from "../../../../types";
|
|
2
2
|
type TransformRecordArgs = {
|
|
3
3
|
record: Record;
|
|
4
4
|
fields: Field[];
|
|
5
5
|
};
|
|
6
|
-
export declare
|
|
6
|
+
export declare const transformRecord: ({ record, fields }: TransformRecordArgs) => TransformedRecord;
|
|
7
7
|
export {};
|
|
@@ -4,22 +4,44 @@ var runTransformation = function (record, transformation, field) {
|
|
|
4
4
|
var transformerFunction = fieldTransformations[transformationType];
|
|
5
5
|
return transformerFunction(record, transformation, field);
|
|
6
6
|
};
|
|
7
|
-
export function
|
|
7
|
+
export var transformRecord = function (_a) {
|
|
8
8
|
var record = _a.record, fields = _a.fields;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
var
|
|
9
|
+
var transformedRecords = {};
|
|
10
|
+
for (var _i = 0, fields_1 = fields; _i < fields_1.length; _i++) {
|
|
11
|
+
var currentField = fields_1[_i];
|
|
12
|
+
var fieldTransformations_1 = currentField.transformations;
|
|
13
|
+
var fieldToBeTransformed = record[currentField.name];
|
|
13
14
|
if (!fieldTransformations_1 ||
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
fieldTransformations_1.length === 0 ||
|
|
16
|
+
fieldToBeTransformed === undefined) {
|
|
16
17
|
continue;
|
|
17
18
|
}
|
|
18
|
-
var transformedField =
|
|
19
|
+
var transformedField = {
|
|
20
|
+
original: fieldToBeTransformed,
|
|
21
|
+
transformed: fieldToBeTransformed,
|
|
22
|
+
};
|
|
23
|
+
var fieldWasTransformed = false;
|
|
19
24
|
for (var i = 0; i < fieldTransformations_1.length; i++) {
|
|
20
25
|
var currentTransformation = fieldTransformations_1[i];
|
|
21
|
-
|
|
26
|
+
var transformed = runTransformation(transformedField.transformed, currentTransformation, currentField);
|
|
27
|
+
if (transformed.transformationWasNeeded) {
|
|
28
|
+
fieldWasTransformed = true;
|
|
29
|
+
transformedField = {
|
|
30
|
+
original: transformedField.original,
|
|
31
|
+
transformed: transformed.transformed,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
22
34
|
}
|
|
23
|
-
|
|
35
|
+
if (!fieldWasTransformed) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
// the data have changed
|
|
39
|
+
record[currentField.name] = transformedField.transformed;
|
|
40
|
+
transformedRecords[currentField.name] = {
|
|
41
|
+
original: transformedField.original,
|
|
42
|
+
transformed: transformedField.transformed,
|
|
43
|
+
};
|
|
24
44
|
}
|
|
25
|
-
|
|
45
|
+
var isTransformedRecordsEmpty = Object.keys(transformedRecords).length === 0;
|
|
46
|
+
return isTransformedRecordsEmpty ? null : transformedRecords;
|
|
47
|
+
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { Field, FieldTransformation } from "../../../../types";
|
|
2
|
-
export type
|
|
2
|
+
export type FieldTransformator = (fieldValue: any, transformation?: FieldTransformation, fieldOptions?: Field) => {
|
|
3
|
+
transformationWasNeeded: boolean;
|
|
4
|
+
original: any;
|
|
5
|
+
transformed: any;
|
|
6
|
+
};
|
|
3
7
|
export type FieldTransformations = Partial<{
|
|
4
|
-
[key: string]:
|
|
8
|
+
[key: string]: FieldTransformator;
|
|
5
9
|
}>;
|
|
6
10
|
export declare const fieldTransformations: {
|
|
7
|
-
[x: string]:
|
|
11
|
+
[x: string]: FieldTransformator;
|
|
8
12
|
};
|