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.
Files changed (35) hide show
  1. package/lib/esm/Importer/ImporterWithContext.d.ts +2 -0
  2. package/lib/esm/Importer/ImporterWithContext.js +12 -8
  3. package/lib/esm/Importer/Review/ReviewContextProvider.js +1 -1
  4. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +19 -11
  5. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +2 -9
  6. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +2 -3
  7. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +66 -15
  8. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.d.ts +1 -1
  9. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.d.ts +1 -0
  10. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +7 -0
  11. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +2 -2
  12. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +1 -7
  13. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +1 -1
  14. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +3 -7
  15. package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +1 -2
  16. package/lib/esm/Importer/common/Spreadsheet/hooks.js +21 -39
  17. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +1 -25
  18. package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.js +81 -31
  19. package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +9 -1
  20. package/lib/esm/common/Table/TableActions/RowFilters.js +10 -6
  21. package/lib/esm/common/columnsTransformations.js +0 -8
  22. package/lib/esm/common/inputs/SelectMenu.js +6 -2
  23. package/lib/esm/common/inputs/TextInput.js +1 -1
  24. package/lib/esm/locales/de.d.ts +2 -1
  25. package/lib/esm/locales/de.js +2 -1
  26. package/lib/esm/locales/en.d.ts +2 -1
  27. package/lib/esm/locales/en.js +2 -1
  28. package/lib/esm/locales/es.d.ts +2 -1
  29. package/lib/esm/locales/es.js +2 -1
  30. package/lib/esm/locales/fr.d.ts +2 -1
  31. package/lib/esm/locales/fr.js +2 -1
  32. package/lib/esm/types.d.ts +9 -5
  33. package/lib/esm/types.js +0 -1
  34. package/lib/main.js +8 -8
  35. 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 = data.filter(function (row) {
39
- return selectedRows.includes(row._meta.id);
40
- });
41
- var recordsAfterActions = [];
42
- var action = customActions.find(function (action) { return action.name === actionKey; });
43
- if (!action || Object.keys(action).length === 0) {
44
- addToast(t("table_actions.custom_actions.general_error_toast"), "error");
45
- return;
46
- }
47
- for (var i = 0; i < recordsToRunAction.length; i++) {
48
- var currentRecord = recordsToRunAction[i];
49
- try {
50
- if (action.actionType === "record") {
51
- var newRecord = action.handler(currentRecord);
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
- continue;
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
- catch (error) {
57
- addToast(t("table_actions.custom_actions.error_toast", {
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 display: flex;\n border-radius: 4px;\n background-color: ", ";\n"], ["\n display: flex;\n border-radius: 4px;\n background-color: ", ";\n"])), function (p) { return p.theme.colors.backgroundInterface; });
25
- var FilteredDataCount = styled(Div)(templateObject_4 || (templateObject_4 = __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; });
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
- return (_jsxs(Container, { children: [_jsx(Filter, { isSelected: spreadsheetFilter.byRow === "all", label: all_rows, count: recordsWithValuesCount, onClick: function () { return filterRecordsByRowType("all"); }, isDisabled: isTransformTooltipOpened }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "valid", label: valid_rows, onClick: function () { return filterRecordsByRowType("valid"); }, isDisabled: isTransformTooltipOpened }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "invalid", label: invalid_rows, count: Object.values(errors).length, onClick: function () { return filterRecordsByRowType("invalid"); }, isDisabled: isTransformTooltipOpened })] }));
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
- strategy: "absolute",
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({ pRelative: true }, 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 }) }))] }))) }));
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 () {
@@ -57,8 +57,9 @@ declare const _default: {
57
57
  table_actions: {
58
58
  filters_by_rows: {
59
59
  all_rows: string;
60
- valid_rows: string;
61
60
  invalid_rows: string;
61
+ duplicates: string;
62
+ duplicates_deleted: string;
62
63
  };
63
64
  search_rows: {
64
65
  tooltip: string;
@@ -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",
@@ -57,8 +57,9 @@ declare const _default: {
57
57
  table_actions: {
58
58
  filters_by_rows: {
59
59
  all_rows: string;
60
- valid_rows: string;
61
60
  invalid_rows: string;
61
+ duplicates: string;
62
+ duplicates_deleted: string;
62
63
  };
63
64
  search_rows: {
64
65
  tooltip: string;
@@ -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",
@@ -57,8 +57,9 @@ declare const _default: {
57
57
  table_actions: {
58
58
  filters_by_rows: {
59
59
  all_rows: string;
60
- valid_rows: string;
61
60
  invalid_rows: string;
61
+ duplicates: string;
62
+ duplicates_deleted: string;
62
63
  };
63
64
  search_rows: {
64
65
  tooltip: string;
@@ -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",
@@ -57,8 +57,9 @@ declare const _default: {
57
57
  table_actions: {
58
58
  filters_by_rows: {
59
59
  all_rows: string;
60
- valid_rows: string;
61
60
  invalid_rows: string;
61
+ duplicates: string;
62
+ duplicates_deleted: string;
62
63
  };
63
64
  search_rows: {
64
65
  tooltip: string;
@@ -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",
@@ -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", "autodetect"];
87
- export declare const mutableTransformationTypes: ("prefix" | "number_of_decimals" | "sentence_case" | "capitalize" | "uppercase" | "lowercase" | "trim_whitespace" | "autoformat" | "round" | "floor" | "ceiling" | "autodetect")[];
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 "enum" ? EnumTransformationRule : T extends "url" ? UrlTransformationRule : T extends "date" | "datetime" | "time" ? DateDateTimesAndTimesTransformationRule : never;
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 {};
package/lib/esm/types.js CHANGED
@@ -60,6 +60,5 @@ export var transformationTypesBase = [
60
60
  "round",
61
61
  "floor",
62
62
  "ceiling",
63
- "autodetect",
64
63
  ];
65
64
  export var mutableTransformationTypes = __spreadArray([], transformationTypesBase, true);