fuse-importer 0.1.2-testing → 0.1.3-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.d.ts +2 -0
- package/lib/esm/Importer/ImporterWithContext.js +12 -8
- package/lib/esm/Importer/Review/ReviewContextProvider.js +1 -1
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +19 -11
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +2 -9
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +2 -3
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +66 -15
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.d.ts +1 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +7 -0
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +2 -2
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +1 -7
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +3 -7
- package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +1 -2
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +21 -39
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +1 -25
- package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.js +81 -31
- package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +9 -1
- package/lib/esm/common/Table/TableActions/RowFilters.js +10 -6
- package/lib/esm/common/columnsTransformations.js +0 -8
- package/lib/esm/common/inputs/SelectMenu.js +6 -2
- package/lib/esm/common/inputs/TextInput.js +1 -1
- package/lib/esm/locales/de.d.ts +2 -1
- package/lib/esm/locales/de.js +2 -1
- package/lib/esm/locales/en.d.ts +2 -1
- package/lib/esm/locales/en.js +2 -1
- package/lib/esm/locales/es.d.ts +2 -1
- package/lib/esm/locales/es.js +2 -1
- package/lib/esm/locales/fr.d.ts +2 -1
- package/lib/esm/locales/fr.js +2 -1
- package/lib/esm/types.d.ts +9 -5
- package/lib/esm/types.js +0 -1
- package/lib/main.js +8 -8
- package/package.json +1 -1
|
@@ -13,6 +13,42 @@ var __assign = (this && this.__assign) || function () {
|
|
|
13
13
|
};
|
|
14
14
|
return __assign.apply(this, arguments);
|
|
15
15
|
};
|
|
16
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
17
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
18
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
19
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
20
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
21
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
22
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
26
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
27
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
28
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
29
|
+
function step(op) {
|
|
30
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
31
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
32
|
+
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;
|
|
33
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
34
|
+
switch (op[0]) {
|
|
35
|
+
case 0: case 1: t = op; break;
|
|
36
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
37
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
38
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
39
|
+
default:
|
|
40
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
41
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
42
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
43
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
44
|
+
if (t[2]) _.ops.pop();
|
|
45
|
+
_.trys.pop(); continue;
|
|
46
|
+
}
|
|
47
|
+
op = body.call(thisArg, _);
|
|
48
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
49
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
50
|
+
}
|
|
51
|
+
};
|
|
16
52
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
17
53
|
import { useMemo, useState } from "react";
|
|
18
54
|
import { ActionPlus } from "../icons";
|
|
@@ -34,39 +70,53 @@ export var CustomActions = function () {
|
|
|
34
70
|
var filteredOptions = useMemo(function () {
|
|
35
71
|
return customActions.map(function (action) { return action.name; });
|
|
36
72
|
}, [customActions]);
|
|
37
|
-
var handleCustomAction = function (actionKey) {
|
|
38
|
-
var recordsToRunAction
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
73
|
+
var handleCustomAction = function (actionKey) { return __awaiter(void 0, void 0, void 0, function () {
|
|
74
|
+
var recordsToRunAction, recordsAfterActions, action, i, currentRecord, newRecord, error_1;
|
|
75
|
+
return __generator(this, function (_a) {
|
|
76
|
+
switch (_a.label) {
|
|
77
|
+
case 0:
|
|
78
|
+
recordsToRunAction = data.filter(function (row) { var _a; return selectedRows.includes((_a = row === null || row === void 0 ? void 0 : row._meta) === null || _a === void 0 ? void 0 : _a.id); });
|
|
79
|
+
recordsAfterActions = [];
|
|
80
|
+
action = customActions.find(function (action) { return action.name === actionKey; });
|
|
81
|
+
if (!action || Object.keys(action).length === 0) {
|
|
82
|
+
addToast(t("table_actions.custom_actions.general_error_toast"), "error");
|
|
83
|
+
return [2 /*return*/];
|
|
84
|
+
}
|
|
85
|
+
i = 0;
|
|
86
|
+
_a.label = 1;
|
|
87
|
+
case 1:
|
|
88
|
+
if (!(i < recordsToRunAction.length)) return [3 /*break*/, 7];
|
|
89
|
+
currentRecord = recordsToRunAction[i];
|
|
90
|
+
_a.label = 2;
|
|
91
|
+
case 2:
|
|
92
|
+
_a.trys.push([2, 5, , 6]);
|
|
93
|
+
if (!(action.actionType === "record")) return [3 /*break*/, 4];
|
|
94
|
+
return [4 /*yield*/, action.handler(currentRecord)];
|
|
95
|
+
case 3:
|
|
96
|
+
newRecord = _a.sent();
|
|
52
97
|
recordsAfterActions.push(newRecord);
|
|
53
|
-
|
|
54
|
-
|
|
98
|
+
return [3 /*break*/, 6];
|
|
99
|
+
case 4: return [3 /*break*/, 6];
|
|
100
|
+
case 5:
|
|
101
|
+
error_1 = _a.sent();
|
|
102
|
+
addToast(t("table_actions.custom_actions.error_toast", {
|
|
103
|
+
actionName: action.name,
|
|
104
|
+
}), "error");
|
|
105
|
+
return [3 /*break*/, 7];
|
|
106
|
+
case 6:
|
|
107
|
+
i++;
|
|
108
|
+
return [3 /*break*/, 1];
|
|
109
|
+
case 7:
|
|
110
|
+
if (recordsAfterActions.length) {
|
|
111
|
+
addToast(t("table_actions.custom_actions.success_toast", {
|
|
112
|
+
actionName: action.name,
|
|
113
|
+
}), "success");
|
|
114
|
+
}
|
|
115
|
+
updateRecord(recordsAfterActions);
|
|
116
|
+
return [2 /*return*/];
|
|
55
117
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
actionName: action.name,
|
|
59
|
-
}), "error");
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (recordsAfterActions.length) {
|
|
64
|
-
addToast(t("table_actions.custom_actions.success_toast", {
|
|
65
|
-
actionName: action.name,
|
|
66
|
-
}), "success");
|
|
67
|
-
}
|
|
68
|
-
updateRecord(recordsAfterActions);
|
|
69
|
-
};
|
|
118
|
+
});
|
|
119
|
+
}); };
|
|
70
120
|
var onSelect = function (value) {
|
|
71
121
|
setIsMenuOpen(false);
|
|
72
122
|
handleCustomAction(value);
|
|
@@ -23,11 +23,12 @@ import { DeleteIcon, ConfirmationDeleteIcon } from "./icons";
|
|
|
23
23
|
import { Div } from "../../../styled/utils";
|
|
24
24
|
import { ActionButton } from "./TableActions.styles";
|
|
25
25
|
import { useTranslation } from "react-i18next";
|
|
26
|
+
import { addToast } from "../../../common/Toast";
|
|
26
27
|
var StyledTooltipProvider = styled(TooltipProvider)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n width: fit-content;\n"], ["\n width: fit-content;\n"])));
|
|
27
28
|
export var DeleteSelectedRows = function (_a) {
|
|
28
29
|
var _b = _a.testId, testId = _b === void 0 ? "ta-delete-rows" : _b;
|
|
29
30
|
var _c = useState(false), isConfirmationModalOpen = _c[0], setIsConfirmationModalOpen = _c[1];
|
|
30
|
-
var _d = useSpreadsheetContext(), deleteRecords = _d.deleteRecords, selectedRows = _d.selectedRows, setSelectedRows = _d.setSelectedRows, setFilteredInputValue = _d.setFilteredInputValue;
|
|
31
|
+
var _d = useSpreadsheetContext(), deleteRecords = _d.deleteRecords, selectedRows = _d.selectedRows, setSelectedRows = _d.setSelectedRows, setFilteredInputValue = _d.setFilteredInputValue, spreadsheetFilter = _d.spreadsheetFilter, duplicateRecords = _d.duplicateRecords, resetSpreadsheetFilter = _d.resetSpreadsheetFilter;
|
|
31
32
|
var t = useTranslation("review").t;
|
|
32
33
|
var toggleModalVisibility = function () {
|
|
33
34
|
setIsConfirmationModalOpen(function (oldValue) { return !oldValue; });
|
|
@@ -37,6 +38,13 @@ export var DeleteSelectedRows = function (_a) {
|
|
|
37
38
|
toggleModalVisibility();
|
|
38
39
|
setFilteredInputValue("");
|
|
39
40
|
deleteRecords(selectedRows);
|
|
41
|
+
if (spreadsheetFilter.byRow === "duplicates") {
|
|
42
|
+
var selectedDuplicatesCount = Object.keys(duplicateRecords.records).filter(function (key) { return selectedRows.includes(key); }).length;
|
|
43
|
+
addToast(t("table_actions.filters_by_rows.duplicates_deleted", {
|
|
44
|
+
count: selectedDuplicatesCount,
|
|
45
|
+
}), "success");
|
|
46
|
+
resetSpreadsheetFilter();
|
|
47
|
+
}
|
|
40
48
|
};
|
|
41
49
|
var DescriptionUI = function () { return (_jsx(_Fragment, { children: _jsxs(Div, { children: [t("table_actions.delete_rows.confirmation_modal", {
|
|
42
50
|
length: selectedRows.length,
|
|
@@ -21,8 +21,12 @@ import { useTranslation } from "react-i18next";
|
|
|
21
21
|
var FilterContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 6px 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n ", ";\n ", "\n"], ["\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 6px 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n ", ";\n ", "\n"])), function (p) { return p.theme.css.body3; }, function (p) {
|
|
22
22
|
return p.isSelected && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n border-radius: 4px;\n "], ["\n background: ", ";\n color: ", ";\n border-radius: 4px;\n "])), function (p) { return p.theme.colors.black; }, function (p) { return p.theme.colors.white; });
|
|
23
23
|
});
|
|
24
|
-
var Container = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n
|
|
25
|
-
var
|
|
24
|
+
var Container = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background-color: ", ";\n border-radius: 4px;\n display: flex;\n"], ["\n background-color: ", ";\n border-radius: 4px;\n display: flex;\n"])), function (p) { return p.theme.colors.backgroundInterface; });
|
|
25
|
+
var Wrapper = styled(Div)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (_a) {
|
|
26
|
+
var isDisabled = _a.isDisabled;
|
|
27
|
+
return isDisabled && css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n cursor: not-allowed;\n\n > div:first-child {\n opacity: 0.7;\n pointer-events: none;\n }\n "], ["\n cursor: not-allowed;\n\n > div:first-child {\n opacity: 0.7;\n pointer-events: none;\n }\n "])));
|
|
28
|
+
});
|
|
29
|
+
var FilteredDataCount = styled(Div)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px 8px;\n margin-left: -3px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n"], ["\n background: ", ";\n color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px 8px;\n margin-left: -3px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n"])), function (p) { return p.theme.colors.highlight01; }, function (p) { return p.theme.colors.black; });
|
|
26
30
|
var Filter = function (_a) {
|
|
27
31
|
var label = _a.label, count = _a.count, isSelected = _a.isSelected, onClick = _a.onClick, isDisabled = _a.isDisabled;
|
|
28
32
|
var _b = useSpreadsheetContext(), filteredInputValue = _b.filteredInputValue, filteredDataCount = _b.filteredDataCount;
|
|
@@ -32,11 +36,11 @@ var Filter = function (_a) {
|
|
|
32
36
|
return (_jsxs(Div, __assign({ disabledWhen: isDisabled, dflex: true, clickable: true, onClick: function () { return !isDisabled && onClick(); }, "data-test-id": labelToId(label) }, { children: [_jsxs(FilterContainer, __assign({ isSelected: isSelected }, { children: [label, count >= 0 && _jsxs(_Fragment, { children: ["\u00A0(", count, ")"] })] })), isSelected && filteredInputValue !== "" && (_jsx(FilteredDataCount, { children: _jsx(Div, __assign({ minw: 14, centered: true }, { children: filteredDataCount })) }))] })));
|
|
33
37
|
};
|
|
34
38
|
export var RowFilters = function () {
|
|
35
|
-
var _a = useSpreadsheetContext(), spreadsheetFilter = _a.spreadsheetFilter, errors = _a.errors, filterRecordsByRowType = _a.filterRecordsByRowType, recordsWithValuesCount = _a.recordsWithValuesCount, isTransformTooltipOpened = _a.isTransformTooltipOpened;
|
|
39
|
+
var _a = useSpreadsheetContext(), spreadsheetFilter = _a.spreadsheetFilter, errors = _a.errors, filterRecordsByRowType = _a.filterRecordsByRowType, recordsWithValuesCount = _a.recordsWithValuesCount, isTransformTooltipOpened = _a.isTransformTooltipOpened, duplicateRecords = _a.duplicateRecords;
|
|
36
40
|
var t = useTranslation("review").t;
|
|
37
41
|
var all_rows = t("table_actions.filters_by_rows.all_rows");
|
|
38
|
-
var valid_rows = t("table_actions.filters_by_rows.valid_rows");
|
|
39
42
|
var invalid_rows = t("table_actions.filters_by_rows.invalid_rows");
|
|
40
|
-
|
|
43
|
+
var duplicates = t("table_actions.filters_by_rows.duplicates");
|
|
44
|
+
return (_jsx(Wrapper, __assign({ isDisabled: isTransformTooltipOpened }, { children: _jsxs(Container, { children: [_jsx(Filter, { isSelected: spreadsheetFilter.byRow === "all", label: all_rows, count: recordsWithValuesCount, onClick: function () { return filterRecordsByRowType("all"); } }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "invalid", label: invalid_rows, count: Object.values(errors).length, onClick: function () { return filterRecordsByRowType("invalid"); } }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "duplicates", label: duplicates, count: duplicateRecords.count, onClick: function () { return filterRecordsByRowType("duplicates"); } })] }) })));
|
|
41
45
|
};
|
|
42
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
|
|
46
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
|
|
@@ -67,18 +67,10 @@ var integerTransformations = [
|
|
|
67
67
|
label: "Ceiling (e.g. 3.01 -> 4)",
|
|
68
68
|
},
|
|
69
69
|
];
|
|
70
|
-
var enumTransformations = [
|
|
71
|
-
{
|
|
72
|
-
value: "autodetect",
|
|
73
|
-
label: "Autodetect (e.g. 0/1 -> true/false)",
|
|
74
|
-
isDefaultTransformation: true,
|
|
75
|
-
},
|
|
76
|
-
];
|
|
77
70
|
export var transformationsByColumnType = {
|
|
78
71
|
string: stringTransformations,
|
|
79
72
|
integer: integerTransformations,
|
|
80
73
|
float: floatTransformations,
|
|
81
|
-
enum: enumTransformations,
|
|
82
74
|
url: urlTransformations,
|
|
83
75
|
date: commonDateAndTimeTransformations,
|
|
84
76
|
datetime: commonDateAndTimeTransformations,
|
|
@@ -35,6 +35,7 @@ export var SelectMenuScrollArea = styled(Div)(function (_a) {
|
|
|
35
35
|
var _b = _a.theme, colors = _b.colors, c = _b.css;
|
|
36
36
|
return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n padding: 16px;\n overflow-y: auto;\n max-height: 250px;\n ", ";\n "], ["\n padding: 16px;\n overflow-y: auto;\n max-height: 250px;\n ", ";\n "])), function (p) { return p.theme.css.scrollbarDark; });
|
|
37
37
|
});
|
|
38
|
+
var isFirefox = navigator.userAgent.indexOf("Firefox") > -1;
|
|
38
39
|
export var SelectMenu = function (_a) {
|
|
39
40
|
var _b;
|
|
40
41
|
var _c = _a.isOpen, isOpen = _c === void 0 ? false : _c, _d = _a.onClose, onClose = _d === void 0 ? null : _d, _e = _a.placement, placement = _e === void 0 ? "auto" : _e, referenceElement = _a.referenceElement, children = _a.children, selectMenuClassName = _a.selectMenuClassName, props = __rest(_a, ["isOpen", "onClose", "placement", "referenceElement", "children", "selectMenuClassName"]);
|
|
@@ -42,7 +43,10 @@ export var SelectMenu = function (_a) {
|
|
|
42
43
|
var _g = useState(null), width = _g[0], setWidth = _g[1];
|
|
43
44
|
var options = {
|
|
44
45
|
placement: placement,
|
|
45
|
-
|
|
46
|
+
// On Firefox we use absolute positioning because fixed positioning
|
|
47
|
+
// doesn't seem to work well with the select menu (more info in PR)
|
|
48
|
+
// may be related to https://github.com/floating-ui/floating-ui/issues/1729
|
|
49
|
+
strategy: isFirefox ? "absolute" : "fixed",
|
|
46
50
|
modifiers: [
|
|
47
51
|
{
|
|
48
52
|
name: "offset",
|
|
@@ -69,6 +73,6 @@ export var SelectMenu = function (_a) {
|
|
|
69
73
|
if (referenceElement)
|
|
70
74
|
setWidth(referenceElementWidth);
|
|
71
75
|
}, [referenceElementWidth]);
|
|
72
|
-
return (_jsx(_Fragment, { children: isOpen && (_jsxs(Div, __assign({
|
|
76
|
+
return (_jsx(_Fragment, { children: isOpen && (_jsxs(Div, __assign({}, props, { children: [_jsx(SelectMenuBackdrop, { onClick: onClose }), _jsx(SelectMenuDiv, __assign({ ref: setPopperElement, style: __assign(__assign({}, styles.popper), { width: width }), className: selectMenuClassName }, attributes.popper, { children: _jsx(SelectMenuScrollArea, { children: children }) }))] }))) }));
|
|
73
77
|
};
|
|
74
78
|
var templateObject_1, templateObject_2, templateObject_3;
|
|
@@ -63,7 +63,7 @@ var TextInput = function (_a) {
|
|
|
63
63
|
id: id,
|
|
64
64
|
padding: padding,
|
|
65
65
|
name: name,
|
|
66
|
-
}, { type: isPasswordVisible ? "text" : type, value: _value || "", onChange: function (_a) {
|
|
66
|
+
}, { autoComplete: "off", type: isPasswordVisible ? "text" : type, value: _value || "", onChange: function (_a) {
|
|
67
67
|
var value = _a.target.value;
|
|
68
68
|
return set_Value(value);
|
|
69
69
|
}, ref: setInputRef, onBlur: function () {
|
package/lib/esm/locales/de.d.ts
CHANGED
package/lib/esm/locales/de.js
CHANGED
|
@@ -58,8 +58,9 @@ export default {
|
|
|
58
58
|
table_actions: {
|
|
59
59
|
filters_by_rows: {
|
|
60
60
|
all_rows: "Alle Zeilen",
|
|
61
|
-
valid_rows: "Gültige Zeilen",
|
|
62
61
|
invalid_rows: "Ungültige Zeilen",
|
|
62
|
+
duplicates: "Gültige",
|
|
63
|
+
duplicates_deleted: "{{count}} duplikate gelöscht",
|
|
63
64
|
},
|
|
64
65
|
search_rows: {
|
|
65
66
|
tooltip: "Etwas suchen",
|
package/lib/esm/locales/en.d.ts
CHANGED
package/lib/esm/locales/en.js
CHANGED
|
@@ -58,8 +58,9 @@ export default {
|
|
|
58
58
|
table_actions: {
|
|
59
59
|
filters_by_rows: {
|
|
60
60
|
all_rows: "All Rows",
|
|
61
|
-
valid_rows: "Valid Rows",
|
|
62
61
|
invalid_rows: "Invalid Rows",
|
|
62
|
+
duplicates: "Duplicates",
|
|
63
|
+
duplicates_deleted: "{{count}} duplicates deleted",
|
|
63
64
|
},
|
|
64
65
|
search_rows: {
|
|
65
66
|
tooltip: "Search something",
|
package/lib/esm/locales/es.d.ts
CHANGED
package/lib/esm/locales/es.js
CHANGED
|
@@ -58,8 +58,9 @@ export default {
|
|
|
58
58
|
table_actions: {
|
|
59
59
|
filters_by_rows: {
|
|
60
60
|
all_rows: "Todas las Filas",
|
|
61
|
-
valid_rows: "Filas Válidas",
|
|
62
61
|
invalid_rows: "Filas Inválidas",
|
|
62
|
+
duplicates: "Duplicadas",
|
|
63
|
+
duplicates_deleted: "{{count}} duplicados eliminados",
|
|
63
64
|
},
|
|
64
65
|
search_rows: {
|
|
65
66
|
tooltip: "Buscar algo",
|
package/lib/esm/locales/fr.d.ts
CHANGED
package/lib/esm/locales/fr.js
CHANGED
|
@@ -58,8 +58,9 @@ export default {
|
|
|
58
58
|
table_actions: {
|
|
59
59
|
filters_by_rows: {
|
|
60
60
|
all_rows: "Toutes les lignes",
|
|
61
|
-
valid_rows: "Lignes valides",
|
|
62
61
|
invalid_rows: "Lignes invalides",
|
|
62
|
+
duplicates: "Doublons",
|
|
63
|
+
duplicates_deleted: "{{count}} doublons supprimés",
|
|
63
64
|
},
|
|
64
65
|
search_rows: {
|
|
65
66
|
tooltip: "Rechercher quelque chose",
|
package/lib/esm/types.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export type ImporterOptions = {
|
|
|
15
15
|
disableSubmitIfInvalid?: boolean;
|
|
16
16
|
records?: Record[];
|
|
17
17
|
language?: string;
|
|
18
|
+
modal?: boolean;
|
|
18
19
|
} & SpreadsheetOptions;
|
|
19
20
|
export declare enum FieldTypes {
|
|
20
21
|
boolean = "boolean",
|
|
@@ -83,8 +84,8 @@ export declare const validationTypesBase: readonly ["cannot_contain", "contain",
|
|
|
83
84
|
export declare const mutableValidationTypes: ("boolean" | "max_length" | "min_length" | "cannot_contain" | "contain" | "length_exactly" | "unique_case_sensitive" | "unique_case_insensitive" | "regex" | "integer" | "less_than" | "greater_than" | "even" | "odd" | "float" | "email" | "url" | "before_date" | "after_date")[];
|
|
84
85
|
export type ValidationTypes = typeof validationTypesBase[number];
|
|
85
86
|
export type TransformationOptionKeys = "prefix" | "number_of_decimals";
|
|
86
|
-
export declare const transformationTypesBase: readonly ["sentence_case", "capitalize", "uppercase", "lowercase", "trim_whitespace", "autoformat", "prefix", "number_of_decimals", "round", "floor", "ceiling"
|
|
87
|
-
export declare const mutableTransformationTypes: ("prefix" | "number_of_decimals" | "sentence_case" | "capitalize" | "uppercase" | "lowercase" | "trim_whitespace" | "autoformat" | "round" | "floor" | "ceiling"
|
|
87
|
+
export declare const transformationTypesBase: readonly ["sentence_case", "capitalize", "uppercase", "lowercase", "trim_whitespace", "autoformat", "prefix", "number_of_decimals", "round", "floor", "ceiling"];
|
|
88
|
+
export declare const mutableTransformationTypes: ("prefix" | "number_of_decimals" | "sentence_case" | "capitalize" | "uppercase" | "lowercase" | "trim_whitespace" | "autoformat" | "round" | "floor" | "ceiling")[];
|
|
88
89
|
export type TransformationTypes = typeof transformationTypesBase[number];
|
|
89
90
|
export interface FieldValidation {
|
|
90
91
|
id?: number;
|
|
@@ -114,7 +115,7 @@ export type TemplateHeader = {
|
|
|
114
115
|
transformations: FieldTransformation[];
|
|
115
116
|
position: number;
|
|
116
117
|
};
|
|
117
|
-
type CARecordFn = (record: Record) => Record;
|
|
118
|
+
type CARecordFn = (record: Record) => Promise<Record> | Record;
|
|
118
119
|
export type CustomActionTypes = "record";
|
|
119
120
|
type CustomActionHandler<T extends CustomActionTypes> = T extends "record" ? CARecordFn : never;
|
|
120
121
|
export type CustomAction<T extends CustomActionTypes = CustomActionTypes> = {
|
|
@@ -166,7 +167,7 @@ export type ColumnRequiredProps<T extends FieldTypesAsUnion> = Partial<Pick<Temp
|
|
|
166
167
|
transformations?: ColumnTransformations<T>[];
|
|
167
168
|
} & (T extends "enum" ? EnumOptions : T extends "time" ? TimeOptions : OtherOptions);
|
|
168
169
|
export type ValidationTypesRules<T extends FieldTypesAsUnion> = T extends "integer" ? IntegerValidationRule : T extends "float" ? FloatValidationRule : T extends "string" ? StringValidationRule : T extends "email" ? EmailValidationRule : T extends "enum" ? EnumValidationRule : T extends "url" ? UrlValidationRule : T extends "boolean" ? BooleanValidationRule : T extends "date" ? DateValidationRule : T extends "datetime" ? DateTimeValidationRule : T extends "time" ? TimeValidationRule : never;
|
|
169
|
-
export type TransformationTypesRules<T extends FieldTypesAsUnion> = T extends "integer" ? IntegerTransformationRule : T extends "float" ? FloatTransformationRule : T extends "string" ? StringTransformationRule : T extends "
|
|
170
|
+
export type TransformationTypesRules<T extends FieldTypesAsUnion> = T extends "integer" ? IntegerTransformationRule : T extends "float" ? FloatTransformationRule : T extends "string" ? StringTransformationRule : T extends "url" ? UrlTransformationRule : T extends "date" | "datetime" | "time" ? DateDateTimesAndTimesTransformationRule : never;
|
|
170
171
|
export type ValidationTypeOptions<T extends ValidationTypesRules<FieldTypesAsUnion>> = T extends "cannot_contain" | "contain" | "regex" ? {
|
|
171
172
|
pattern: string;
|
|
172
173
|
} : T extends "max_length" ? {
|
|
@@ -211,7 +212,6 @@ type FloatValidationRule = "less_than" | "greater_than" | "even" | "odd" | "uniq
|
|
|
211
212
|
type FloatTransformationRule = "number_of_decimals";
|
|
212
213
|
type EmailValidationRule = "cannot_contain" | "contain" | "max_length" | "min_length" | "length_exactly" | "unique_case_sensitive" | "unique_case_insensitive" | "regex";
|
|
213
214
|
type EnumValidationRule = "unique_case_sensitive" | "unique_case_insensitive";
|
|
214
|
-
type EnumTransformationRule = "autodetect";
|
|
215
215
|
type UrlValidationRule = "cannot_contain" | "contain" | "max_length" | "min_length" | "length_exactly" | "unique_case_sensitive" | "unique_case_insensitive" | "regex";
|
|
216
216
|
type UrlTransformationRule = "prefix";
|
|
217
217
|
type BooleanValidationRule = "boolean";
|
|
@@ -219,4 +219,8 @@ type DateValidationRule = "unique_case_sensitive" | "unique_case_insensitive" |
|
|
|
219
219
|
type DateTimeValidationRule = "unique_case_sensitive" | "unique_case_insensitive" | "before_date" | "after_date";
|
|
220
220
|
type TimeValidationRule = "unique_case_sensitive" | "unique_case_insensitive";
|
|
221
221
|
type DateDateTimesAndTimesTransformationRule = "autoformat";
|
|
222
|
+
export type DuplicateRecords = {
|
|
223
|
+
records: Record;
|
|
224
|
+
count: number;
|
|
225
|
+
};
|
|
222
226
|
export {};
|