fuse-importer 0.1.4-testing → 0.1.6-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 +38 -7
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +1 -1
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +4 -3
- package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +14 -9
- package/lib/esm/Importer/PreviewFirstTime.js +1 -1
- package/lib/esm/Importer/Review/ReviewContextProvider.d.ts +6 -6
- package/lib/esm/Importer/Review/ReviewContextProvider.js +51 -223
- package/lib/esm/Importer/Review/ReviewWithContext.js +2 -2
- package/lib/esm/Importer/Stepper/StepperSubmitModal.d.ts +2 -1
- package/lib/esm/Importer/Stepper/StepperSubmitModal.js +4 -2
- package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +1 -1
- package/lib/esm/Importer/Stepper/index.js +20 -69
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.d.ts +2 -1
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +14 -86
- package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +11 -3
- package/lib/esm/Importer/Uploader/HeadersPreview.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/DataSetContextProvider/index.d.ts +16 -0
- package/lib/esm/Importer/common/Spreadsheet/DataSetContextProvider/index.js +63 -0
- package/lib/esm/Importer/common/Spreadsheet/DuplicateDataContextProvider/index.d.ts +18 -0
- package/lib/esm/Importer/common/Spreadsheet/DuplicateDataContextProvider/index.js +101 -0
- package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.d.ts +29 -0
- package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.js +150 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.d.ts +6 -4
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +37 -37
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/hashCalculators.d.ts +6 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/hashCalculators.js +138 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +7 -29
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +11 -193
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useBatchProcessing.d.ts +5 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useBatchProcessing.js +72 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.d.ts +4 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.js +46 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +2 -1
- package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.d.ts +31 -0
- package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.js +304 -0
- package/lib/esm/Importer/common/Spreadsheet/common/index.js +5 -4
- package/lib/esm/Importer/common/Spreadsheet/common/types.d.ts +2 -3
- package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.d.ts +0 -2
- package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.js +26 -11
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +21 -13
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +35 -36
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.js +3 -3
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +5 -1
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +44 -18
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.js +1 -2
- package/lib/esm/Importer/common/Spreadsheet/index.d.ts +0 -1
- package/lib/esm/Importer/common/Spreadsheet/index.js +1 -84
- package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +1 -2
- package/lib/esm/Importer/common/Spreadsheet/styles.js +13 -1
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.d.ts +2 -1
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +9 -5
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.d.ts +8 -2
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +4 -16
- package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.d.ts +5 -0
- package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.js +81 -0
- package/lib/esm/Importer/common/Spreadsheet/validation/index.d.ts +5 -3
- package/lib/esm/Importer/common/Spreadsheet/validation/index.js +13 -17
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.d.ts +3 -2
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +16 -7
- package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +4 -2
- package/lib/esm/Importer/contexts/ImporterContextProvider.js +121 -13
- package/lib/esm/Importer/data/index.d.ts +1 -0
- package/lib/esm/Importer/data/index.js +44 -5
- package/lib/esm/Importer/hooks/useExportDataToFile.d.ts +5 -0
- package/lib/esm/Importer/hooks/useExportDataToFile.js +54 -0
- package/lib/esm/Importer/hooks/useSubmitToServer.d.ts +7 -0
- package/lib/esm/Importer/hooks/useSubmitToServer.js +192 -0
- package/lib/esm/common/EventManagerContextProvider/index.d.ts +22 -0
- package/lib/esm/common/EventManagerContextProvider/index.js +38 -0
- package/lib/esm/common/FileUploadDropzone/ImporterDropzone.d.ts +16 -0
- package/lib/esm/common/FileUploadDropzone/ImporterDropzone.js +108 -0
- package/lib/esm/common/FileUploadDropzone/index.d.ts +1 -0
- package/lib/esm/common/FileUploadDropzone/index.js +1 -0
- package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.js +55 -41
- package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +25 -16
- package/lib/esm/common/Table/TableActions/ExportData.js +5 -3
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +38 -9
- package/lib/esm/common/Table/TableActions/RowFilters.js +53 -5
- package/lib/esm/common/Table/TableActions/SearchRows.js +3 -1
- package/lib/esm/common/Table/TableActions/TableActions.js +2 -1
- package/lib/esm/common/Table/TableActions/TableActions.styles.js +1 -1
- package/lib/esm/common/Table/TableActions/TransformedRecordsCount.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +25 -17
- package/lib/esm/common/Table/TableActions/ValidationProgress.d.ts +2 -0
- package/lib/esm/common/Table/TableActions/ValidationProgress.js +22 -0
- package/lib/esm/common/Table/TableView/TableRows/TableRow.d.ts +1 -1
- package/lib/esm/common/Table/TableView/TableRows/TableRow.js +2 -2
- package/lib/esm/common/Table/TableView/TableRows/index.js +21 -6
- package/lib/esm/common/Table/TableView/index.d.ts +1 -1
- package/lib/esm/common/Table/TableView/index.js +6 -15
- package/lib/esm/common/Table/TableView/types.d.ts +8 -9
- package/lib/esm/common/Table/index.d.ts +2 -1
- package/lib/esm/common/Table/index.js +2 -2
- package/lib/esm/common/Toast.js +3 -2
- package/lib/esm/common/TooltipProvider.d.ts +2 -0
- package/lib/esm/common/TooltipProvider.js +12 -9
- package/lib/esm/common/buttons.d.ts +5 -1
- package/lib/esm/common/buttons.js +13 -7
- package/lib/esm/common/columnsTransformations.js +1 -1
- package/lib/esm/common/datePatterns.d.ts +1 -0
- package/lib/esm/common/datePatterns.js +10 -0
- package/lib/esm/common/icons/index.d.ts +1 -0
- package/lib/esm/common/icons/index.js +1 -0
- package/lib/esm/common/index.d.ts +1 -0
- package/lib/esm/common/index.js +1 -0
- package/lib/esm/common/inputs/Autocomplete.js +1 -1
- package/lib/esm/locales/de.d.ts +1 -1
- package/lib/esm/locales/de.js +1 -1
- package/lib/esm/locales/en.d.ts +1 -1
- package/lib/esm/locales/en.js +4 -4
- package/lib/esm/locales/es.d.ts +1 -1
- package/lib/esm/locales/es.js +1 -1
- package/lib/esm/locales/fr.d.ts +1 -1
- package/lib/esm/locales/fr.js +1 -1
- package/lib/esm/types.d.ts +20 -5
- package/lib/main.js +2 -2
- package/package.json +6 -4
- package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.d.ts +0 -8
- package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +0 -36
- package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.d.ts +0 -5
- package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +0 -19
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.d.ts +0 -3
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.js +0 -14
- package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +0 -33
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +0 -256
- package/lib/esm/common/Table/TableActions/FilterByErrors/functions.d.ts +0 -11
- package/lib/esm/common/Table/TableActions/FilterByErrors/functions.js +0 -35
- package/lib/esm/common/Table/TableActions/hooks.d.ts +0 -18
- package/lib/esm/common/Table/TableActions/hooks.js +0 -41
|
@@ -45,6 +45,7 @@ import { Checkbox } from "../../../../common/inputs/Checkbox";
|
|
|
45
45
|
import { useImporterContext } from "../../../contexts/ImporterContextProvider";
|
|
46
46
|
import ReactVirtualizedAutoSizer from "react-virtualized-auto-sizer";
|
|
47
47
|
import { rowIsEmpty } from "../SpreadsheetContextProvider/utils";
|
|
48
|
+
import { useDataSetContext } from "../DataSetContextProvider";
|
|
48
49
|
var StyledGrid = styled(Grid)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n overflow-y: scroll;\n"], ["\n background: ", ";\n overflow-y: scroll;\n"])), function (_a) {
|
|
49
50
|
var theme = _a.theme;
|
|
50
51
|
return theme.colors.white50;
|
|
@@ -57,52 +58,55 @@ var gridStyles = {
|
|
|
57
58
|
};
|
|
58
59
|
export var SpreadsheetRowCheckboxes = function (_a) {
|
|
59
60
|
var height = _a.height, gridRef = _a.gridRef, isLoadingData = _a.isLoadingData, props = __rest(_a, ["height", "gridRef", "isLoadingData"]);
|
|
60
|
-
var _b = useSpreadsheetContext(),
|
|
61
|
+
var _b = useSpreadsheetContext(), selectedRows = _b.selectedRows, options = _b.options, filteredDataIds = _b.filteredDataIds, lastClickedIndexRef = _b.lastClickedIndexRef, setSelectedRows = _b.setSelectedRows, checkboxColumnWidth = _b.checkboxColumnWidth, isTransformTooltipOpened = _b.isTransformTooltipOpened;
|
|
62
|
+
var getRecord = useDataSetContext().getRecord;
|
|
61
63
|
var currentStepIndex = useImporterContext().currentStepIndex;
|
|
62
|
-
var nonEmptyRows = useMemo(function () { return
|
|
63
|
-
data,
|
|
64
|
-
]);
|
|
64
|
+
var nonEmptyRows = useMemo(function () { return filteredDataIds.filter(function (rowId) { return !rowIsEmpty(getRecord(rowId)); }); }, [filteredDataIds]);
|
|
65
65
|
var isIndeterminate = selectedRows.length > 0 && selectedRows.length < nonEmptyRows.length;
|
|
66
66
|
var handleRowSelect = function (checked, rowIndex, rowMetaId) {
|
|
67
|
-
var _a
|
|
67
|
+
var _a;
|
|
68
68
|
if (isTransformTooltipOpened)
|
|
69
69
|
return;
|
|
70
|
-
var
|
|
71
|
-
var
|
|
72
|
-
var
|
|
70
|
+
var recordId = filteredDataIds[rowIndex];
|
|
71
|
+
var record = getRecord(recordId);
|
|
72
|
+
var lastRowRecordId = filteredDataIds[filteredDataIds.length - 1];
|
|
73
|
+
var isLastRow = rowMetaId === lastRowRecordId;
|
|
74
|
+
var isLastRowAndEmpty = isLastRow && rowIsEmpty(getRecord(lastRowRecordId));
|
|
73
75
|
if (isLastRowAndEmpty)
|
|
74
76
|
return;
|
|
75
77
|
if (options.withSingleRowSelect) {
|
|
76
|
-
if (!rowIsEmpty(
|
|
77
|
-
setSelectedRows([(
|
|
78
|
+
if (!rowIsEmpty(record))
|
|
79
|
+
setSelectedRows([(_a = record === null || record === void 0 ? void 0 : record._meta) === null || _a === void 0 ? void 0 : _a.id]);
|
|
78
80
|
return;
|
|
79
81
|
}
|
|
80
82
|
if (checked) {
|
|
81
|
-
setSelectedRows(function (prev) { var _a
|
|
83
|
+
setSelectedRows(function (prev) { var _a; return __spreadArray(__spreadArray([], prev, true), [(_a = record === null || record === void 0 ? void 0 : record._meta) === null || _a === void 0 ? void 0 : _a.id], false); });
|
|
82
84
|
}
|
|
83
85
|
else {
|
|
84
86
|
setSelectedRows(function (prev) {
|
|
85
|
-
return prev.filter(function (row) { var _a
|
|
87
|
+
return prev.filter(function (row) { var _a; return row !== ((_a = record === null || record === void 0 ? void 0 : record._meta) === null || _a === void 0 ? void 0 : _a.id); });
|
|
86
88
|
});
|
|
87
89
|
}
|
|
88
90
|
lastClickedIndexRef.current = rowIndex;
|
|
89
91
|
};
|
|
90
92
|
var handleSelectMultipleRows = function (rowIndex) {
|
|
91
|
-
var _a
|
|
93
|
+
var _a;
|
|
92
94
|
if (isTransformTooltipOpened)
|
|
93
95
|
return;
|
|
94
|
-
var
|
|
96
|
+
var rowId = filteredDataIds[rowIndex];
|
|
97
|
+
var record = getRecord(rowId);
|
|
98
|
+
var clickedRowId = (_a = record === null || record === void 0 ? void 0 : record._meta) === null || _a === void 0 ? void 0 : _a.id;
|
|
95
99
|
if (selectedRows.includes(clickedRowId)) {
|
|
96
100
|
// The clicked row is already selected, so we have to remove it
|
|
97
101
|
var clickedRowIndex = selectedRows.indexOf(clickedRowId);
|
|
98
102
|
var lastClickedIndex = lastClickedIndexRef.current;
|
|
99
103
|
var rangeStartIndex_1 = Math.min(clickedRowIndex, lastClickedIndex);
|
|
100
104
|
var rangeEndIndex_1 = Math.max(clickedRowIndex, lastClickedIndex);
|
|
101
|
-
var lastRowId_1 =
|
|
105
|
+
var lastRowId_1 = filteredDataIds[filteredDataIds.length - 1];
|
|
102
106
|
var updatedSelectedRows = selectedRows.filter(function (value, index) {
|
|
103
107
|
return index < rangeStartIndex_1 ||
|
|
104
108
|
index > rangeEndIndex_1 ||
|
|
105
|
-
(value === lastRowId_1 && rowIsEmpty(
|
|
109
|
+
(value === lastRowId_1 && rowIsEmpty(getRecord(lastRowId_1)));
|
|
106
110
|
});
|
|
107
111
|
setSelectedRows(updatedSelectedRows);
|
|
108
112
|
}
|
|
@@ -110,14 +114,14 @@ export var SpreadsheetRowCheckboxes = function (_a) {
|
|
|
110
114
|
// The clicked row is not selected, so we have to add it
|
|
111
115
|
var lastSelectedRowIndex = selectedRows.length - 1;
|
|
112
116
|
var lastSelectedRowId_1 = selectedRows[lastSelectedRowIndex];
|
|
113
|
-
var lastSelectedRow =
|
|
114
|
-
var clickedRow =
|
|
115
|
-
var rangeStartIndex =
|
|
116
|
-
var rangeEndIndex =
|
|
117
|
-
var range =
|
|
118
|
-
var rangeIds = range.map(function (row) { return row
|
|
119
|
-
var lastRowId_2 =
|
|
120
|
-
var isLastRowEmpty_1 = rowIsEmpty(
|
|
117
|
+
var lastSelectedRow = filteredDataIds.find(function (id) { return id === lastSelectedRowId_1; });
|
|
118
|
+
var clickedRow = filteredDataIds[rowIndex];
|
|
119
|
+
var rangeStartIndex = filteredDataIds.indexOf(lastSelectedRow);
|
|
120
|
+
var rangeEndIndex = filteredDataIds.indexOf(clickedRow);
|
|
121
|
+
var range = filteredDataIds.slice(Math.min(rangeStartIndex, rangeEndIndex), Math.max(rangeStartIndex, rangeEndIndex) + 1);
|
|
122
|
+
var rangeIds = range.map(function (row) { return row; });
|
|
123
|
+
var lastRowId_2 = filteredDataIds[filteredDataIds.length - 1];
|
|
124
|
+
var isLastRowEmpty_1 = rowIsEmpty(getRecord(lastRowId_2));
|
|
121
125
|
var updatedSelectedRows = __spreadArray(__spreadArray([], selectedRows, true), rangeIds, true).filter(function (value, index, array) {
|
|
122
126
|
return array.indexOf(value) === index &&
|
|
123
127
|
(value !== lastRowId_2 || (value === lastRowId_2 && !isLastRowEmpty_1));
|
|
@@ -130,14 +134,10 @@ export var SpreadsheetRowCheckboxes = function (_a) {
|
|
|
130
134
|
if (isTransformTooltipOpened)
|
|
131
135
|
return;
|
|
132
136
|
if (checked) {
|
|
133
|
-
var allRows =
|
|
134
|
-
.
|
|
135
|
-
var
|
|
136
|
-
var isLastRowAndEmpty = isLastRow && rowIsEmpty(row);
|
|
137
|
+
var allRows = filteredDataIds.filter(function (recordId) {
|
|
138
|
+
var isLastRow = recordId === filteredDataIds[filteredDataIds.length - 1];
|
|
139
|
+
var isLastRowAndEmpty = isLastRow && rowIsEmpty(getRecord(recordId));
|
|
137
140
|
return !isLastRowAndEmpty;
|
|
138
|
-
})
|
|
139
|
-
.map(function (row) {
|
|
140
|
-
return row === null || row === void 0 ? void 0 : row._meta.id;
|
|
141
141
|
});
|
|
142
142
|
setSelectedRows(allRows);
|
|
143
143
|
}
|
|
@@ -147,9 +147,8 @@ export var SpreadsheetRowCheckboxes = function (_a) {
|
|
|
147
147
|
lastClickedIndexRef.current = null;
|
|
148
148
|
};
|
|
149
149
|
var CheckboxCell = function (_a) {
|
|
150
|
-
var _b, _c;
|
|
151
150
|
var rowIndex = _a.rowIndex;
|
|
152
|
-
var rowMetaId =
|
|
151
|
+
var rowMetaId = filteredDataIds[rowIndex];
|
|
153
152
|
return (_jsx(Div, __assign({ className: "checkbox-cell", "data-test-id": "checkbox-cell-".concat(rowIndex) }, { children: _jsx(Checkbox, { isChecked: rowMetaId && selectedRows.includes(rowMetaId), onChange: function (checked) {
|
|
154
153
|
return !isLoadingData && handleRowSelect(checked, rowIndex, rowMetaId);
|
|
155
154
|
}, onShiftKeyPressed: function () {
|
|
@@ -163,16 +162,16 @@ export var SpreadsheetRowCheckboxes = function (_a) {
|
|
|
163
162
|
};
|
|
164
163
|
var Cell = function (_a) {
|
|
165
164
|
var rowIndex = _a.rowIndex, style = _a.style;
|
|
166
|
-
return (_jsxs(RowCheckbox, __assign({ style: style, alignCenter: true, justifyCenter: true, isLast: rowIndex ===
|
|
165
|
+
return (_jsxs(RowCheckbox, __assign({ style: style, alignCenter: true, justifyCenter: true, isLast: rowIndex === filteredDataIds.length - 1 }, { children: [_jsx(CheckboxCell, { rowIndex: rowIndex }), _jsx(RowNumbersCell, { rowIndex: rowIndex })] }), rowIndex));
|
|
167
166
|
};
|
|
168
167
|
var isSelectAllRowsChekboxChecked = (selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.length) > 0 &&
|
|
169
|
-
(
|
|
168
|
+
(filteredDataIds === null || filteredDataIds === void 0 ? void 0 : filteredDataIds.length) > 0 &&
|
|
170
169
|
(selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.length) >= (nonEmptyRows === null || nonEmptyRows === void 0 ? void 0 : nonEmptyRows.length);
|
|
171
170
|
return (_jsxs(SpreadsheetRowCheckboxesContainer, __assign({ className: "spreadsheet-row-container", columnWidth: checkboxColumnWidth }, props, { h100: true }, { children: [_jsx(SpreadsheetRowCheckboxesHeader, { children: currentStepIndex === 2 && (_jsx(Checkbox, { isChecked: isSelectAllRowsChekboxChecked, onChange: function (checked) {
|
|
172
171
|
return !isLoadingData && handleSelectAllRows(checked);
|
|
173
172
|
}, isIndeterminate: isIndeterminate, isDisabled: isLoadingData })) }), _jsx(ReactVirtualizedAutoSizer, { children: function (_a) {
|
|
174
173
|
var height = _a.height;
|
|
175
|
-
return (_jsx(StyledGrid, __assign({ ref: gridRef, style: gridStyles, width: checkboxColumnWidth, columnCount: 1, columnWidth: checkboxColumnWidth, rowHeight: 40, rowCount:
|
|
174
|
+
return (_jsx(StyledGrid, __assign({ ref: gridRef, style: gridStyles, width: checkboxColumnWidth, columnCount: 1, columnWidth: checkboxColumnWidth, rowHeight: 40, rowCount: filteredDataIds.length, height: height - spreadsheetHeaderHeightPx }, { children: Cell })));
|
|
176
175
|
} })] })));
|
|
177
176
|
};
|
|
178
177
|
var RowCheckbox = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background-color: ", ";\n ", ";\n ", "\n display: flex;\n justify-content: center;\n position: relative;\n user-select: none;\n\n .checkbox-cell {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n visibility: hidden;\n z-index: 1;\n }\n\n .row-numbers-cell {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n"], ["\n background-color: ", ";\n ", ";\n ", "\n display: flex;\n justify-content: center;\n position: relative;\n user-select: none;\n\n .checkbox-cell {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n visibility: hidden;\n z-index: 1;\n }\n\n .row-numbers-cell {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n"])), function (p) { return p.theme.colors.tableHeader; }, function (p) { return p.theme.css.label3; }, function (p) {
|
|
@@ -40,12 +40,12 @@ var gridStyles = {
|
|
|
40
40
|
};
|
|
41
41
|
export var SpreadsheetRowNumbers = function (_a) {
|
|
42
42
|
var height = _a.height, spreadsheetHasXScroll = _a.spreadsheetHasXScroll, gridRef = _a.gridRef, props = __rest(_a, ["height", "spreadsheetHasXScroll", "gridRef"]);
|
|
43
|
-
var
|
|
43
|
+
var filteredDataIds = useSpreadsheetContext().filteredDataIds;
|
|
44
44
|
var Cell = function (_a) {
|
|
45
45
|
var rowIndex = _a.rowIndex, style = _a.style;
|
|
46
|
-
return (_jsx(RowNumber, __assign({ style: style, alignCenter: true, justifyCenter: true, isLast: rowIndex ===
|
|
46
|
+
return (_jsx(RowNumber, __assign({ style: style, alignCenter: true, justifyCenter: true, isLast: rowIndex === filteredDataIds.length - 1 }, { children: _jsx(Div, __assign({ truncateText: true, textAlignCenter: true, body2: true }, { children: rowIndex + 1 })) }), rowIndex));
|
|
47
47
|
};
|
|
48
|
-
return (_jsxs(SpreadsheetRowNumbersContainer, __assign({}, props, { h: height }, { children: [_jsx(SpreadsheetRowNumbersHeader, {}), _jsx(Grid, __assign({ ref: gridRef, style: gridStyles, width: SPREADSHEET_ROW_NUMBERS_WIDTH, columnCount: 1, columnWidth: SPREADSHEET_ROW_NUMBERS_WIDTH, height: height - spreadsheetHeaderHeightPx, rowHeight: 40, rowCount:
|
|
48
|
+
return (_jsxs(SpreadsheetRowNumbersContainer, __assign({}, props, { h: height }, { children: [_jsx(SpreadsheetRowNumbersHeader, {}), _jsx(Grid, __assign({ ref: gridRef, style: gridStyles, width: SPREADSHEET_ROW_NUMBERS_WIDTH, columnCount: 1, columnWidth: SPREADSHEET_ROW_NUMBERS_WIDTH, height: height - spreadsheetHeaderHeightPx, rowHeight: 40, rowCount: filteredDataIds.length }, { children: Cell }))] })));
|
|
49
49
|
};
|
|
50
50
|
var RowNumber = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-color: ", ";\n ", ";\n ", "\n"], ["\n background-color: ", ";\n ", ";\n ", "\n"])), function (p) { return p.theme.colors.tableHeader; }, function (p) { return p.theme.css.label3; }, function (p) {
|
|
51
51
|
return !p.isLast && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n box-shadow: inset 0 -1px 0 ", ";\n "], ["\n box-shadow: inset 0 -1px 0 ", ";\n "])), function (p) { return p.theme.colors.gray300; });
|
|
@@ -31,6 +31,10 @@ import { SpreadsheetField, useSpreadsheetField } from ".";
|
|
|
31
31
|
import { Div } from "../../../../../styled/utils";
|
|
32
32
|
import { useSpreadsheetContext } from "../../SpreadsheetContextProvider";
|
|
33
33
|
import { AVERAGE_CHAR_SIZE, getFieldContentWidth } from "./utils";
|
|
34
|
+
var parseValue = function (value) {
|
|
35
|
+
var isFalsyButNotZero = !value && value !== 0;
|
|
36
|
+
return isFalsyButNotZero ? "" : value;
|
|
37
|
+
};
|
|
34
38
|
export var SpreadsheetInput = function (_a) {
|
|
35
39
|
var _b, _c, _d, _e, _f, _g;
|
|
36
40
|
var name = _a.name, record = _a.record, fieldType = _a.fieldType, columnWidth = _a.columnWidth, props = __rest(_a, ["name", "record", "fieldType", "columnWidth"]);
|
|
@@ -56,7 +60,7 @@ export var SpreadsheetInput = function (_a) {
|
|
|
56
60
|
? "".concat(totalInputSize, "px")
|
|
57
61
|
: "".concat(defaultWidthAsNumber, "px");
|
|
58
62
|
}, [value, record, columnWidth]);
|
|
59
|
-
return (_jsxs(SpreadsheetField, __assign({ validationError: validationError, validationWarning: validationWarning, isHighlighted: isHighlighted, defaultFieldWidth: defaultWidthAsNumber, expandedFieldWidth: expandedFieldWidth, shouldExpandInput: true }, { children: [_jsx(Input, __assign({ autoComplete: "off", hasError: !!validationError, hasWarning: !!validationWarning, value: value
|
|
63
|
+
return (_jsxs(SpreadsheetField, __assign({ validationError: validationError, validationWarning: validationWarning, isHighlighted: isHighlighted, defaultFieldWidth: defaultWidthAsNumber, expandedFieldWidth: expandedFieldWidth, shouldExpandInput: true }, { children: [_jsx(Input, __assign({ autoComplete: "off", hasError: !!validationError, hasWarning: !!validationWarning, value: parseValue(value), onChange: function (_a) {
|
|
60
64
|
var value = _a.target.value;
|
|
61
65
|
return !isTransformTooltipOpened && setValue(value);
|
|
62
66
|
}, 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) &&
|
|
@@ -53,33 +53,59 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
53
53
|
import { debounce, get } from "lodash";
|
|
54
54
|
import { useCallback, useEffect, useState } from "react";
|
|
55
55
|
import styled, { css } from "styled-components";
|
|
56
|
+
import { useEventManagerContext } from "../../../../../common/EventManagerContextProvider";
|
|
56
57
|
import { TooltipProvider } from "../../../../../common/TooltipProvider";
|
|
57
58
|
import { Div } from "../../../../../styled/utils";
|
|
58
|
-
import {
|
|
59
|
+
import { useDataSetContext } from "../../DataSetContextProvider";
|
|
60
|
+
import { useFilteredDataContext } from "../../FilteredDataContextProvider";
|
|
59
61
|
import { useSpreadsheetContext } from "../../SpreadsheetContextProvider";
|
|
62
|
+
import { useDataSetManipulation } from "../../SpreadsheetContextProvider/useDataSetManipulation";
|
|
63
|
+
import { useValidationContext } from "../../ValidationContextProvider";
|
|
64
|
+
import { parseValue } from "../../common";
|
|
60
65
|
export var useSpreadsheetField = function (name, record, fieldType) {
|
|
61
|
-
var
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
var
|
|
66
|
+
var appendNewRecordToSpreadsheet = useDataSetManipulation().appendNewRecordToSpreadsheet;
|
|
67
|
+
var lastFilteredRecordId = useFilteredDataContext().lastFilteredRecordId;
|
|
68
|
+
var _a = useValidationContext(), updateRecordAndRevalidate = _a.updateRecordAndRevalidate, warnings = _a.warnings, errors = _a.errors;
|
|
69
|
+
var getRecord = useDataSetContext().getRecord;
|
|
70
|
+
var _b = useState(record), recordState = _b[0], setRecordState = _b[1];
|
|
71
|
+
var _c = useState(record[name]), value = _c[0], setValue = _c[1];
|
|
72
|
+
var _d = useEventManagerContext(), on = _d.on, off = _d.off;
|
|
73
|
+
var _e = useState(get(errors.current, "".concat(record._meta.id, ".").concat(name), null)), validationError = _e[0], setValidationError = _e[1];
|
|
74
|
+
var _f = useState(get(warnings.current, "".concat(record._meta.id, ".").concat(name), null)), validationWarning = _f[0], setValidationWarning = _f[1];
|
|
65
75
|
useEffect(function () {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
76
|
+
var listener = function (newRecord) {
|
|
77
|
+
var _record = getRecord(record._meta.id);
|
|
78
|
+
setValidationError(get(errors.current, "".concat(_record._meta.id, ".").concat(name), null));
|
|
79
|
+
setValidationWarning(get(warnings.current, "".concat(_record._meta.id, ".").concat(name), null));
|
|
80
|
+
setRecordState(_record);
|
|
81
|
+
};
|
|
82
|
+
on(record._meta.id, listener);
|
|
83
|
+
return function () {
|
|
84
|
+
off(record._meta.id, listener);
|
|
85
|
+
};
|
|
86
|
+
}, []);
|
|
70
87
|
var updateData = useCallback(debounce(function (value) { return __awaiter(void 0, void 0, void 0, function () {
|
|
71
|
-
var
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
88
|
+
var _record;
|
|
89
|
+
return __generator(this, function (_a) {
|
|
90
|
+
_record = __assign({}, getRecord(record._meta.id));
|
|
91
|
+
_record[name] = parseValue(fieldType, value);
|
|
92
|
+
updateRecordAndRevalidate(_record);
|
|
93
|
+
setRecordState(_record);
|
|
94
|
+
if (record._meta.id === lastFilteredRecordId.current) {
|
|
95
|
+
appendNewRecordToSpreadsheet();
|
|
96
|
+
}
|
|
76
97
|
return [2 /*return*/];
|
|
77
98
|
});
|
|
78
|
-
}); },
|
|
99
|
+
}); }, 200), [record]);
|
|
100
|
+
useEffect(function () {
|
|
101
|
+
if (recordState[name] !== value) {
|
|
102
|
+
setValue(recordState[name]);
|
|
103
|
+
}
|
|
104
|
+
}, [recordState[name], recordState]);
|
|
79
105
|
var updateValue = useCallback(function (value) {
|
|
80
106
|
setValue(value);
|
|
81
107
|
updateData(value);
|
|
82
|
-
}, [record, updateData]);
|
|
108
|
+
}, [record, recordState, updateData]);
|
|
83
109
|
return {
|
|
84
110
|
value: value,
|
|
85
111
|
setValue: updateValue,
|
|
@@ -104,7 +130,7 @@ var ContentContainer = styled(Div)(templateObject_8 || (templateObject_8 = __mak
|
|
|
104
130
|
var expandedFieldWidth = _a.expandedFieldWidth, shouldExpandInput = _a.shouldExpandInput;
|
|
105
131
|
return shouldExpandInput && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n width: ", ";\n z-index: 1;\n\n .suffix {\n right: 12px;\n }\n "], ["\n width: ", ";\n z-index: 1;\n\n .suffix {\n right: 12px;\n }\n "])), expandedFieldWidth || "auto");
|
|
106
132
|
}, function (p) { return p.theme.css.alignCenter; }, function (p) {
|
|
107
|
-
return p.isHighlighted && css(templateObject_4 || (templateObject_4 = __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; });
|
|
133
|
+
return p.isHighlighted && css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 2px ", " inset;\n z-index: 100;\n "], ["\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 2px ", " inset;\n z-index: 100;\n "])), function (p) { return p.theme.colors.blue100; }, function (p) { return p.theme.colors.blue500; });
|
|
108
134
|
}, function (p) {
|
|
109
135
|
return p.hasWarning && 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.orange1200; }, function (p) { return p.theme.colors.orange1100; }, function (p) { return p.theme.colors.orange500; });
|
|
110
136
|
}, function (p) {
|
|
@@ -115,6 +141,6 @@ var ContentContainer = styled(Div)(templateObject_8 || (templateObject_8 = __mak
|
|
|
115
141
|
export var SpreadsheetField = function (_a) {
|
|
116
142
|
var validationError = _a.validationError, validationWarning = _a.validationWarning, children = _a.children, isHighlighted = _a.isHighlighted, expandedFieldWidth = _a.expandedFieldWidth, shouldExpandInput = _a.shouldExpandInput, defaultFieldWidth = _a.defaultFieldWidth;
|
|
117
143
|
var isReadOnly = useSpreadsheetContext().isReadOnly;
|
|
118
|
-
return (_jsx(Div, __assign({ dim: "100%" }, { children: _jsx(TooltipProvider, __assign({ tooltip: validationError || validationWarning }, { children: _jsx(Div, __assign({ dim: "100%" }, { children: _jsx(ContentContainer, __assign({ hasError:
|
|
144
|
+
return (_jsx(Div, __assign({ dim: "100%" }, { children: _jsx(TooltipProvider, __assign({ tooltip: validationError || validationWarning }, { children: _jsx(Div, __assign({ dim: "100%" }, { children: _jsx(ContentContainer, __assign({ hasError: validationError !== null, hasWarning: validationWarning !== null, isHighlighted: isHighlighted, expandedFieldWidth: expandedFieldWidth, defaultFieldWidth: defaultFieldWidth, shouldExpandInput: shouldExpandInput, isReadOnly: isReadOnly, className: "input-content" }, { children: children })) })) })) })));
|
|
119
145
|
};
|
|
120
146
|
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
var _a;
|
|
2
2
|
import { FieldTypes } from "../../../../../types";
|
|
3
3
|
import { BooleanInput } from "./Boolean";
|
|
4
|
-
import { EmailInput } from "./EmailInput";
|
|
5
4
|
import { EnumInput } from "./EnumInput";
|
|
6
5
|
import { FloatInput } from "./FloatInput";
|
|
7
6
|
import { IntegerInput } from "./IntegerInput";
|
|
8
7
|
import { StringInput } from "./StringInput";
|
|
9
8
|
export var inputTypes = (_a = {},
|
|
10
9
|
_a[FieldTypes.boolean] = BooleanInput,
|
|
11
|
-
_a[FieldTypes.email] =
|
|
10
|
+
_a[FieldTypes.email] = StringInput,
|
|
12
11
|
_a[FieldTypes.enum] = EnumInput,
|
|
13
12
|
_a[FieldTypes.float] = FloatInput,
|
|
14
13
|
_a[FieldTypes.integer] = IntegerInput,
|
|
@@ -3,4 +3,3 @@ import { SpreadsheetProps } from "./common/types";
|
|
|
3
3
|
declare const _default: React.MemoExoticComponent<({ initialDataSet, initialDataSetUpdatedAt, ...props }: SpreadsheetProps) => JSX.Element>;
|
|
4
4
|
export default _default;
|
|
5
5
|
export * from "./SpreadsheetContextProvider";
|
|
6
|
-
export * from "./hooks";
|
|
@@ -21,99 +21,16 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
21
21
|
return t;
|
|
22
22
|
};
|
|
23
23
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
24
|
-
import { get } from "lodash";
|
|
25
|
-
import { DateTime } from "luxon";
|
|
26
24
|
import React from "react";
|
|
27
25
|
import { areEqual } from "react-window";
|
|
28
|
-
import { useImporterContext } from "../../contexts/ImporterContextProvider";
|
|
29
26
|
import { SpreadsheetContextProvider } from "./SpreadsheetContextProvider";
|
|
30
27
|
import SpreadsheetData from "./components/SpreadsheetData";
|
|
31
|
-
var useFieldSorting = function () {
|
|
32
|
-
var templateHeaders = useImporterContext().templateHeaders;
|
|
33
|
-
var getDefaultSortCompareFn = function (sortBy) {
|
|
34
|
-
return function (a, b) {
|
|
35
|
-
var aField = get(a, sortBy.field);
|
|
36
|
-
var bField = get(b, sortBy.field);
|
|
37
|
-
var fieldTypes = templateHeaders.reduce(function (acc, header) {
|
|
38
|
-
var type = header.column_type;
|
|
39
|
-
var pattern = header.pattern || null;
|
|
40
|
-
acc[header.internal_key] = { type: type, pattern: pattern };
|
|
41
|
-
return acc;
|
|
42
|
-
}, {});
|
|
43
|
-
var fieldType = fieldTypes[sortBy.field];
|
|
44
|
-
var isAEmpty = aField === undefined || aField === null || aField === "";
|
|
45
|
-
var isBEmpty = bField === undefined || bField === null || bField === "";
|
|
46
|
-
// sort empty values to the end
|
|
47
|
-
if (isAEmpty && isBEmpty) {
|
|
48
|
-
if (a._meta.rowIndex === b._meta.rowIndex)
|
|
49
|
-
return 0;
|
|
50
|
-
return a._meta.rowIndex < b._meta.rowIndex ? -1 : 1;
|
|
51
|
-
}
|
|
52
|
-
if (isAEmpty)
|
|
53
|
-
return 1;
|
|
54
|
-
if (isBEmpty)
|
|
55
|
-
return -1;
|
|
56
|
-
if (fieldType && fieldType.type === "boolean") {
|
|
57
|
-
var aString = aField ? "true" : "false";
|
|
58
|
-
var bString = bField ? "true" : "false";
|
|
59
|
-
if (aString === bString) {
|
|
60
|
-
if (a._meta.rowIndex === b._meta.rowIndex)
|
|
61
|
-
return 0;
|
|
62
|
-
return a._meta.rowIndex < b._meta.rowIndex ? -1 : 1;
|
|
63
|
-
}
|
|
64
|
-
if (aString === "true")
|
|
65
|
-
return sortBy.direction === "asc" ? -1 : 1;
|
|
66
|
-
if (bString === "true")
|
|
67
|
-
return sortBy.direction === "asc" ? 1 : -1;
|
|
68
|
-
}
|
|
69
|
-
else if (fieldType &&
|
|
70
|
-
(fieldType.type === "date" ||
|
|
71
|
-
fieldType.type === "datetime" ||
|
|
72
|
-
fieldType.type === "time")) {
|
|
73
|
-
var aDateTime = aField
|
|
74
|
-
? DateTime.fromFormat(aField, fieldType.pattern)
|
|
75
|
-
: null;
|
|
76
|
-
var bDateTime = bField
|
|
77
|
-
? DateTime.fromFormat(bField, fieldType.pattern)
|
|
78
|
-
: null;
|
|
79
|
-
// sort invalid date values to the end before empty values
|
|
80
|
-
if (aDateTime && !aDateTime.isValid)
|
|
81
|
-
return 1;
|
|
82
|
-
if (bDateTime && !bDateTime.isValid)
|
|
83
|
-
return -1;
|
|
84
|
-
if (aDateTime && bDateTime && aDateTime.equals(bDateTime)) {
|
|
85
|
-
if (a._meta.rowIndex === b._meta.rowIndex)
|
|
86
|
-
return 0;
|
|
87
|
-
return a._meta.rowIndex < b._meta.rowIndex ? -1 : 1;
|
|
88
|
-
}
|
|
89
|
-
if (sortBy.direction === "asc") {
|
|
90
|
-
return (aDateTime === null || aDateTime === void 0 ? void 0 : aDateTime.valueOf()) - (bDateTime === null || bDateTime === void 0 ? void 0 : bDateTime.valueOf());
|
|
91
|
-
}
|
|
92
|
-
return (bDateTime === null || bDateTime === void 0 ? void 0 : bDateTime.valueOf()) - (aDateTime === null || aDateTime === void 0 ? void 0 : aDateTime.valueOf());
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
if (aField === bField) {
|
|
96
|
-
if (a._meta.rowIndex === b._meta.rowIndex)
|
|
97
|
-
return 0;
|
|
98
|
-
return a._meta.rowIndex < b._meta.rowIndex ? -1 : 1;
|
|
99
|
-
}
|
|
100
|
-
if (sortBy.direction === "asc") {
|
|
101
|
-
return aField > bField ? 1 : -1;
|
|
102
|
-
}
|
|
103
|
-
return aField < bField ? 1 : -1;
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
};
|
|
107
|
-
return { getDefaultSortCompareFn: getDefaultSortCompareFn };
|
|
108
|
-
};
|
|
109
28
|
var SpreadsheetWrapper = function (_a) {
|
|
110
29
|
var initialDataSet = _a.initialDataSet, initialDataSetUpdatedAt = _a.initialDataSetUpdatedAt, props = __rest(_a, ["initialDataSet", "initialDataSetUpdatedAt"]);
|
|
111
30
|
return (_jsx(_Fragment, { children: initialDataSet && (_jsx(Spreadsheet, __assign({ initialDataSet: initialDataSet }, props), initialDataSetUpdatedAt || 0)) }));
|
|
112
31
|
};
|
|
113
32
|
var Spreadsheet = function (props) {
|
|
114
|
-
|
|
115
|
-
return (_jsx(SpreadsheetContextProvider, __assign({}, props, { getSortCompareFn: getDefaultSortCompareFn }, { children: _jsx(SpreadsheetData, { className: props.className }) })));
|
|
33
|
+
return (_jsx(SpreadsheetContextProvider, __assign({}, props, { children: _jsx(SpreadsheetData, { className: props.className }) })));
|
|
116
34
|
};
|
|
117
35
|
export default React.memo(SpreadsheetWrapper, areEqual);
|
|
118
36
|
export * from "./SpreadsheetContextProvider";
|
|
119
|
-
export * from "./hooks";
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
interface SpreadSheetWrapperProps {
|
|
3
2
|
canShowCheckboxOnHover?: boolean;
|
|
4
3
|
shouldShowOnlyCheckbox?: boolean;
|
|
@@ -6,5 +5,5 @@ interface SpreadSheetWrapperProps {
|
|
|
6
5
|
export declare const SpreadSheetData: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps, never>;
|
|
7
6
|
export declare const SpreadSheetWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps & SpreadSheetWrapperProps, never>;
|
|
8
7
|
export declare const SpreadSheetContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps, never>;
|
|
9
|
-
export declare const TableView: import("styled-components").StyledComponent<
|
|
8
|
+
export declare const TableView: import("styled-components").StyledComponent<(props: any) => JSX.Element, import("styled-components").DefaultTheme, {}, never>;
|
|
10
9
|
export {};
|
|
@@ -2,6 +2,18 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
|
|
|
2
2
|
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
3
|
return cooked;
|
|
4
4
|
};
|
|
5
|
+
var __assign = (this && this.__assign) || function () {
|
|
6
|
+
__assign = Object.assign || function(t) {
|
|
7
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
8
|
+
s = arguments[i];
|
|
9
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
10
|
+
t[p] = s[p];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
return __assign.apply(this, arguments);
|
|
15
|
+
};
|
|
16
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
17
|
import styled, { css } from "styled-components";
|
|
6
18
|
import { TableView as TableViewBase, TableViewCellContainer, TableViewRow, } from "../../../common/Table/TableView";
|
|
7
19
|
import { Div } from "../../../styled/utils";
|
|
@@ -12,5 +24,5 @@ export var SpreadSheetWrapper = styled(Div)(templateObject_5 || (templateObject_
|
|
|
12
24
|
canShowCheckboxOnHover && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n &:hover {\n .row-numbers-cell {\n visibility: hidden;\n }\n\n .checkbox-cell {\n visibility: visible;\n }\n }\n "], ["\n &:hover {\n .row-numbers-cell {\n visibility: hidden;\n }\n\n .checkbox-cell {\n visibility: visible;\n }\n }\n "]))));
|
|
13
25
|
});
|
|
14
26
|
export var SpreadSheetContainer = styled(Div)(templateObject_6 || (templateObject_6 = __makeTemplateObject([""], [""])));
|
|
15
|
-
export var TableView = styled(TableViewBase)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n width: 100%;\n border: none;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n overflow: hidden;\n background-color: ", ";\n ", " {\n border-bottom: none;\n height: 40px;\n }\n ", " {\n padding: 0 !important;\n box-shadow: inset 0 -1px 0 ", ",\n inset -1px 0 0 ", ";\n &.last-column {\n box-shadow: inset 0 -1px 0 ", ",\n inset 1px 0 0 transparent, inset -1px 0 0 transparent !important;\n }\n }\n"], ["\n width: 100%;\n border: none;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n overflow: hidden;\n background-color: ", ";\n ", " {\n border-bottom: none;\n height: 40px;\n }\n ", " {\n padding: 0 !important;\n box-shadow: inset 0 -1px 0 ", ",\n inset -1px 0 0 ", ";\n &.last-column {\n box-shadow: inset 0 -1px 0 ", ",\n inset 1px 0 0 transparent, inset -1px 0 0 transparent !important;\n }\n }\n"])), function (p) { return p.theme.colors.gray50; }, TableViewRow, TableViewCellContainer, function (p) { return p.theme.colors.gray300; }, function (p) { return p.theme.colors.gray300; }, function (p) { return p.theme.colors.gray300; });
|
|
27
|
+
export var TableView = styled(function (props) { return _jsx(TableViewBase, __assign({}, props)); })(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n width: 100%;\n border: none;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n overflow: hidden;\n background-color: ", ";\n ", " {\n border-bottom: none;\n height: 40px;\n }\n ", " {\n padding: 0 !important;\n box-shadow: inset 0 -1px 0 ", ",\n inset -1px 0 0 ", ";\n &.last-column {\n box-shadow: inset 0 -1px 0 ", ",\n inset 1px 0 0 transparent, inset -1px 0 0 transparent !important;\n }\n }\n"], ["\n width: 100%;\n border: none;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n overflow: hidden;\n background-color: ", ";\n ", " {\n border-bottom: none;\n height: 40px;\n }\n ", " {\n padding: 0 !important;\n box-shadow: inset 0 -1px 0 ", ",\n inset -1px 0 0 ", ";\n &.last-column {\n box-shadow: inset 0 -1px 0 ", ",\n inset 1px 0 0 transparent, inset -1px 0 0 transparent !important;\n }\n }\n"])), function (p) { return p.theme.colors.gray50; }, TableViewRow, TableViewCellContainer, function (p) { return p.theme.colors.gray300; }, function (p) { return p.theme.colors.gray300; }, function (p) { return p.theme.colors.gray300; });
|
|
16
28
|
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
|
|
@@ -2,6 +2,7 @@ import { Field, Record, TransformedRecord } from "../../../../types";
|
|
|
2
2
|
type TransformRecordArgs = {
|
|
3
3
|
record: Record;
|
|
4
4
|
fields: Field[];
|
|
5
|
+
possibleDateFormats?: string[];
|
|
5
6
|
};
|
|
6
|
-
export declare const transformRecord: ({ record, fields }: TransformRecordArgs) => TransformedRecord;
|
|
7
|
+
export declare const transformRecord: ({ record, fields, possibleDateFormats, }: TransformRecordArgs) => TransformedRecord;
|
|
7
8
|
export {};
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { fieldTransformations } from "./transformators";
|
|
2
|
-
var runTransformation = function (
|
|
1
|
+
import { datesDateTimesAndTimesTransformations, fieldTransformations, } from "./transformators";
|
|
2
|
+
var runTransformation = function (fieldValue, transformation, field, possibleDateFormats) {
|
|
3
3
|
var transformationType = transformation.transformation_type;
|
|
4
4
|
var transformerFunction = fieldTransformations[transformationType];
|
|
5
|
-
|
|
5
|
+
if (Object.keys(datesDateTimesAndTimesTransformations).includes(transformationType)) {
|
|
6
|
+
var dateTimeTransformFunction = transformerFunction;
|
|
7
|
+
return dateTimeTransformFunction(fieldValue, transformation, field, possibleDateFormats);
|
|
8
|
+
}
|
|
9
|
+
return transformerFunction(fieldValue, transformation, field);
|
|
6
10
|
};
|
|
7
11
|
export var transformRecord = function (_a) {
|
|
8
|
-
var record = _a.record, fields = _a.fields;
|
|
12
|
+
var record = _a.record, fields = _a.fields, possibleDateFormats = _a.possibleDateFormats;
|
|
9
13
|
var transformedRecords = {};
|
|
10
14
|
for (var _i = 0, fields_1 = fields; _i < fields_1.length; _i++) {
|
|
11
15
|
var currentField = fields_1[_i];
|
|
@@ -23,7 +27,7 @@ export var transformRecord = function (_a) {
|
|
|
23
27
|
var fieldWasTransformed = false;
|
|
24
28
|
for (var i = 0; i < fieldTransformations_1.length; i++) {
|
|
25
29
|
var currentTransformation = fieldTransformations_1[i];
|
|
26
|
-
var transformed = runTransformation(transformedField.transformed, currentTransformation, currentField);
|
|
30
|
+
var transformed = runTransformation(transformedField.transformed, currentTransformation, currentField, possibleDateFormats);
|
|
27
31
|
if (transformed.transformationWasNeeded) {
|
|
28
32
|
fieldWasTransformed = true;
|
|
29
33
|
transformedField = {
|
|
@@ -4,9 +4,15 @@ export type FieldTransformator = (fieldValue: any, transformation?: FieldTransfo
|
|
|
4
4
|
original: any;
|
|
5
5
|
transformed: any;
|
|
6
6
|
};
|
|
7
|
+
export type DateTimeTransformator = (fieldValue: any, transformation?: FieldTransformation, fieldOptions?: Field, possibleDateFormats?: string[]) => {
|
|
8
|
+
transformationWasNeeded: boolean;
|
|
9
|
+
original: any;
|
|
10
|
+
transformed: any;
|
|
11
|
+
};
|
|
7
12
|
export type FieldTransformations = Partial<{
|
|
8
|
-
[key: string]: FieldTransformator;
|
|
13
|
+
[key: string]: FieldTransformator | DateTimeTransformator;
|
|
9
14
|
}>;
|
|
15
|
+
export declare const datesDateTimesAndTimesTransformations: FieldTransformations;
|
|
10
16
|
export declare const fieldTransformations: {
|
|
11
|
-
[x: string]: FieldTransformator;
|
|
17
|
+
[x: string]: FieldTransformator | DateTimeTransformator;
|
|
12
18
|
};
|
|
@@ -9,17 +9,7 @@ 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
|
-
};
|
|
21
12
|
import { DateTime } from "luxon";
|
|
22
|
-
import { datePatterns, dateTimePatterns, timePatterns, } from "../../../../common/datePatterns";
|
|
23
13
|
var isTransformationNeeded = function (fieldValue, transformedValue) { return ({
|
|
24
14
|
transformationWasNeeded: fieldValue !== transformedValue,
|
|
25
15
|
original: fieldValue,
|
|
@@ -89,11 +79,9 @@ var stringFieldTransformations = {
|
|
|
89
79
|
return isTransformationNeeded(fieldValue, transformedValue);
|
|
90
80
|
},
|
|
91
81
|
};
|
|
92
|
-
var parseDate = function (date) {
|
|
82
|
+
var parseDate = function (date, possibleFormats) {
|
|
93
83
|
if (!date)
|
|
94
84
|
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
85
|
for (var i = 0; i < possibleFormats.length; i++) {
|
|
98
86
|
var format = possibleFormats[i];
|
|
99
87
|
try {
|
|
@@ -108,14 +96,14 @@ var parseDate = function (date) {
|
|
|
108
96
|
}
|
|
109
97
|
return null;
|
|
110
98
|
};
|
|
111
|
-
var datesDateTimesAndTimesTransformations = {
|
|
112
|
-
autoformat: function (fieldValue, _, fieldOptions) {
|
|
99
|
+
export var datesDateTimesAndTimesTransformations = {
|
|
100
|
+
autoformat: function (fieldValue, _, fieldOptions, possibleDateFormats) {
|
|
113
101
|
var cleanFieldValue = fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.replace(/"/g, "");
|
|
114
102
|
var normalizedFieldValue = cleanFieldValue === null || cleanFieldValue === void 0 ? void 0 : cleanFieldValue.replace(/-/g, "/");
|
|
115
103
|
var isUnixTimestamp = /^\d+$/.test(normalizedFieldValue);
|
|
116
104
|
var luxonDate = isUnixTimestamp
|
|
117
105
|
? DateTime.fromSeconds(Number(normalizedFieldValue))
|
|
118
|
-
: parseDate(normalizedFieldValue);
|
|
106
|
+
: parseDate(normalizedFieldValue, possibleDateFormats);
|
|
119
107
|
var pattern = fieldOptions === null || fieldOptions === void 0 ? void 0 : fieldOptions.pattern;
|
|
120
108
|
var defaultObj = {
|
|
121
109
|
transformationWasNeeded: false,
|