fuse-importer 0.0.9-testing → 0.1.2-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/ImporterWithContext.js +1 -1
- package/lib/esm/Importer/Review/ReviewContextProvider.js +8 -5
- package/lib/esm/Importer/common/Spreadsheet/common/index.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +7 -1
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +16 -12
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.d.ts +2 -1
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +24 -13
- package/lib/esm/Importer/common/Spreadsheet/components/fields/utils.d.ts +11 -0
- package/lib/esm/Importer/common/Spreadsheet/components/fields/utils.js +29 -0
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +47 -18
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +39 -7
- package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +4 -2
- package/lib/esm/Importer/contexts/ImporterContextProvider.js +2 -1
- package/lib/esm/Importer/data/index.js +22 -2
- package/lib/esm/Importer/index.d.ts +4 -3
- package/lib/esm/Importer/index.js +2 -2
- package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.js +81 -0
- package/lib/esm/common/Table/TableActions/CustomActions/index.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/CustomActions/index.js +1 -0
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +2 -2
- package/lib/esm/common/Table/TableActions/RowFilters.js +4 -4
- package/lib/esm/common/Table/TableActions/SearchRows.js +6 -5
- package/lib/esm/common/Table/TableActions/TableActions.js +2 -1
- package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +15 -3
- 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/columnsValidations.d.ts +0 -26
- package/lib/esm/common/columnsValidations.js +1 -287
- package/lib/esm/common/datePatterns.d.ts +26 -0
- package/lib/esm/common/datePatterns.js +327 -0
- package/lib/esm/common/index.d.ts +1 -0
- package/lib/esm/common/index.js +1 -0
- package/lib/esm/common/inputs/SelectMenu.d.ts +2 -1
- package/lib/esm/common/inputs/SelectMenu.js +9 -2
- package/lib/esm/index.d.ts +3 -1
- package/lib/esm/index.js +9 -2
- package/lib/esm/locales/de.d.ts +6 -0
- package/lib/esm/locales/de.js +7 -1
- package/lib/esm/locales/en.d.ts +6 -0
- package/lib/esm/locales/en.js +7 -1
- package/lib/esm/locales/es.d.ts +6 -0
- package/lib/esm/locales/es.js +7 -1
- package/lib/esm/locales/fr.d.ts +6 -0
- package/lib/esm/locales/fr.js +7 -1
- package/lib/esm/types.d.ts +13 -4
- package/lib/esm/utils/index.d.ts +1 -0
- package/lib/esm/utils/index.js +4 -0
- package/lib/main.js +10 -10
- package/package.json +1 -1
|
@@ -42,7 +42,7 @@ var Content = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplate
|
|
|
42
42
|
return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-color: ", ";\n flex: ", ";\n "], ["\n background-color: ", ";\n flex: ", ";\n "])), colors.backgroundInterface, inTrialMode ? "none" : 1);
|
|
43
43
|
});
|
|
44
44
|
export var ImporterWithContext = function () {
|
|
45
|
-
var _a = useImporterContext(), inTrialMode = _a.inTrialMode, currentStepIndex = _a.currentStepIndex, matcherSubstep = _a.matcherSubstep, templateHeaders = _a.templateHeaders, theme = _a.theme, logoURL = _a.logoURL, previewFirstTime = _a.previewFirstTime,
|
|
45
|
+
var _a = useImporterContext(), inTrialMode = _a.inTrialMode, currentStepIndex = _a.currentStepIndex, matcherSubstep = _a.matcherSubstep, templateHeaders = _a.templateHeaders, theme = _a.theme, logoURL = _a.logoURL, previewFirstTime = _a.previewFirstTime, initialRecords = _a.initialRecords, _b = _a.importerOptions, zIndex = _b.zIndex, previewMode = _b.previewMode;
|
|
46
46
|
var layoutRef = useRef(null);
|
|
47
47
|
var t = useTranslation().t;
|
|
48
48
|
useEffect(function () {
|
|
@@ -201,6 +201,7 @@ export var ReviewContextProvider = function (_a) {
|
|
|
201
201
|
}
|
|
202
202
|
invalidDataSet = recordListToDataSet(invalidRecords_1, reviewFields);
|
|
203
203
|
setReviewInitialDataSet(invalidDataSet);
|
|
204
|
+
setInitialDataSetUpdatedAt(Date.now());
|
|
204
205
|
if (!!previewMode) return [3 /*break*/, 4];
|
|
205
206
|
return [4 /*yield*/, trackImportedRowsCount(fuseApi, templateSlug, validDataSetLength)];
|
|
206
207
|
case 2:
|
|
@@ -253,7 +254,7 @@ export var ReviewContextProvider = function (_a) {
|
|
|
253
254
|
else if (currentStepIndex === 2) {
|
|
254
255
|
setIsLoadingApp(true);
|
|
255
256
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
256
|
-
var fields,
|
|
257
|
+
var generateRecords, fields, records, initialDataSet;
|
|
257
258
|
return __generator(this, function (_a) {
|
|
258
259
|
switch (_a.label) {
|
|
259
260
|
case 0:
|
|
@@ -265,9 +266,8 @@ export var ReviewContextProvider = function (_a) {
|
|
|
265
266
|
_a.sent();
|
|
266
267
|
_a.label = 2;
|
|
267
268
|
case 2:
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
transformToRecords({
|
|
269
|
+
generateRecords = function () {
|
|
270
|
+
return transformToRecords({
|
|
271
271
|
templateHeaderMatchings: templateHeaderMatchings,
|
|
272
272
|
enumFieldValueMatchings: enumFieldValueMatchings,
|
|
273
273
|
templateHeaders: templateHeaders,
|
|
@@ -275,8 +275,11 @@ export var ReviewContextProvider = function (_a) {
|
|
|
275
275
|
uploadedData: uploadedData.slice(headerRowIndex + 1),
|
|
276
276
|
formatRecord: formatRecord,
|
|
277
277
|
});
|
|
278
|
+
};
|
|
279
|
+
fields = getTemplateFields({ templateHeaders: templateHeaders });
|
|
280
|
+
records = initialRecords !== null && initialRecords !== void 0 ? initialRecords : generateRecords();
|
|
278
281
|
initialDataSet = getReviewDataSet({
|
|
279
|
-
records:
|
|
282
|
+
records: records,
|
|
280
283
|
fields: fields,
|
|
281
284
|
}).initialDataSet;
|
|
282
285
|
setSelectedRows([]);
|
|
@@ -15,7 +15,7 @@ export var isEmail = function (value) {
|
|
|
15
15
|
return emailRegex.test(value);
|
|
16
16
|
};
|
|
17
17
|
export var isUrl = function (value) {
|
|
18
|
-
var urlRegex = /^(
|
|
18
|
+
var urlRegex = /^(?:(?:https?|ftp|file|tcp|mailto|tel|data|ssh|irc|gopher|ws|wss):\/\/|www\.)[A-Za-z0-9]+([\-\.]{1}[A-Za-z0-9]+)*\.[A-Za-z]{2,16}(:[0-9]{1,5})?(\/.*)?$/g;
|
|
19
19
|
return urlRegex.test(value);
|
|
20
20
|
};
|
|
21
21
|
export var isTrue = function (value) {
|
|
@@ -63,7 +63,7 @@ var rowIsEmpty = function (row) {
|
|
|
63
63
|
};
|
|
64
64
|
export var SpreadsheetRowCheckboxes = function (_a) {
|
|
65
65
|
var height = _a.height, gridRef = _a.gridRef, isLoadingData = _a.isLoadingData, props = __rest(_a, ["height", "gridRef", "isLoadingData"]);
|
|
66
|
-
var _b = useSpreadsheetContext(), data = _b.data, selectedRows = _b.selectedRows, options = _b.options, lastClickedIndexRef = _b.lastClickedIndexRef, setSelectedRows = _b.setSelectedRows, checkboxColumnWidth = _b.checkboxColumnWidth;
|
|
66
|
+
var _b = useSpreadsheetContext(), data = _b.data, selectedRows = _b.selectedRows, options = _b.options, lastClickedIndexRef = _b.lastClickedIndexRef, setSelectedRows = _b.setSelectedRows, checkboxColumnWidth = _b.checkboxColumnWidth, isTransformTooltipOpened = _b.isTransformTooltipOpened;
|
|
67
67
|
var currentStepIndex = useImporterContext().currentStepIndex;
|
|
68
68
|
var nonEmptyRows = useMemo(function () { return data.filter(function (row) { return !rowIsEmpty(row); }); }, [
|
|
69
69
|
data,
|
|
@@ -71,6 +71,8 @@ export var SpreadsheetRowCheckboxes = function (_a) {
|
|
|
71
71
|
var isIndeterminate = selectedRows.length > 0 && selectedRows.length < nonEmptyRows.length;
|
|
72
72
|
var handleRowSelect = function (checked, rowIndex, rowMetaId) {
|
|
73
73
|
var _a, _b;
|
|
74
|
+
if (isTransformTooltipOpened)
|
|
75
|
+
return;
|
|
74
76
|
var lastRowMetaId = data[data.length - 1]._meta.id;
|
|
75
77
|
var isLastRow = rowMetaId === lastRowMetaId;
|
|
76
78
|
var isLastRowAndEmpty = isLastRow && rowIsEmpty(data[rowIndex]);
|
|
@@ -93,6 +95,8 @@ export var SpreadsheetRowCheckboxes = function (_a) {
|
|
|
93
95
|
};
|
|
94
96
|
var handleSelectMultipleRows = function (rowIndex) {
|
|
95
97
|
var _a, _b;
|
|
98
|
+
if (isTransformTooltipOpened)
|
|
99
|
+
return;
|
|
96
100
|
var clickedRowId = (_b = (_a = data[rowIndex]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.id;
|
|
97
101
|
if (selectedRows.includes(clickedRowId)) {
|
|
98
102
|
// The clicked row is already selected, so we have to remove it
|
|
@@ -129,6 +133,8 @@ export var SpreadsheetRowCheckboxes = function (_a) {
|
|
|
129
133
|
}
|
|
130
134
|
};
|
|
131
135
|
var handleSelectAllRows = function (checked) {
|
|
136
|
+
if (isTransformTooltipOpened)
|
|
137
|
+
return;
|
|
132
138
|
if (checked) {
|
|
133
139
|
var allRows = data
|
|
134
140
|
.filter(function (row) {
|
|
@@ -30,38 +30,42 @@ import styled, { css } from "styled-components";
|
|
|
30
30
|
import { SpreadsheetField, useSpreadsheetField } from ".";
|
|
31
31
|
import { Div } from "../../../../../styled/utils";
|
|
32
32
|
import { useSpreadsheetContext } from "../../SpreadsheetContextProvider";
|
|
33
|
+
import { AVERAGE_CHAR_SIZE, getFieldContentWidth } from "./utils";
|
|
33
34
|
export var SpreadsheetInput = function (_a) {
|
|
34
35
|
var _b, _c, _d, _e, _f, _g;
|
|
35
36
|
var name = _a.name, record = _a.record, fieldType = _a.fieldType, columnWidth = _a.columnWidth, props = __rest(_a, ["name", "record", "fieldType", "columnWidth"]);
|
|
36
37
|
var _h = useSpreadsheetField(name, record, fieldType), value = _h.value, setValue = _h.setValue, validationError = _h.validationError, validationWarning = _h.validationWarning;
|
|
37
38
|
var isTransformTooltipOpened = useSpreadsheetContext().isTransformTooltipOpened;
|
|
39
|
+
var defaultWidthAsNumber = Number.parseInt(columnWidth.replace("px", ""));
|
|
40
|
+
var _fieldContentWidth = getFieldContentWidth({
|
|
41
|
+
record: record,
|
|
42
|
+
fieldType: fieldType,
|
|
43
|
+
isTooltipOpened: isTransformTooltipOpened,
|
|
44
|
+
name: name,
|
|
45
|
+
});
|
|
38
46
|
var isHighlighted = isTransformTooltipOpened &&
|
|
39
47
|
((_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
48
|
var expandedFieldWidth = useMemo(function () {
|
|
41
|
-
var _a, _b, _c, _d;
|
|
42
49
|
// if the value is falsy, returns the default width
|
|
43
50
|
if (!value)
|
|
44
51
|
return columnWidth;
|
|
45
|
-
var averageCharacterSize = 9;
|
|
46
52
|
var inputPadding = 24; // 12 left + 12 right
|
|
47
|
-
var transformedValueSize = value.length *
|
|
48
|
-
var
|
|
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", ""));
|
|
53
|
+
var transformedValueSize = value.length * AVERAGE_CHAR_SIZE;
|
|
54
|
+
var totalInputSize = transformedValueSize + _fieldContentWidth + inputPadding;
|
|
54
55
|
return totalInputSize > defaultWidthAsNumber
|
|
55
56
|
? "".concat(totalInputSize, "px")
|
|
56
57
|
: "".concat(defaultWidthAsNumber, "px");
|
|
57
58
|
}, [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
|
+
return (_jsxs(SpreadsheetField, __assign({ validationError: validationError, validationWarning: validationWarning, isHighlighted: isHighlighted, defaultFieldWidth: defaultWidthAsNumber, expandedFieldWidth: expandedFieldWidth, shouldExpandInput: true }, { children: [_jsx(Input, __assign({ hasError: !!validationError, hasWarning: !!validationWarning, value: value || "", onChange: function (_a) {
|
|
59
60
|
var value = _a.target.value;
|
|
60
61
|
return !isTransformTooltipOpened && setValue(value);
|
|
61
62
|
}, 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 })))] })));
|
|
63
|
+
isTransformTooltipOpened && (_jsx(SuffixText, __assign({ className: "suffix", fieldWidth: _fieldContentWidth }, { children: record._meta.transformedRow[name].original })))] })));
|
|
63
64
|
};
|
|
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
|
|
65
|
+
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 left: ", "px;\n text-decoration: line-through;\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 left: ", "px;\n text-decoration: line-through;\n white-space: nowrap;\n"])), function (_a) {
|
|
66
|
+
var fieldWidth = _a.fieldWidth;
|
|
67
|
+
return fieldWidth;
|
|
68
|
+
});
|
|
65
69
|
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
70
|
return p.hasWarning && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.orange1200; });
|
|
67
71
|
}, function (p) {
|
|
@@ -13,6 +13,7 @@ type SpreadsheetFieldProps = {
|
|
|
13
13
|
isHighlighted?: boolean;
|
|
14
14
|
expandedFieldWidth?: string;
|
|
15
15
|
shouldExpandInput?: boolean;
|
|
16
|
+
defaultFieldWidth?: number;
|
|
16
17
|
};
|
|
17
|
-
export declare const SpreadsheetField: ({ validationError, validationWarning, children, isHighlighted, expandedFieldWidth, shouldExpandInput, }: SpreadsheetFieldProps) => JSX.Element;
|
|
18
|
+
export declare const SpreadsheetField: ({ validationError, validationWarning, children, isHighlighted, expandedFieldWidth, shouldExpandInput, defaultFieldWidth, }: SpreadsheetFieldProps) => JSX.Element;
|
|
18
19
|
export {};
|
|
@@ -51,7 +51,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
51
51
|
};
|
|
52
52
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
53
53
|
import { debounce, get } from "lodash";
|
|
54
|
-
import { useCallback, useState } from "react";
|
|
54
|
+
import { useCallback, useEffect, useState } from "react";
|
|
55
55
|
import styled, { css } from "styled-components";
|
|
56
56
|
import { TooltipProvider } from "../../../../../common/TooltipProvider";
|
|
57
57
|
import { Div } from "../../../../../styled/utils";
|
|
@@ -62,6 +62,11 @@ export var useSpreadsheetField = function (name, record, fieldType) {
|
|
|
62
62
|
var _b = useState(record[name]), value = _b[0], setValue = _b[1];
|
|
63
63
|
var validationError = get(errors, "".concat(record._meta.id, ".").concat(name), null);
|
|
64
64
|
var validationWarning = get(warnings, "".concat(record._meta.id, ".").concat(name), null);
|
|
65
|
+
useEffect(function () {
|
|
66
|
+
if (record[name] !== value) {
|
|
67
|
+
setValue(record[name]);
|
|
68
|
+
}
|
|
69
|
+
}, [record[name]]);
|
|
65
70
|
var updateData = useCallback(debounce(function (value) { return __awaiter(void 0, void 0, void 0, function () {
|
|
66
71
|
var newRecord;
|
|
67
72
|
var _a;
|
|
@@ -82,27 +87,33 @@ export var useSpreadsheetField = function (name, record, fieldType) {
|
|
|
82
87
|
validationWarning: validationWarning,
|
|
83
88
|
};
|
|
84
89
|
};
|
|
85
|
-
var ContentContainer = styled(Div)(
|
|
86
|
-
var
|
|
87
|
-
return
|
|
90
|
+
var ContentContainer = styled(Div)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n height: calc(100% - 1px);\n width: ", ";\n overflow: hidden;\n\n ", "\n\n &:focus-within, \n &:hover {\n ", "\n }\n\n ", ";\n ", "\n ", "\n ", "\n ", "\n"], ["\n height: calc(100% - 1px);\n width: ", ";\n overflow: hidden;\n\n ", "\n\n &:focus-within, \n &:hover {\n ", "\n }\n\n ", ";\n ", "\n ", "\n ", "\n ", "\n"])), function (_a) {
|
|
91
|
+
var defaultFieldWidth = _a.defaultFieldWidth;
|
|
92
|
+
return defaultFieldWidth ? "".concat(defaultFieldWidth, "px") : "100%";
|
|
93
|
+
}, function (_a) {
|
|
94
|
+
var expandedFieldWidth = _a.expandedFieldWidth;
|
|
95
|
+
return expandedFieldWidth && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: absolute;\n "], ["\n position: absolute;\n "])));
|
|
96
|
+
}, function (_a) {
|
|
97
|
+
var expandedFieldWidth = _a.expandedFieldWidth, isHighlighted = _a.isHighlighted, theme = _a.theme, shouldExpandInput = _a.shouldExpandInput;
|
|
98
|
+
return shouldExpandInput && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background: ", ";\n box-shadow: 0px 0px 0px 2px ", " inset;\n width: ", ";\n z-index: 1;\n\n .suffix {\n right: 12px;\n }\n "], ["\n background: ", ";\n box-shadow: 0px 0px 0px 2px ", " inset;\n width: ", ";\n z-index: 1;\n\n .suffix {\n right: 12px;\n }\n "])), !isHighlighted
|
|
88
99
|
? theme.colors.white
|
|
89
|
-
: theme.colors.blue100);
|
|
100
|
+
: theme.colors.blue100, function (p) { return p.theme.colors.blue500; }, expandedFieldWidth || "auto");
|
|
90
101
|
}, function (p) { return p.theme.css.alignCenter; }, function (p) {
|
|
91
|
-
return p.isHighlighted && css(
|
|
102
|
+
return p.isHighlighted && css(templateObject_3 || (templateObject_3 = __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
103
|
}, function (p) {
|
|
93
|
-
return p.hasWarning && css(
|
|
104
|
+
return p.hasWarning && 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.orange1200; }, function (p) { return p.theme.colors.orange1100; }, function (p) { return p.theme.colors.orange500; });
|
|
94
105
|
}, function (p) {
|
|
95
|
-
return p.hasError && css(
|
|
106
|
+
return p.hasError && css(templateObject_5 || (templateObject_5 = __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; });
|
|
96
107
|
}, function (p) {
|
|
97
|
-
return p.isReadOnly && css(
|
|
108
|
+
return p.isReadOnly && css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n pointer-events: none;\n "], ["\n pointer-events: none;\n "])));
|
|
98
109
|
});
|
|
99
110
|
var Wrapper = styled(Div)(function (_a) {
|
|
100
111
|
var isLoading = _a.isLoading;
|
|
101
|
-
return css(
|
|
112
|
+
return css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n ", "\n "], ["\n ", "\n "])), isLoading && css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n pointer-events: none;\n "], ["\n pointer-events: none;\n "]))));
|
|
102
113
|
});
|
|
103
114
|
export var SpreadsheetField = function (_a) {
|
|
104
|
-
var validationError = _a.validationError, validationWarning = _a.validationWarning, children = _a.children, isHighlighted = _a.isHighlighted, expandedFieldWidth = _a.expandedFieldWidth, shouldExpandInput = _a.shouldExpandInput;
|
|
115
|
+
var validationError = _a.validationError, validationWarning = _a.validationWarning, children = _a.children, isHighlighted = _a.isHighlighted, expandedFieldWidth = _a.expandedFieldWidth, shouldExpandInput = _a.shouldExpandInput, defaultFieldWidth = _a.defaultFieldWidth;
|
|
105
116
|
var _b = useSpreadsheetContext(), isReadOnly = _b.isReadOnly, isLoading = _b.isLoading;
|
|
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 })) })) })) })));
|
|
117
|
+
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, defaultFieldWidth: defaultFieldWidth, shouldExpandInput: shouldExpandInput, isReadOnly: isReadOnly, className: "input-content" }, { children: children })) })) })) })));
|
|
107
118
|
};
|
|
108
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;
|
|
119
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FieldTypes, Record } from "../../../../../types";
|
|
2
|
+
export declare const AVERAGE_CHAR_SIZE = 11;
|
|
3
|
+
interface FieldProps {
|
|
4
|
+
record: Record;
|
|
5
|
+
name: string;
|
|
6
|
+
fieldType: FieldTypes;
|
|
7
|
+
isTooltipOpened: boolean;
|
|
8
|
+
avgCharSize?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const getFieldContentWidth: ({ record, fieldType, isTooltipOpened, name, avgCharSize, }: FieldProps) => number;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FieldTypes } from "../../../../../types";
|
|
2
|
+
export var AVERAGE_CHAR_SIZE = 11;
|
|
3
|
+
var isFullUppercase = /^[A-Z]*$/;
|
|
4
|
+
export var getFieldContentWidth = function (_a) {
|
|
5
|
+
var _b, _c, _d, _e;
|
|
6
|
+
var record = _a.record, fieldType = _a.fieldType, isTooltipOpened = _a.isTooltipOpened, name = _a.name, _f = _a.avgCharSize, avgCharSize = _f === void 0 ? AVERAGE_CHAR_SIZE : _f;
|
|
7
|
+
var additionalWidth = 5;
|
|
8
|
+
if (fieldType === FieldTypes.url) {
|
|
9
|
+
// assuming 90px as an average size of the url prefix
|
|
10
|
+
// 'https://' have around 50px, but assuming more to prevent some issues
|
|
11
|
+
additionalWidth += 90;
|
|
12
|
+
}
|
|
13
|
+
var transformedRow = (_c = (_b = record._meta) === null || _b === void 0 ? void 0 : _b.transformedRow) === null || _c === void 0 ? void 0 : _c[name];
|
|
14
|
+
var transformedLength = (_d = String(transformedRow === null || transformedRow === void 0 ? void 0 : transformedRow.transformed)) === null || _d === void 0 ? void 0 : _d.length;
|
|
15
|
+
var originalLength = (_e = String(transformedRow === null || transformedRow === void 0 ? void 0 : transformedRow.original)) === null || _e === void 0 ? void 0 : _e.length;
|
|
16
|
+
var transformedHasHigherLength = transformedLength >= originalLength;
|
|
17
|
+
var transformedIsUppercase = isFullUppercase.test(transformedRow === null || transformedRow === void 0 ? void 0 : transformedRow.transformed);
|
|
18
|
+
var originalIsUppercase = isFullUppercase.test(transformedRow === null || transformedRow === void 0 ? void 0 : transformedRow.original);
|
|
19
|
+
if (transformedHasHigherLength) {
|
|
20
|
+
additionalWidth += transformedIsUppercase ? transformedLength : 0;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
additionalWidth += originalIsUppercase ? originalLength : 0;
|
|
24
|
+
}
|
|
25
|
+
return isTooltipOpened
|
|
26
|
+
? Math.max(transformedLength, originalLength) * avgCharSize +
|
|
27
|
+
additionalWidth
|
|
28
|
+
: 0 || 0;
|
|
29
|
+
};
|
|
@@ -68,14 +68,22 @@ export var useValidationState = function (_a) {
|
|
|
68
68
|
setWarnings: setWarnings,
|
|
69
69
|
}).deleteRecords;
|
|
70
70
|
// Validate record and update dataSet
|
|
71
|
-
var updateRecordAndRevalidate = useCallback(function (
|
|
72
|
-
var
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
switch (_c.label) {
|
|
71
|
+
var updateRecordAndRevalidate = useCallback(function (records) { return __awaiter(void 0, void 0, void 0, function () {
|
|
72
|
+
var recordsArray, newDataSet, errorUpdates, warningUpdates, i, record, recordId, data, _a, recordErrors, recordWarnings, hasError, hasWarning;
|
|
73
|
+
return __generator(this, function (_b) {
|
|
74
|
+
switch (_b.label) {
|
|
76
75
|
case 0:
|
|
76
|
+
recordsArray = Array.isArray(records) ? records : [records];
|
|
77
|
+
newDataSet = __assign({}, dataSet);
|
|
78
|
+
errorUpdates = {};
|
|
79
|
+
warningUpdates = {};
|
|
80
|
+
i = 0;
|
|
81
|
+
_b.label = 1;
|
|
82
|
+
case 1:
|
|
83
|
+
if (!(i < recordsArray.length)) return [3 /*break*/, 4];
|
|
84
|
+
record = recordsArray[i];
|
|
77
85
|
recordId = record._meta.id;
|
|
78
|
-
newDataSet
|
|
86
|
+
newDataSet[recordId] = __assign({}, record);
|
|
79
87
|
// 'touched' should be set before validation
|
|
80
88
|
newDataSet[recordId]._meta.touched = true;
|
|
81
89
|
data = Object.values(newDataSet);
|
|
@@ -86,25 +94,46 @@ export var useValidationState = function (_a) {
|
|
|
86
94
|
fields: fields,
|
|
87
95
|
record: record,
|
|
88
96
|
})];
|
|
89
|
-
case
|
|
90
|
-
_a =
|
|
97
|
+
case 2:
|
|
98
|
+
_a = _b.sent(), recordErrors = _a.errors, recordWarnings = _a.warnings;
|
|
91
99
|
hasError = checkIfHasErrors(recordErrors);
|
|
92
100
|
hasWarning = checkIfHasErrors(recordWarnings);
|
|
93
101
|
newDataSet[recordId]._meta.isInvalid = hasError;
|
|
94
102
|
newDataSet[recordId]._meta.hasWarning = hasWarning;
|
|
103
|
+
errorUpdates = hasError
|
|
104
|
+
? set(errorUpdates, recordId, recordErrors)
|
|
105
|
+
: omit(errorUpdates, recordId);
|
|
106
|
+
warningUpdates = hasWarning
|
|
107
|
+
? set(warningUpdates, recordId, recordWarnings)
|
|
108
|
+
: omit(warningUpdates, recordId);
|
|
109
|
+
_b.label = 3;
|
|
110
|
+
case 3:
|
|
111
|
+
i++;
|
|
112
|
+
return [3 /*break*/, 1];
|
|
113
|
+
case 4:
|
|
95
114
|
setErrors(function (errors) {
|
|
96
|
-
var
|
|
97
|
-
var
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
115
|
+
var currentErrors = __assign({}, errors);
|
|
116
|
+
var newErrors = {};
|
|
117
|
+
for (var errorId in errorUpdates) {
|
|
118
|
+
var updatedError = errorUpdates[errorId];
|
|
119
|
+
var hasUpdatedError = updatedError && Object.keys(updatedError).length > 0;
|
|
120
|
+
newErrors = hasUpdatedError
|
|
121
|
+
? set(currentErrors, errorId, updatedError)
|
|
122
|
+
: omit(currentErrors, errorId);
|
|
123
|
+
}
|
|
124
|
+
return newErrors;
|
|
101
125
|
});
|
|
102
126
|
setWarnings(function (warnings) {
|
|
103
|
-
var
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
127
|
+
var currentWarnings = __assign({}, warnings);
|
|
128
|
+
var newWarnings = {};
|
|
129
|
+
for (var warningId in warningUpdates) {
|
|
130
|
+
var updatedWarning = warningUpdates[warningId];
|
|
131
|
+
var hasUpdatedWarning = updatedWarning && Object.keys(updatedWarning).length > 0;
|
|
132
|
+
newWarnings = hasUpdatedWarning
|
|
133
|
+
? set(currentWarnings, warningId, updatedWarning)
|
|
134
|
+
: omit(currentWarnings, warningId);
|
|
135
|
+
}
|
|
136
|
+
return newWarnings;
|
|
108
137
|
});
|
|
109
138
|
setDataSet(newDataSet); //Update the dataSet
|
|
110
139
|
return [2 /*return*/];
|
|
@@ -9,7 +9,17 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
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
|
+
};
|
|
12
21
|
import { DateTime } from "luxon";
|
|
22
|
+
import { datePatterns, dateTimePatterns, timePatterns, } from "../../../../common/datePatterns";
|
|
13
23
|
var isTransformationNeeded = function (fieldValue, transformedValue) { return ({
|
|
14
24
|
transformationWasNeeded: fieldValue !== transformedValue,
|
|
15
25
|
original: fieldValue,
|
|
@@ -79,29 +89,51 @@ var stringFieldTransformations = {
|
|
|
79
89
|
return isTransformationNeeded(fieldValue, transformedValue);
|
|
80
90
|
},
|
|
81
91
|
};
|
|
92
|
+
var parseDate = function (date) {
|
|
93
|
+
if (!date)
|
|
94
|
+
return null;
|
|
95
|
+
var allPatterns = __spreadArray(__spreadArray(__spreadArray([], datePatterns, true), dateTimePatterns, true), timePatterns, true);
|
|
96
|
+
var possibleFormats = allPatterns.map(function (date) { return date.value; });
|
|
97
|
+
for (var i = 0; i < possibleFormats.length; i++) {
|
|
98
|
+
var format = possibleFormats[i];
|
|
99
|
+
try {
|
|
100
|
+
var currentDate = DateTime.fromFormat(date, format, { zone: "utc" });
|
|
101
|
+
if (currentDate.isValid) {
|
|
102
|
+
return currentDate;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
};
|
|
82
111
|
var datesDateTimesAndTimesTransformations = {
|
|
83
112
|
autoformat: function (fieldValue, _, fieldOptions) {
|
|
84
113
|
var cleanFieldValue = fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.replace(/"/g, "");
|
|
85
114
|
var normalizedFieldValue = cleanFieldValue === null || cleanFieldValue === void 0 ? void 0 : cleanFieldValue.replace(/-/g, "/");
|
|
86
115
|
var isUnixTimestamp = /^\d+$/.test(normalizedFieldValue);
|
|
87
|
-
var
|
|
88
|
-
?
|
|
89
|
-
:
|
|
116
|
+
var luxonDate = isUnixTimestamp
|
|
117
|
+
? DateTime.fromSeconds(Number(normalizedFieldValue))
|
|
118
|
+
: parseDate(normalizedFieldValue);
|
|
90
119
|
var pattern = fieldOptions === null || fieldOptions === void 0 ? void 0 : fieldOptions.pattern;
|
|
91
120
|
var defaultObj = {
|
|
92
121
|
transformationWasNeeded: false,
|
|
93
122
|
original: fieldValue,
|
|
94
123
|
transformed: null,
|
|
95
124
|
};
|
|
96
|
-
if (!fieldValue || !pattern ||
|
|
125
|
+
if (!fieldValue || !pattern || !luxonDate || isNaN(luxonDate.toSeconds())) {
|
|
97
126
|
return defaultObj;
|
|
98
127
|
}
|
|
99
|
-
var luxonDate = DateTime.fromJSDate(JSDate);
|
|
100
128
|
if (!luxonDate.isValid) {
|
|
101
129
|
return defaultObj;
|
|
102
130
|
}
|
|
103
|
-
var transformedValue = luxonDate
|
|
104
|
-
return
|
|
131
|
+
var transformedValue = luxonDate.toFormat(pattern);
|
|
132
|
+
return {
|
|
133
|
+
transformationWasNeeded: fieldValue !== transformedValue,
|
|
134
|
+
original: fieldValue,
|
|
135
|
+
transformed: transformedValue,
|
|
136
|
+
};
|
|
105
137
|
},
|
|
106
138
|
};
|
|
107
139
|
var urlTransformations = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Fuse from "fuse.js";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { FormatRecord, ImporterOptions, Integration, OnSubmit, OnValidateRecord, Record, TemplateHeader } from "../../types";
|
|
3
|
+
import { CustomAction, FormatRecord, ImporterOptions, Integration, OnSubmit, OnValidateRecord, Record, TemplateHeader } from "../../types";
|
|
4
4
|
import { FuseApi } from "../common/FuseApi";
|
|
5
5
|
export declare const fusejsOptions: Fuse.IFuseOptions<string>;
|
|
6
6
|
export type HeaderMatchings = {
|
|
@@ -56,6 +56,7 @@ export type State = {
|
|
|
56
56
|
isUsingManualImport: React.MutableRefObject<boolean>;
|
|
57
57
|
resetImporterWhenUsingManualImport: () => void;
|
|
58
58
|
manualDataImportSelected: () => void;
|
|
59
|
+
customActions: CustomAction[];
|
|
59
60
|
};
|
|
60
61
|
export type Props = {
|
|
61
62
|
templateSlug: string;
|
|
@@ -68,6 +69,7 @@ export type Props = {
|
|
|
68
69
|
formatRecord: FormatRecord;
|
|
69
70
|
onValidateRecord?: OnValidateRecord;
|
|
70
71
|
dynamicColumns: TemplateHeader[] | null;
|
|
72
|
+
customActions: CustomAction[];
|
|
71
73
|
};
|
|
72
|
-
export declare const ImporterContextProvider: ({ templateSlug, initialRecords, apiToken, children, options, onSubmit, onClose, formatRecord, onValidateRecord, dynamicColumns, }: Props) => JSX.Element;
|
|
74
|
+
export declare const ImporterContextProvider: ({ templateSlug, initialRecords, apiToken, children, options, onSubmit, onClose, formatRecord, onValidateRecord, dynamicColumns, customActions, }: Props) => JSX.Element;
|
|
73
75
|
export declare const useImporterContext: () => State;
|
|
@@ -67,7 +67,7 @@ export var fusejsOptions = {
|
|
|
67
67
|
};
|
|
68
68
|
var ImporterContext = createContext({});
|
|
69
69
|
export var ImporterContextProvider = function (_a) {
|
|
70
|
-
var templateSlug = _a.templateSlug, initialRecords = _a.initialRecords, apiToken = _a.apiToken, children = _a.children, options = _a.options, onSubmit = _a.onSubmit, onClose = _a.onClose, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord, dynamicColumns = _a.dynamicColumns;
|
|
70
|
+
var templateSlug = _a.templateSlug, initialRecords = _a.initialRecords, apiToken = _a.apiToken, children = _a.children, options = _a.options, onSubmit = _a.onSubmit, onClose = _a.onClose, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord, dynamicColumns = _a.dynamicColumns, customActions = _a.customActions;
|
|
71
71
|
var _b = useState(initialRecords ? 2 : 0), currentStepIndex = _b[0], setCurrentStepIndex = _b[1];
|
|
72
72
|
var _c = useState(0), matcherSubstep = _c[0], setMatcherSubstep = _c[1];
|
|
73
73
|
var _d = useState(null), templateError = _d[0], setTemplateError = _d[1];
|
|
@@ -241,6 +241,7 @@ export var ImporterContextProvider = function (_a) {
|
|
|
241
241
|
isUsingManualImport: isUsingManualImport,
|
|
242
242
|
resetImporterWhenUsingManualImport: resetImporterWhenUsingManualImport,
|
|
243
243
|
manualDataImportSelected: manualDataImportSelected,
|
|
244
|
+
customActions: customActions,
|
|
244
245
|
};
|
|
245
246
|
return (_jsx(ImporterContext.Provider, __assign({ value: value }, { children: children })));
|
|
246
247
|
};
|
|
@@ -43,7 +43,7 @@ export var addMeta = function (record, index, uploadedRow, transformedRow) {
|
|
|
43
43
|
if (transformedRow === void 0) { transformedRow = null; }
|
|
44
44
|
var rId = getRowId(index);
|
|
45
45
|
var meta = (_a = record._meta) !== null && _a !== void 0 ? _a : {};
|
|
46
|
-
return __assign(__assign({}, record), { _meta: __assign(__assign({}, meta), { id: rId, rowIndex: index, touched: false, uploadedRow: uploadedRow, transformedRow: transformedRow }) });
|
|
46
|
+
return __assign(__assign({}, record), { _meta: __assign(__assign({}, meta), { id: rId, rowIndex: index, touched: false, uploadedRow: uploadedRow, transformedRow: __assign(__assign({}, meta.transformedRow), transformedRow) }) });
|
|
47
47
|
};
|
|
48
48
|
export var recordListToDataSet = function (data, fields) {
|
|
49
49
|
var fieldWithTransformations = fields.filter(function (field) { var _a; return ((_a = field === null || field === void 0 ? void 0 : field.transformations) === null || _a === void 0 ? void 0 : _a.length) > 0; });
|
|
@@ -64,6 +64,20 @@ export var recordListToDataSet = function (data, fields) {
|
|
|
64
64
|
return dataSet;
|
|
65
65
|
}, {});
|
|
66
66
|
};
|
|
67
|
+
var compareFormattedRecord = function (originalRecord, formattedRecord) {
|
|
68
|
+
var comparisonResult = {};
|
|
69
|
+
for (var key in formattedRecord) {
|
|
70
|
+
if (formattedRecord.hasOwnProperty(key)) {
|
|
71
|
+
if (formattedRecord[key] !== originalRecord[key]) {
|
|
72
|
+
comparisonResult[key] = {
|
|
73
|
+
original: originalRecord[key],
|
|
74
|
+
transformed: formattedRecord[key],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return comparisonResult;
|
|
80
|
+
};
|
|
67
81
|
export var transformToRecords = function (_a) {
|
|
68
82
|
var templateHeaderMatchings = _a.templateHeaderMatchings, enumFieldValueMatchings = _a.enumFieldValueMatchings, templateHeaders = _a.templateHeaders, uploadedDataHeaders = _a.uploadedDataHeaders, uploadedData = _a.uploadedData, formatRecord = _a.formatRecord;
|
|
69
83
|
var matchedColumnsLabels = Object.keys(templateHeaderMatchings)
|
|
@@ -92,7 +106,13 @@ export var transformToRecords = function (_a) {
|
|
|
92
106
|
return;
|
|
93
107
|
record[key] = parseValue(FieldTypes[header.column_type], value, enumSet);
|
|
94
108
|
});
|
|
95
|
-
|
|
109
|
+
if (formatRecord) {
|
|
110
|
+
var formattedRecord = formatRecord(record);
|
|
111
|
+
var comparisonResult = compareFormattedRecord(record, formattedRecord);
|
|
112
|
+
record._meta.transformedRow = comparisonResult;
|
|
113
|
+
return formattedRecord;
|
|
114
|
+
}
|
|
115
|
+
return record;
|
|
96
116
|
};
|
|
97
117
|
return uploadedData.map(getRecord);
|
|
98
118
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FormatRecord, ImporterOptions, OnSubmit, OnValidateRecord, TemplateHeader } from "../types";
|
|
1
|
+
import { CustomAction, FormatRecord, ImporterOptions, OnSubmit, OnValidateRecord, TemplateHeader } from "../types";
|
|
2
2
|
export declare const ACCOUNT_ROUTES: {
|
|
3
3
|
TEMPLATES: string;
|
|
4
4
|
};
|
|
@@ -11,11 +11,12 @@ type ImporterProps = {
|
|
|
11
11
|
previewMode?: boolean;
|
|
12
12
|
formatRecord: FormatRecord;
|
|
13
13
|
onValidateRecord?: OnValidateRecord;
|
|
14
|
+
dynamicColumns: TemplateHeader[];
|
|
15
|
+
customActions: CustomAction[];
|
|
14
16
|
onSubmit?: OnSubmit;
|
|
15
17
|
onClose: () => void;
|
|
16
|
-
dynamicColumns: TemplateHeader[];
|
|
17
18
|
};
|
|
18
|
-
declare const Importer: ({ templateSlug, apiToken, options, formatRecord, onValidateRecord, onSubmit, onClose,
|
|
19
|
+
declare const Importer: ({ templateSlug, apiToken, options, formatRecord, onValidateRecord, dynamicColumns, customActions, onSubmit, onClose, }: ImporterProps) => JSX.Element;
|
|
19
20
|
export * from "./common/Spreadsheet";
|
|
20
21
|
export * from "./common/utils";
|
|
21
22
|
export * from "./Review/ReviewContextProvider";
|
|
@@ -19,8 +19,8 @@ export var ACCOUNT_VIEW_PATH = "/account";
|
|
|
19
19
|
var p = function (path) { return "".concat(ACCOUNT_VIEW_PATH).concat(path); };
|
|
20
20
|
export var TEMPLATES_ROUTE = p(ACCOUNT_ROUTES.TEMPLATES);
|
|
21
21
|
var Importer = function (_a) {
|
|
22
|
-
var templateSlug = _a.templateSlug, apiToken = _a.apiToken, options = _a.options, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord,
|
|
23
|
-
return (_jsx(ImporterContextProvider, __assign({ initialRecords: options.records, options: options, templateSlug: templateSlug, apiToken: apiToken, formatRecord: formatRecord, onValidateRecord: onValidateRecord, onClose: onClose, onSubmit: onSubmit, dynamicColumns: dynamicColumns }, { children: _jsx(ImporterWithContext, {}) })));
|
|
22
|
+
var templateSlug = _a.templateSlug, apiToken = _a.apiToken, options = _a.options, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord, dynamicColumns = _a.dynamicColumns, customActions = _a.customActions, onSubmit = _a.onSubmit, onClose = _a.onClose;
|
|
23
|
+
return (_jsx(ImporterContextProvider, __assign({ initialRecords: options.records, options: options, templateSlug: templateSlug, apiToken: apiToken, formatRecord: formatRecord, onValidateRecord: onValidateRecord, onClose: onClose, onSubmit: onSubmit, dynamicColumns: dynamicColumns, customActions: customActions }, { children: _jsx(ImporterWithContext, {}) })));
|
|
24
24
|
};
|
|
25
25
|
export * from "./common/Spreadsheet";
|
|
26
26
|
export * from "./common/utils";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CustomActions: () => JSX.Element;
|