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.
Files changed (129) hide show
  1. package/lib/esm/Importer/ImporterWithContext.js +38 -7
  2. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +1 -1
  3. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +4 -3
  4. package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +14 -9
  5. package/lib/esm/Importer/PreviewFirstTime.js +1 -1
  6. package/lib/esm/Importer/Review/ReviewContextProvider.d.ts +6 -6
  7. package/lib/esm/Importer/Review/ReviewContextProvider.js +51 -223
  8. package/lib/esm/Importer/Review/ReviewWithContext.js +2 -2
  9. package/lib/esm/Importer/Stepper/StepperSubmitModal.d.ts +2 -1
  10. package/lib/esm/Importer/Stepper/StepperSubmitModal.js +4 -2
  11. package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +1 -1
  12. package/lib/esm/Importer/Stepper/index.js +20 -69
  13. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.d.ts +2 -1
  14. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +14 -86
  15. package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +11 -3
  16. package/lib/esm/Importer/Uploader/HeadersPreview.js +1 -1
  17. package/lib/esm/Importer/common/Spreadsheet/DataSetContextProvider/index.d.ts +16 -0
  18. package/lib/esm/Importer/common/Spreadsheet/DataSetContextProvider/index.js +63 -0
  19. package/lib/esm/Importer/common/Spreadsheet/DuplicateDataContextProvider/index.d.ts +18 -0
  20. package/lib/esm/Importer/common/Spreadsheet/DuplicateDataContextProvider/index.js +101 -0
  21. package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.d.ts +29 -0
  22. package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.js +150 -0
  23. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.d.ts +6 -4
  24. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +37 -37
  25. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/hashCalculators.d.ts +6 -0
  26. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/hashCalculators.js +138 -0
  27. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +7 -29
  28. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +11 -193
  29. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useBatchProcessing.d.ts +5 -0
  30. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useBatchProcessing.js +72 -0
  31. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.d.ts +4 -0
  32. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.js +46 -0
  33. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +2 -1
  34. package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.d.ts +31 -0
  35. package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.js +304 -0
  36. package/lib/esm/Importer/common/Spreadsheet/common/index.js +5 -4
  37. package/lib/esm/Importer/common/Spreadsheet/common/types.d.ts +2 -3
  38. package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.d.ts +0 -2
  39. package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.js +26 -11
  40. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +21 -13
  41. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +35 -36
  42. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.js +3 -3
  43. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +5 -1
  44. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +44 -18
  45. package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.js +1 -2
  46. package/lib/esm/Importer/common/Spreadsheet/index.d.ts +0 -1
  47. package/lib/esm/Importer/common/Spreadsheet/index.js +1 -84
  48. package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +1 -2
  49. package/lib/esm/Importer/common/Spreadsheet/styles.js +13 -1
  50. package/lib/esm/Importer/common/Spreadsheet/transformation/index.d.ts +2 -1
  51. package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +9 -5
  52. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.d.ts +8 -2
  53. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +4 -16
  54. package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.d.ts +5 -0
  55. package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.js +81 -0
  56. package/lib/esm/Importer/common/Spreadsheet/validation/index.d.ts +5 -3
  57. package/lib/esm/Importer/common/Spreadsheet/validation/index.js +13 -17
  58. package/lib/esm/Importer/common/Spreadsheet/validation/validators.d.ts +3 -2
  59. package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +16 -7
  60. package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +4 -2
  61. package/lib/esm/Importer/contexts/ImporterContextProvider.js +121 -13
  62. package/lib/esm/Importer/data/index.d.ts +1 -0
  63. package/lib/esm/Importer/data/index.js +44 -5
  64. package/lib/esm/Importer/hooks/useExportDataToFile.d.ts +5 -0
  65. package/lib/esm/Importer/hooks/useExportDataToFile.js +54 -0
  66. package/lib/esm/Importer/hooks/useSubmitToServer.d.ts +7 -0
  67. package/lib/esm/Importer/hooks/useSubmitToServer.js +192 -0
  68. package/lib/esm/common/EventManagerContextProvider/index.d.ts +22 -0
  69. package/lib/esm/common/EventManagerContextProvider/index.js +38 -0
  70. package/lib/esm/common/FileUploadDropzone/ImporterDropzone.d.ts +16 -0
  71. package/lib/esm/common/FileUploadDropzone/ImporterDropzone.js +108 -0
  72. package/lib/esm/common/FileUploadDropzone/index.d.ts +1 -0
  73. package/lib/esm/common/FileUploadDropzone/index.js +1 -0
  74. package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.js +55 -41
  75. package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +25 -16
  76. package/lib/esm/common/Table/TableActions/ExportData.js +5 -3
  77. package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +38 -9
  78. package/lib/esm/common/Table/TableActions/RowFilters.js +53 -5
  79. package/lib/esm/common/Table/TableActions/SearchRows.js +3 -1
  80. package/lib/esm/common/Table/TableActions/TableActions.js +2 -1
  81. package/lib/esm/common/Table/TableActions/TableActions.styles.js +1 -1
  82. package/lib/esm/common/Table/TableActions/TransformedRecordsCount.d.ts +1 -0
  83. package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +25 -17
  84. package/lib/esm/common/Table/TableActions/ValidationProgress.d.ts +2 -0
  85. package/lib/esm/common/Table/TableActions/ValidationProgress.js +22 -0
  86. package/lib/esm/common/Table/TableView/TableRows/TableRow.d.ts +1 -1
  87. package/lib/esm/common/Table/TableView/TableRows/TableRow.js +2 -2
  88. package/lib/esm/common/Table/TableView/TableRows/index.js +21 -6
  89. package/lib/esm/common/Table/TableView/index.d.ts +1 -1
  90. package/lib/esm/common/Table/TableView/index.js +6 -15
  91. package/lib/esm/common/Table/TableView/types.d.ts +8 -9
  92. package/lib/esm/common/Table/index.d.ts +2 -1
  93. package/lib/esm/common/Table/index.js +2 -2
  94. package/lib/esm/common/Toast.js +3 -2
  95. package/lib/esm/common/TooltipProvider.d.ts +2 -0
  96. package/lib/esm/common/TooltipProvider.js +12 -9
  97. package/lib/esm/common/buttons.d.ts +5 -1
  98. package/lib/esm/common/buttons.js +13 -7
  99. package/lib/esm/common/columnsTransformations.js +1 -1
  100. package/lib/esm/common/datePatterns.d.ts +1 -0
  101. package/lib/esm/common/datePatterns.js +10 -0
  102. package/lib/esm/common/icons/index.d.ts +1 -0
  103. package/lib/esm/common/icons/index.js +1 -0
  104. package/lib/esm/common/index.d.ts +1 -0
  105. package/lib/esm/common/index.js +1 -0
  106. package/lib/esm/common/inputs/Autocomplete.js +1 -1
  107. package/lib/esm/locales/de.d.ts +1 -1
  108. package/lib/esm/locales/de.js +1 -1
  109. package/lib/esm/locales/en.d.ts +1 -1
  110. package/lib/esm/locales/en.js +4 -4
  111. package/lib/esm/locales/es.d.ts +1 -1
  112. package/lib/esm/locales/es.js +1 -1
  113. package/lib/esm/locales/fr.d.ts +1 -1
  114. package/lib/esm/locales/fr.js +1 -1
  115. package/lib/esm/types.d.ts +20 -5
  116. package/lib/main.js +2 -2
  117. package/package.json +6 -4
  118. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.d.ts +0 -8
  119. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +0 -36
  120. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.d.ts +0 -5
  121. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +0 -19
  122. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.d.ts +0 -3
  123. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.js +0 -14
  124. package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +0 -33
  125. package/lib/esm/Importer/common/Spreadsheet/hooks.js +0 -256
  126. package/lib/esm/common/Table/TableActions/FilterByErrors/functions.d.ts +0 -11
  127. package/lib/esm/common/Table/TableActions/FilterByErrors/functions.js +0 -35
  128. package/lib/esm/common/Table/TableActions/hooks.d.ts +0 -18
  129. 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(), data = _b.data, selectedRows = _b.selectedRows, options = _b.options, lastClickedIndexRef = _b.lastClickedIndexRef, setSelectedRows = _b.setSelectedRows, checkboxColumnWidth = _b.checkboxColumnWidth, isTransformTooltipOpened = _b.isTransformTooltipOpened;
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 data.filter(function (row) { return !rowIsEmpty(row); }); }, [
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, _b;
67
+ var _a;
68
68
  if (isTransformTooltipOpened)
69
69
  return;
70
- var lastRowMetaId = data[data.length - 1]._meta.id;
71
- var isLastRow = rowMetaId === lastRowMetaId;
72
- var isLastRowAndEmpty = isLastRow && rowIsEmpty(data[rowIndex]);
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(data[rowIndex]))
77
- setSelectedRows([(_b = (_a = data[rowIndex]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.id]);
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, _b; return __spreadArray(__spreadArray([], prev, true), [(_b = (_a = data[rowIndex]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.id], false); });
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, _b; return row !== ((_b = (_a = data[rowIndex]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.id); });
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, _b;
93
+ var _a;
92
94
  if (isTransformTooltipOpened)
93
95
  return;
94
- var clickedRowId = (_b = (_a = data[rowIndex]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.id;
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 = data[data.length - 1]._meta.id;
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(data[data.length - 1]));
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 = data.find(function (row) { var _a; return ((_a = row === null || row === void 0 ? void 0 : row._meta) === null || _a === void 0 ? void 0 : _a.id) === lastSelectedRowId_1; });
114
- var clickedRow = data[rowIndex];
115
- var rangeStartIndex = data.indexOf(lastSelectedRow);
116
- var rangeEndIndex = data.indexOf(clickedRow);
117
- var range = data.slice(Math.min(rangeStartIndex, rangeEndIndex), Math.max(rangeStartIndex, rangeEndIndex) + 1);
118
- var rangeIds = range.map(function (row) { return row === null || row === void 0 ? void 0 : row._meta.id; });
119
- var lastRowId_2 = data[data.length - 1]._meta.id;
120
- var isLastRowEmpty_1 = rowIsEmpty(data[data.length - 1]);
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 = data
134
- .filter(function (row) {
135
- var isLastRow = row._meta.id === data[data.length - 1]._meta.id;
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 = (_c = (_b = data[rowIndex]) === null || _b === void 0 ? void 0 : _b._meta) === null || _c === void 0 ? void 0 : _c.id;
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 === data.length - 1 }, { children: [_jsx(CheckboxCell, { rowIndex: rowIndex }), _jsx(RowNumbersCell, { rowIndex: rowIndex })] }), 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
- (data === null || data === void 0 ? void 0 : data.length) > 0 &&
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: data.length, height: height - spreadsheetHeaderHeightPx }, { children: Cell })));
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 data = useSpreadsheetContext().data;
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 === data.length - 1 }, { children: _jsx(Div, __assign({ truncateText: true, textAlignCenter: true, body2: true }, { children: rowIndex + 1 })) }), 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: data.length }, { children: Cell }))] })));
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 || "", onChange: function (_a) {
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 { parseValue } from "../../common";
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 _a = useSpreadsheetContext(), updateRecord = _a.updateRecord, errors = _a.errors, warnings = _a.warnings;
62
- var _b = useState(record[name]), value = _b[0], setValue = _b[1];
63
- var validationError = get(errors, "".concat(record._meta.id, ".").concat(name), null);
64
- var validationWarning = get(warnings, "".concat(record._meta.id, ".").concat(name), null);
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
- if (record[name] !== value) {
67
- setValue(record[name]);
68
- }
69
- }, [record[name]]);
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 newRecord;
72
- var _a;
73
- return __generator(this, function (_b) {
74
- newRecord = __assign(__assign({}, record), (_a = {}, _a[name] = parseValue(fieldType, value), _a));
75
- updateRecord(newRecord);
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
- }); }, 50), [record]);
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: !!validationError, hasWarning: !!validationWarning, isHighlighted: isHighlighted, expandedFieldWidth: expandedFieldWidth, defaultFieldWidth: defaultFieldWidth, shouldExpandInput: shouldExpandInput, isReadOnly: isReadOnly, className: "input-content" }, { children: children })) })) })) })));
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] = EmailInput,
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
- var getDefaultSortCompareFn = useFieldSorting().getDefaultSortCompareFn;
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<import("react").MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, setSortBy, rowWidthScalingFactor, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, isDraggable, checkboxColumnWidth, isFiltering, ...props }: import("../../../common/Table/TableView/types").TableViewProps) => JSX.Element>, import("styled-components").DefaultTheme, {}, never>;
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 (record, transformation, field) {
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
- return transformerFunction(record, transformation, field);
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,
@@ -0,0 +1,5 @@
1
+ import { SortBy } from "../../../common";
2
+ import { Record } from "../../../types";
3
+ export declare const useFieldSorting: () => {
4
+ getDefaultSortCompareFn: (sortBy: SortBy) => (a: Record, b: Record) => number;
5
+ };