fuse-importer 0.1.4-testing → 0.1.5-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 (120) 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 +43 -17
  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/useFieldSorting.d.ts +5 -0
  51. package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.js +81 -0
  52. package/lib/esm/Importer/common/Spreadsheet/validation/index.d.ts +5 -3
  53. package/lib/esm/Importer/common/Spreadsheet/validation/index.js +13 -17
  54. package/lib/esm/Importer/common/Spreadsheet/validation/validators.d.ts +3 -2
  55. package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +16 -7
  56. package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +4 -2
  57. package/lib/esm/Importer/contexts/ImporterContextProvider.js +121 -13
  58. package/lib/esm/Importer/data/index.js +7 -5
  59. package/lib/esm/Importer/hooks/useExportDataToFile.d.ts +5 -0
  60. package/lib/esm/Importer/hooks/useExportDataToFile.js +54 -0
  61. package/lib/esm/Importer/hooks/useSubmitToServer.d.ts +7 -0
  62. package/lib/esm/Importer/hooks/useSubmitToServer.js +192 -0
  63. package/lib/esm/common/EventManagerContextProvider/index.d.ts +22 -0
  64. package/lib/esm/common/EventManagerContextProvider/index.js +38 -0
  65. package/lib/esm/common/FileUploadDropzone/ImporterDropzone.d.ts +16 -0
  66. package/lib/esm/common/FileUploadDropzone/ImporterDropzone.js +108 -0
  67. package/lib/esm/common/FileUploadDropzone/index.d.ts +1 -0
  68. package/lib/esm/common/FileUploadDropzone/index.js +1 -0
  69. package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.js +55 -41
  70. package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +25 -16
  71. package/lib/esm/common/Table/TableActions/ExportData.js +5 -3
  72. package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +36 -9
  73. package/lib/esm/common/Table/TableActions/RowFilters.js +53 -5
  74. package/lib/esm/common/Table/TableActions/SearchRows.js +3 -1
  75. package/lib/esm/common/Table/TableActions/TableActions.js +2 -1
  76. package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +16 -9
  77. package/lib/esm/common/Table/TableActions/ValidationProgress.d.ts +2 -0
  78. package/lib/esm/common/Table/TableActions/ValidationProgress.js +22 -0
  79. package/lib/esm/common/Table/TableView/TableRows/TableRow.d.ts +1 -1
  80. package/lib/esm/common/Table/TableView/TableRows/TableRow.js +2 -2
  81. package/lib/esm/common/Table/TableView/TableRows/index.js +21 -6
  82. package/lib/esm/common/Table/TableView/index.d.ts +1 -1
  83. package/lib/esm/common/Table/TableView/index.js +6 -15
  84. package/lib/esm/common/Table/TableView/types.d.ts +8 -9
  85. package/lib/esm/common/Table/index.d.ts +2 -1
  86. package/lib/esm/common/Table/index.js +2 -2
  87. package/lib/esm/common/Toast.js +3 -2
  88. package/lib/esm/common/TooltipProvider.d.ts +2 -0
  89. package/lib/esm/common/TooltipProvider.js +12 -9
  90. package/lib/esm/common/buttons.d.ts +5 -1
  91. package/lib/esm/common/buttons.js +13 -7
  92. package/lib/esm/common/columnsTransformations.js +1 -1
  93. package/lib/esm/common/icons/index.d.ts +1 -0
  94. package/lib/esm/common/icons/index.js +1 -0
  95. package/lib/esm/common/index.d.ts +1 -0
  96. package/lib/esm/common/index.js +1 -0
  97. package/lib/esm/common/inputs/Autocomplete.js +1 -1
  98. package/lib/esm/locales/de.d.ts +1 -1
  99. package/lib/esm/locales/de.js +1 -1
  100. package/lib/esm/locales/en.d.ts +1 -1
  101. package/lib/esm/locales/en.js +4 -4
  102. package/lib/esm/locales/es.d.ts +1 -1
  103. package/lib/esm/locales/es.js +1 -1
  104. package/lib/esm/locales/fr.d.ts +1 -1
  105. package/lib/esm/locales/fr.js +1 -1
  106. package/lib/esm/types.d.ts +20 -5
  107. package/lib/main.js +2 -2
  108. package/package.json +6 -4
  109. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.d.ts +0 -8
  110. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +0 -36
  111. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.d.ts +0 -5
  112. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +0 -19
  113. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.d.ts +0 -3
  114. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.js +0 -14
  115. package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +0 -33
  116. package/lib/esm/Importer/common/Spreadsheet/hooks.js +0 -256
  117. package/lib/esm/common/Table/TableActions/FilterByErrors/functions.d.ts +0 -11
  118. package/lib/esm/common/Table/TableActions/FilterByErrors/functions.js +0 -35
  119. package/lib/esm/common/Table/TableActions/hooks.d.ts +0 -18
  120. package/lib/esm/common/Table/TableActions/hooks.js +0 -41
@@ -1,15 +1,44 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import * as S from "./FilterByErrors.styles";
3
- import { useSpreadsheetContext } from "../../../../Importer";
4
- import { formatErrors, getUniqueErrors } from "./functions";
2
+ import { useEffect, useState } from "react";
5
3
  import { useTranslation } from "react-i18next";
4
+ import { useSpreadsheetContext } from "../../../../Importer";
5
+ import { useFilteredDataContext } from "../../../../Importer/common/Spreadsheet/FilteredDataContextProvider";
6
+ import { useValidationContext } from "../../../../Importer/common/Spreadsheet/ValidationContextProvider";
6
7
  import { addToast } from "../../../../common/Toast";
7
- import { useState } from "react";
8
+ import { useEventManagerContext } from "../../../EventManagerContextProvider";
9
+ import * as S from "./FilterByErrors.styles";
8
10
  export var FilterByErrors = function () {
9
11
  var _a, _b;
10
- var _c = useSpreadsheetContext(), errors = _c.errors, fields = _c.fields, spreadsheetFilter = _c.spreadsheetFilter, resetSpreadsheetFilter = _c.resetSpreadsheetFilter, filterRecordsByFieldErrors = _c.filterRecordsByFieldErrors, isTransformTooltipOpened = _c.isTransformTooltipOpened;
12
+ var _c = useFilteredDataContext(), spreadsheetFilter = _c.spreadsheetFilter, resetSpreadsheetFilter = _c.resetSpreadsheetFilter, filterRecordsByFieldErrors = _c.filterRecordsByFieldErrors;
13
+ var _d = useEventManagerContext(), on = _d.on, off = _d.off, EVENTS = _d.EVENTS;
14
+ var _e = useSpreadsheetContext(), fields = _e.fields, isTransformTooltipOpened = _e.isTransformTooltipOpened;
15
+ var columnsWithErrorCounts = useValidationContext().columnsWithErrorCounts;
11
16
  var t = useTranslation("review").t;
12
- var _d = useState(false), isMenuOpened = _d[0], setIsMenuOpened = _d[1];
17
+ var _f = useState([]), errorArray = _f[0], setErrorArray = _f[1];
18
+ var _g = useState(false), isMenuOpened = _g[0], setIsMenuOpened = _g[1];
19
+ useEffect(function () {
20
+ var listener = function () {
21
+ var getErrorArray = function () {
22
+ var errorArray = [];
23
+ var _loop_1 = function (key, value) {
24
+ if (value > 0) {
25
+ var field = fields.find(function (f) { return f.name === key; });
26
+ errorArray.push({ label: field.label, value: field.name });
27
+ }
28
+ };
29
+ for (var _i = 0, _a = Object.entries(columnsWithErrorCounts.current); _i < _a.length; _i++) {
30
+ var _b = _a[_i], key = _b[0], value = _b[1];
31
+ _loop_1(key, value);
32
+ }
33
+ return errorArray;
34
+ };
35
+ setErrorArray(getErrorArray());
36
+ };
37
+ on(EVENTS.UPDATE_COLUMN_ERROR_COUNT, listener);
38
+ return function () {
39
+ off(EVENTS.UPDATE_COLUMN_ERROR_COUNT, listener);
40
+ };
41
+ }, []);
13
42
  var prefix = t("table_actions.filter_by_errors.filter_by_errors");
14
43
  var search_or_select = t("table_actions.filter_by_errors.search_or_select");
15
44
  var selectedErrorToFilter = ((_a = spreadsheetFilter === null || spreadsheetFilter === void 0 ? void 0 : spreadsheetFilter.byColumn) === null || _a === void 0 ? void 0 : _a.field) || null;
@@ -23,14 +52,12 @@ export var FilterByErrors = function () {
23
52
  if (selected) {
24
53
  var label = getSelectedErrorLabel(selected);
25
54
  filterRecordsByFieldErrors(selected);
26
- addToast("Showing only the rows with error on the ".concat(label, " column"), "success");
55
+ addToast("Showing rows with an error in the ".concat(label, " column"), "success");
27
56
  }
28
57
  else {
29
58
  resetSpreadsheetFilter();
30
59
  }
31
60
  };
32
- var uniqueErrors = getUniqueErrors(fields, errors);
33
- var errorArray = formatErrors(fields, uniqueErrors);
34
61
  // the average size of each character in the input (in px)
35
62
  var widthPerCharacter = 5.8;
36
63
  var amountOfCharacters = prefix.length + ((_b = getSelectedErrorLabel(selectedErrorToFilter)) === null || _b === void 0 ? void 0 : _b.length);
@@ -14,10 +14,16 @@ var __assign = (this && this.__assign) || function () {
14
14
  return __assign.apply(this, arguments);
15
15
  };
16
16
  import { Fragment as _Fragment, jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
17
+ import { useEffect, useState } from "react";
18
+ import { useTranslation } from "react-i18next";
17
19
  import styled, { css } from "styled-components";
18
20
  import { useSpreadsheetContext } from "../../../Importer";
21
+ import { useDataSetContext } from "../../../Importer/common/Spreadsheet/DataSetContextProvider";
22
+ import { useDuplicateDataContext } from "../../../Importer/common/Spreadsheet/DuplicateDataContextProvider";
23
+ import { useFilteredDataContext } from "../../../Importer/common/Spreadsheet/FilteredDataContextProvider";
24
+ import { useValidationContext } from "../../../Importer/common/Spreadsheet/ValidationContextProvider";
19
25
  import { Div } from "../../../styled";
20
- import { useTranslation } from "react-i18next";
26
+ import { useEventManagerContext } from "../../EventManagerContextProvider";
21
27
  var FilterContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 6px 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n ", ";\n ", "\n"], ["\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 6px 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n ", ";\n ", "\n"])), function (p) { return p.theme.css.body3; }, function (p) {
22
28
  return p.isSelected && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n border-radius: 4px;\n "], ["\n background: ", ";\n color: ", ";\n border-radius: 4px;\n "])), function (p) { return p.theme.colors.black; }, function (p) { return p.theme.colors.white; });
23
29
  });
@@ -29,18 +35,60 @@ var Wrapper = styled(Div)(templateObject_5 || (templateObject_5 = __makeTemplate
29
35
  var FilteredDataCount = styled(Div)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px 8px;\n margin-left: -3px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n"], ["\n background: ", ";\n color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px 8px;\n margin-left: -3px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n"])), function (p) { return p.theme.colors.highlight01; }, function (p) { return p.theme.colors.black; });
30
36
  var Filter = function (_a) {
31
37
  var label = _a.label, count = _a.count, isSelected = _a.isSelected, onClick = _a.onClick, isDisabled = _a.isDisabled;
32
- var _b = useSpreadsheetContext(), filteredInputValue = _b.filteredInputValue, filteredDataCount = _b.filteredDataCount;
38
+ var _b = useFilteredDataContext(), filteredInputValue = _b.filteredInputValue, filteredDataIds = _b.filteredDataIds;
33
39
  var labelToId = function (label) {
34
40
  return label.toLowerCase().replace(/\s/g, "_") + "_filter";
35
41
  };
36
- return (_jsxs(Div, __assign({ disabledWhen: isDisabled, dflex: true, clickable: true, onClick: function () { return !isDisabled && onClick(); }, "data-test-id": labelToId(label) }, { children: [_jsxs(FilterContainer, __assign({ isSelected: isSelected }, { children: [label, count >= 0 && _jsxs(_Fragment, { children: ["\u00A0(", count, ")"] })] })), isSelected && filteredInputValue !== "" && (_jsx(FilteredDataCount, { children: _jsx(Div, __assign({ minw: 14, centered: true }, { children: filteredDataCount })) }))] })));
42
+ return (_jsxs(Div, __assign({ disabledWhen: isDisabled, dflex: true, clickable: true, onClick: function () { return !isDisabled && onClick(); }, "data-test-id": labelToId(label) }, { children: [_jsxs(FilterContainer, __assign({ isSelected: isSelected }, { children: [label, count >= 0 && _jsxs(_Fragment, { children: ["\u00A0(", count.toLocaleString(), ")"] })] })), isSelected && filteredInputValue !== "" && (_jsx(FilteredDataCount, { children: _jsx(Div, __assign({ minw: 14, centered: true }, { children: filteredDataIds.length })) }))] })));
37
43
  };
38
44
  export var RowFilters = function () {
39
- var _a = useSpreadsheetContext(), spreadsheetFilter = _a.spreadsheetFilter, errors = _a.errors, filterRecordsByRowType = _a.filterRecordsByRowType, recordsWithValuesCount = _a.recordsWithValuesCount, isTransformTooltipOpened = _a.isTransformTooltipOpened, duplicateRecords = _a.duplicateRecords;
45
+ var _a = useFilteredDataContext(), spreadsheetFilter = _a.spreadsheetFilter, filterRecordsByRowType = _a.filterRecordsByRowType;
46
+ var _b = useDuplicateDataContext(), duplicateRecordIds = _b.duplicateRecordIds, calculateDuplicateRecords = _b.calculateDuplicateRecords;
47
+ var invalidRowsCountRef = useValidationContext().invalidRowsCountRef;
48
+ var isTransformTooltipOpened = useSpreadsheetContext().isTransformTooltipOpened;
49
+ var _c = useState(invalidRowsCountRef.current), invalidRowsCount = _c[0], setInvalidRowsCount = _c[1];
50
+ var _d = useDataSetContext(), dataSetLength = _d.dataSetLength, emptyRecordIds = _d.emptyRecordIds;
51
+ var _e = useEventManagerContext(), on = _e.on, off = _e.off, EVENTS = _e.EVENTS;
40
52
  var t = useTranslation("review").t;
41
53
  var all_rows = t("table_actions.filters_by_rows.all_rows");
42
54
  var invalid_rows = t("table_actions.filters_by_rows.invalid_rows");
43
55
  var duplicates = t("table_actions.filters_by_rows.duplicates");
44
- return (_jsx(Wrapper, __assign({ isDisabled: isTransformTooltipOpened }, { children: _jsxs(Container, { children: [_jsx(Filter, { isSelected: spreadsheetFilter.byRow === "all", label: all_rows, count: recordsWithValuesCount, onClick: function () { return filterRecordsByRowType("all"); } }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "invalid", label: invalid_rows, count: Object.values(errors).length, onClick: function () { return filterRecordsByRowType("invalid"); } }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "duplicates", label: duplicates, count: duplicateRecords.count, onClick: function () { return filterRecordsByRowType("duplicates"); } })] }) })));
56
+ var _f = useState(0), recordsWithValuesCount = _f[0], setRecordsWithValuesCount = _f[1];
57
+ var calculateRecordsWithValuesCount = function () {
58
+ setRecordsWithValuesCount(dataSetLength.current - emptyRecordIds.current.size);
59
+ };
60
+ useEffect(function () {
61
+ var listener = function () {
62
+ setInvalidRowsCount(invalidRowsCountRef.current);
63
+ };
64
+ on(EVENTS.UPDATE_TOTAL_ERROR_COUNT, listener);
65
+ return function () {
66
+ off(EVENTS.UPDATE_TOTAL_ERROR_COUNT, listener);
67
+ };
68
+ }, []);
69
+ useEffect(function () {
70
+ calculateRecordsWithValuesCount();
71
+ on(EVENTS.UPDATE_TOTAL_ROW_COUNT, calculateRecordsWithValuesCount);
72
+ return function () {
73
+ off(EVENTS.UPDATE_TOTAL_ROW_COUNT, calculateRecordsWithValuesCount);
74
+ };
75
+ }, []);
76
+ var onDuplicatesSelected = function () {
77
+ calculateDuplicateRecords();
78
+ filterRecordsByRowType("duplicates");
79
+ };
80
+ var onAllSelected = function () {
81
+ if (spreadsheetFilter.byRow === "duplicates") {
82
+ calculateDuplicateRecords();
83
+ }
84
+ filterRecordsByRowType("all");
85
+ };
86
+ var onInvalidSelected = function () {
87
+ if (spreadsheetFilter.byRow === "duplicates") {
88
+ calculateDuplicateRecords();
89
+ }
90
+ filterRecordsByRowType("invalid");
91
+ };
92
+ return (_jsx(Wrapper, __assign({ isDisabled: isTransformTooltipOpened }, { children: _jsxs(Container, { children: [_jsx(Filter, { isSelected: spreadsheetFilter.byRow === "all", label: all_rows, count: recordsWithValuesCount, onClick: function () { return onAllSelected(); } }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "invalid", label: invalid_rows, count: invalidRowsCount, onClick: function () { return onInvalidSelected(); } }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "duplicates", label: duplicates, count: duplicateRecordIds.size, onClick: function () { return onDuplicatesSelected(); } })] }) })));
45
93
  };
46
94
  var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -24,6 +24,7 @@ import { textStyles } from "../../../styled/theme/textStyles";
24
24
  import { TooltipProvider } from "../../../common/TooltipProvider";
25
25
  import { useTranslation } from "react-i18next";
26
26
  import { Div } from "../../../styled";
27
+ import { useFilteredDataContext } from "../../../Importer/common/Spreadsheet/FilteredDataContextProvider";
27
28
  var Wrapper = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n gap: 8px;\n height: 24px;\n overflow: hidden;\n padding: 8px;\n position: relative;\n transition: width 0.25s ease-in-out;\n width: ", ";\n"], ["\n background: ", ";\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n gap: 8px;\n height: 24px;\n overflow: hidden;\n padding: 8px;\n position: relative;\n transition: width 0.25s ease-in-out;\n width: ", ";\n"])), function (_a) {
28
29
  var isOpen = _a.isOpen;
29
30
  return (isOpen ? colors.orange50 : "none");
@@ -64,7 +65,8 @@ var SearchInput = function (_a) {
64
65
  };
65
66
  export var SearchRows = function (_a) {
66
67
  var _b = _a.testId, testId = _b === void 0 ? "ta-search-rows" : _b;
67
- var _c = useSpreadsheetContext(), filteredInputValue = _c.filteredInputValue, setFilteredInputValue = _c.setFilteredInputValue, isTransformTooltipOpened = _c.isTransformTooltipOpened;
68
+ var _c = useFilteredDataContext(), filteredInputValue = _c.filteredInputValue, setFilteredInputValue = _c.setFilteredInputValue;
69
+ var isTransformTooltipOpened = useSpreadsheetContext().isTransformTooltipOpened;
68
70
  var handleChangeInputValue = function (value) {
69
71
  setFilteredInputValue(value);
70
72
  };
@@ -30,7 +30,8 @@ import { FilterByErrors } from "./FilterByErrors/FilterByErrors";
30
30
  import { RowFilters } from "./RowFilters";
31
31
  import { TransformedRecordsCount } from "./TransformedRecordsCount";
32
32
  import { CustomActions } from "./CustomActions";
33
+ import ValidationProgress from "./ValidationProgress";
33
34
  export var TableActions = function (_a) {
34
35
  var _b = _a.tableActionsHeight, tableActionsHeight = _b === void 0 ? defaultTableActionsHeightPx : _b, props = __rest(_a, ["tableActionsHeight"]);
35
- return (_jsxs(S.TableActionsContainer, __assign({ height: tableActionsHeight }, props, { children: [_jsxs(S.TableActionsContent, { children: [_jsx(SearchRows, {}), _jsx(RowFilters, {}), _jsx(FilterByErrors, {}), _jsxs(S.ButtonActionsContainer, { children: [_jsx(DeleteSelectedRows, {}), _jsx(ExportData, {}), _jsx(CustomActions, {})] })] }), _jsx(S.TableActionsInformations, { children: _jsx(TransformedRecordsCount, {}) })] })));
36
+ return (_jsxs(S.TableActionsContainer, __assign({ height: tableActionsHeight }, props, { children: [_jsxs(S.TableActionsContent, { children: [_jsx(SearchRows, {}), _jsx(RowFilters, {}), _jsx(FilterByErrors, {}), _jsxs(S.ButtonActionsContainer, { children: [_jsx(DeleteSelectedRows, {}), _jsx(ExportData, {}), _jsx(CustomActions, {})] })] }), _jsxs(S.TableActionsInformations, { children: [_jsx(ValidationProgress, {}), _jsx(TransformedRecordsCount, {})] })] })));
36
37
  };
@@ -22,6 +22,8 @@ import { Div, colors } from "../../../styled";
22
22
  import { CheckIcon } from "./icons";
23
23
  import { Button } from "../../../common/buttons";
24
24
  import { truncateString } from "../../../utils";
25
+ import { useDataSetContext } from "../../../Importer/common/Spreadsheet/DataSetContextProvider";
26
+ import { useValidationContext } from "../../../Importer/common/Spreadsheet/ValidationContextProvider";
25
27
  var formatToLocaleString = function (number) {
26
28
  return number.toLocaleString(undefined, {
27
29
  minimumFractionDigits: 0,
@@ -41,37 +43,42 @@ var Tooltip = function (_a) {
41
43
  }) })), transformedRowData && (_jsxs(Div, { children: [_jsx(Div, __assign({ mb: 5, label1: true, style: { color: colors.gray700 } }, { children: t("table_actions.transformed_records.example") })), _jsxs(ExampleCode, { children: [_jsx(Div, __assign({ body1: true }, { children: truncateString(transformedRowData === null || transformedRowData === void 0 ? void 0 : transformedRowData.transformed, 15) })), _jsx(Div, __assign({ body1: true, style: { textDecoration: "line-through" } }, { children: truncateString(transformedRowData === null || transformedRowData === void 0 ? void 0 : transformedRowData.original, 15) }))] })] })), _jsx(StyledButton, __assign({ buttonTextSmall: true, uppercase: true, onClick: onClose }, { children: "OK" }))] })));
42
44
  };
43
45
  export var TransformedRecordsCount = function () {
44
- var _a = useSpreadsheetContext(), data = _a.data, isTransformTooltipOpened = _a.isTransformTooltipOpened, setIsTransformTooltipOpened = _a.setIsTransformTooltipOpened;
46
+ var _a = useSpreadsheetContext(), filteredDataIds = _a.filteredDataIds, isTransformTooltipOpened = _a.isTransformTooltipOpened, setIsTransformTooltipOpened = _a.setIsTransformTooltipOpened;
47
+ var spreadsheetInitialized = useValidationContext().spreadsheetInitialized;
48
+ var getRecord = useDataSetContext().getRecord;
45
49
  var t = useTranslation("review").t;
46
50
  var tooltipWasAlreadyOpened = useRef(false);
47
51
  var transformedRecordsCount = useMemo(function () {
48
52
  var _a;
53
+ if (tooltipWasAlreadyOpened.current)
54
+ return;
49
55
  var counter = 0;
50
- for (var i = 0; i < data.length; i++) {
51
- var currentData = data[i];
56
+ for (var i = 0; i < filteredDataIds.length; i++) {
57
+ var currentData = getRecord(filteredDataIds[i]);
52
58
  var transformedObj = (_a = currentData === null || currentData === void 0 ? void 0 : currentData._meta) === null || _a === void 0 ? void 0 : _a.transformedRow;
53
59
  if (transformedObj) {
54
60
  counter += Object.keys(transformedObj).length;
55
61
  }
56
62
  }
57
63
  return counter;
58
- }, [data]);
64
+ }, [filteredDataIds]);
59
65
  useEffect(function () {
60
- if (tooltipWasAlreadyOpened.current)
66
+ if (tooltipWasAlreadyOpened.current || !spreadsheetInitialized)
61
67
  return;
62
68
  if (transformedRecordsCount > 0 && !isTransformTooltipOpened) {
63
69
  setIsTransformTooltipOpened(true);
64
70
  tooltipWasAlreadyOpened.current = true;
65
71
  }
66
- }, [transformedRecordsCount]);
72
+ }, [transformedRecordsCount, spreadsheetInitialized]);
67
73
  var handleCloseTooltip = function () {
68
74
  setIsTransformTooltipOpened(false);
69
75
  };
70
76
  var firstTransformedRow = useMemo(function () {
71
77
  var _a;
72
- for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
73
- var obj = data_1[_i];
74
- var transformedRow = (_a = obj === null || obj === void 0 ? void 0 : obj._meta) === null || _a === void 0 ? void 0 : _a.transformedRow;
78
+ for (var _i = 0, filteredDataIds_1 = filteredDataIds; _i < filteredDataIds_1.length; _i++) {
79
+ var id = filteredDataIds_1[_i];
80
+ var record = getRecord(id);
81
+ var transformedRow = (_a = record === null || record === void 0 ? void 0 : record._meta) === null || _a === void 0 ? void 0 : _a.transformedRow;
75
82
  if (transformedRow && Object.keys(transformedRow).length > 0) {
76
83
  return Object.values(transformedRow)[0];
77
84
  }
@@ -0,0 +1,2 @@
1
+ declare const ValidationProgress: () => JSX.Element;
2
+ export default ValidationProgress;
@@ -0,0 +1,22 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsxs as _jsxs, Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
13
+ import { useSpreadsheetContext } from "../../../Importer/common/Spreadsheet/SpreadsheetContextProvider";
14
+ import { useValidationContext } from "../../../Importer/common/Spreadsheet/ValidationContextProvider";
15
+ import { Div, Span } from "../../../styled/utils";
16
+ var ValidationProgress = function () {
17
+ var isReadOnly = useSpreadsheetContext().isReadOnly;
18
+ var validationPercentage = useValidationContext().validationPercentage;
19
+ var showValidationProgress = !isReadOnly && validationPercentage < 100;
20
+ return (_jsx(_Fragment, { children: showValidationProgress ? (_jsxs(Div, __assign({ w: 250, textAlignRight: true }, { children: ["Processing Data...", _jsxs(Span, __assign({ bold: true, ml: 5 }, { children: [validationPercentage, "%"] }))] }))) : (_jsx(_Fragment, {})) }));
21
+ };
22
+ export default ValidationProgress;
@@ -12,7 +12,7 @@ type Props = Pick<TableViewProps, "columns" | "onRowClick"> & {
12
12
  rowWidth: number;
13
13
  indexI: number;
14
14
  isLast?: boolean;
15
- getItemKey?: (row: any) => string;
15
+ getItemKey?: (id: string) => string;
16
16
  isRowSelected?: boolean;
17
17
  } & DivCSSProps;
18
18
  export declare const TableRow: ({ row, indexI, columns, isLast, onRowClick, getItemKey, rowWidth, isRowSelected, ...props }: Props) => JSX.Element;
@@ -34,7 +34,7 @@ export var Cell = React.memo(function (props) {
34
34
  var children = props.children, cellProps = __rest(props, ["children"]);
35
35
  return (_jsx(TableViewCellContainer, __assign({}, cellProps, { children: children })));
36
36
  }, areEqual);
37
- export var TableViewRow = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background-color: white;\n ", "\n ", "\n"], ["\n background-color: white;\n ", "\n ", "\n"])), function (p) {
37
+ export var TableViewRow = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background-color: white;\n ", "\n ", "\n\n &:hover {\n .shouldBeVisibleOnHover {\n opacity: 1;\n transition: opacity 0.25s ease;\n visibility: visible;\n }\n }\n"], ["\n background-color: white;\n ", "\n ", "\n\n &:hover {\n .shouldBeVisibleOnHover {\n opacity: 1;\n transition: opacity 0.25s ease;\n visibility: visible;\n }\n }\n"])), function (p) {
38
38
  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; });
39
39
  }, function (p) {
40
40
  return p.isHighlighted && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background: ", ";\n box-shadow: inset 0 0 0 3px ", ";\n\n .input-content {\n background: transparent;\n border: none;\n box-shadow: none;\n\n &,\n input {\n color: ", ";\n }\n }\n "], ["\n background: ", ";\n box-shadow: inset 0 0 0 3px ", ";\n\n .input-content {\n background: transparent;\n border: none;\n box-shadow: none;\n\n &,\n input {\n color: ", ";\n }\n }\n "])), p.theme.colors.blue100, p.theme.colors.blue500, p.theme.colors.gray1000);
@@ -43,7 +43,7 @@ export var TableRow = function (_a) {
43
43
  var row = _a.row, indexI = _a.indexI, columns = _a.columns, isLast = _a.isLast, onRowClick = _a.onRowClick, getItemKey = _a.getItemKey, rowWidth = _a.rowWidth, _b = _a.isRowSelected, isRowSelected = _b === void 0 ? false : _b, props = __rest(_a, ["row", "indexI", "columns", "isLast", "onRowClick", "getItemKey", "rowWidth", "isRowSelected"]);
44
44
  var isHighlighted = isRowSelected;
45
45
  var key = getItemKey ? getItemKey(row) : "".concat(indexI);
46
- return (_jsx(TableViewRow, __assign({ "data-test-id": "row-".concat(indexI), id: "row-id-".concat(key), dflex: true }, { isHighlighted: isHighlighted, isLast: isLast }, props, { children: columns.map(function (column, indexJ) {
46
+ return (_jsx(TableViewRow, __assign({ "data-test-id": "row-".concat(indexI), "data-cy": "rows", id: "row-id-".concat(key), dflex: true }, { isHighlighted: isHighlighted, isLast: isLast }, props, { children: columns.map(function (column, indexJ) {
47
47
  var Content = column.Content;
48
48
  var resolvedKey = "column-".concat(indexJ, "-row-").concat(key);
49
49
  var columnWidthPercentages = getColumnWidthsPx(columns, rowWidth);
@@ -20,18 +20,33 @@ import { TableRow } from "./TableRow";
20
20
  var Row = React.memo(function (_a) {
21
21
  var _b;
22
22
  var data = _a.data, rowIndex = _a.rowIndex, style = _a.style;
23
- var items = data.items, rowWidth = data.rowWidth, isDraggable = data.isDraggable, onRowClick = data.onRowClick, columns = data.columns, rowHeight = data.rowHeight, getItemKey = data.getItemKey;
24
- var item = items[rowIndex];
23
+ var items = data.items, dataRefIds = data.dataRefIds, rowWidth = data.rowWidth, isDraggable = data.isDraggable, onRowClick = data.onRowClick, columns = data.columns, rowHeight = data.rowHeight, getItemKey = data.getItemKey;
24
+ var item;
25
25
  var selectedRows = useSpreadsheetContext().selectedRows;
26
+ var rowCount = dataRefIds ? dataRefIds.ids.length : items.length;
27
+ var fistSelectedRowId = selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows[0];
28
+ var dataSetfirstSelectedRowIndex;
29
+ if (dataRefIds) {
30
+ var rowId = dataRefIds.ids[rowIndex];
31
+ item = dataRefIds.ref.current[rowId];
32
+ if ((selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.length) > 0)
33
+ dataSetfirstSelectedRowIndex = dataRefIds.ids.findIndex(function (id) { return fistSelectedRowId === id; });
34
+ }
35
+ else {
36
+ item = items[rowIndex];
37
+ if ((selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.length) > 0)
38
+ dataSetfirstSelectedRowIndex = items.findIndex(function (item) { var _a; return fistSelectedRowId === ((_a = item === null || item === void 0 ? void 0 : item._meta) === null || _a === void 0 ? void 0 : _a.id); });
39
+ }
26
40
  var isRowSelected = selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.includes((_b = item === null || item === void 0 ? void 0 : item._meta) === null || _b === void 0 ? void 0 : _b.id);
27
41
  var Container = isDraggable ? DraggableRow : Div;
28
42
  var containerProps = { style: style };
29
43
  if (isDraggable)
30
44
  containerProps = __assign(__assign({}, containerProps), { item: item });
31
- return (_jsx(Container, __assign({}, containerProps, { children: _jsx(TableRow, { rowWidth: rowWidth, columns: columns, onRowClick: onRowClick, h: rowHeight, row: item, indexI: rowIndex, isLast: rowIndex === items.length - 1, pRelative: true, getItemKey: getItemKey, isRowSelected: isRowSelected || false, className: rowIndex <
32
- items.findIndex(function (item) { var _a; return ((_a = item === null || item === void 0 ? void 0 : item._meta) === null || _a === void 0 ? void 0 : _a.id) === (selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows[0]); })
33
- ? "before-selected-row"
34
- : "" }) })));
45
+ return (_jsx(Container, __assign({}, containerProps, { children: _jsx(TableRow, { rowWidth: rowWidth, columns: columns, onRowClick: onRowClick, h: rowHeight, row: item, indexI: rowIndex, isLast: rowIndex === rowCount - 1, pRelative: true, getItemKey: getItemKey, isRowSelected: isRowSelected || false, className: (selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.length) === 0
46
+ ? ""
47
+ : rowIndex < dataSetfirstSelectedRowIndex
48
+ ? "before-selected-row"
49
+ : "" }) })));
35
50
  }, areEqual);
36
51
  var DraggableRow = React.memo(function (_a) {
37
52
  var item = _a.item, baseStyle = _a.style, children = _a.children;
@@ -8,4 +8,4 @@ type TableViewWrapperProps = {
8
8
  checkboxColumnWidth?: number;
9
9
  };
10
10
  export declare const TableViewWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps & TableViewWrapperProps, never>;
11
- export declare const TableView: React.MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, setSortBy, rowWidthScalingFactor, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, isDraggable, checkboxColumnWidth, isFiltering, ...props }: TableViewProps) => JSX.Element>;
11
+ export declare const TableView: React.MemoExoticComponent<({ data, dataRefIds, columns, pageSize, onRowClick, sortBy, isLoading, setSortBy, rowWidthScalingFactor, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, isDraggable, checkboxColumnWidth, isFiltering, ...props }: TableViewProps) => JSX.Element>;
@@ -26,7 +26,7 @@ var __rest = (this && this.__rest) || function (s, e) {
26
26
  };
27
27
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
28
28
  import { SortableContext, verticalListSortingStrategy, } from "@dnd-kit/sortable";
29
- import React, { Fragment, useCallback, useRef } from "react";
29
+ import React, { Fragment, useRef } from "react";
30
30
  import AutoSizer from "react-virtualized-auto-sizer";
31
31
  import { FixedSizeGrid as Grid, areEqual } from "react-window";
32
32
  import styled, { css } from "styled-components";
@@ -66,8 +66,9 @@ var buildGridStyles = function (rowWidthScalingFactor) {
66
66
  return gridStyles;
67
67
  };
68
68
  export var TableView = React.memo(function (_a) {
69
- var data = _a.data, columns = _a.columns, pageSize = _a.pageSize, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.sortBy, sortBy = _c === void 0 ? { field: null, direction: null } : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.setSortBy, setSortBy = _e === void 0 ? null : _e, _f = _a.rowWidthScalingFactor, rowWidthScalingFactor = _f === void 0 ? 1 : _f, onSectionRendered = _a.onSectionRendered, _g = _a.tableHeadersHeight, tableHeadersHeight = _g === void 0 ? defaultTableHeaderHeightPx : _g, _h = _a.rowHeight, rowHeight = _h === void 0 ? defaultTableRowHeightPx : _h, _j = _a.h, h = _j === void 0 ? 500 : _j, _k = _a.onTableScroll, onTableScroll = _k === void 0 ? null : _k, _l = _a.getItemKey, getItemKey = _l === void 0 ? null : _l, _m = _a.isDraggable, isDraggable = _m === void 0 ? false : _m, checkboxColumnWidth = _a.checkboxColumnWidth, _o = _a.isFiltering, isFiltering = _o === void 0 ? false : _o, props = __rest(_a, ["data", "columns", "pageSize", "onRowClick", "sortBy", "isLoading", "setSortBy", "rowWidthScalingFactor", "onSectionRendered", "tableHeadersHeight", "rowHeight", "h", "onTableScroll", "getItemKey", "isDraggable", "checkboxColumnWidth", "isFiltering"]);
69
+ var _b = _a.data, data = _b === void 0 ? null : _b, _c = _a.dataRefIds, dataRefIds = _c === void 0 ? null : _c, columns = _a.columns, pageSize = _a.pageSize, _d = _a.onRowClick, onRowClick = _d === void 0 ? null : _d, _e = _a.sortBy, sortBy = _e === void 0 ? { field: null, direction: null } : _e, _f = _a.isLoading, isLoading = _f === void 0 ? false : _f, _g = _a.setSortBy, setSortBy = _g === void 0 ? null : _g, _h = _a.rowWidthScalingFactor, rowWidthScalingFactor = _h === void 0 ? 1 : _h, _j = _a.tableHeadersHeight, tableHeadersHeight = _j === void 0 ? defaultTableHeaderHeightPx : _j, _k = _a.rowHeight, rowHeight = _k === void 0 ? defaultTableRowHeightPx : _k, _l = _a.h, h = _l === void 0 ? 500 : _l, _m = _a.onTableScroll, onTableScroll = _m === void 0 ? null : _m, _o = _a.getItemKey, getItemKey = _o === void 0 ? null : _o, _p = _a.isDraggable, isDraggable = _p === void 0 ? false : _p, checkboxColumnWidth = _a.checkboxColumnWidth, _q = _a.isFiltering, isFiltering = _q === void 0 ? false : _q, props = __rest(_a, ["data", "dataRefIds", "columns", "pageSize", "onRowClick", "sortBy", "isLoading", "setSortBy", "rowWidthScalingFactor", "tableHeadersHeight", "rowHeight", "h", "onTableScroll", "getItemKey", "isDraggable", "checkboxColumnWidth", "isFiltering"]);
70
70
  var headerContainerRef = useRef();
71
+ var rowCount = dataRefIds ? dataRefIds.ids.length : data.length;
71
72
  var onScroll = function (_a) {
72
73
  var scrollTop = _a.scrollTop, scrollLeft = _a.scrollLeft;
73
74
  if (headerContainerRef.current && headerContainerRef.current.scrollTo) {
@@ -82,20 +83,10 @@ export var TableView = React.memo(function (_a) {
82
83
  onTableScroll(scrollTop);
83
84
  }
84
85
  };
85
- var onItemsRendered = useCallback(function (_a) {
86
- var rowStartIndex = _a.overscanRowStartIndex, rowStopIndex = _a.overscanRowStopIndex;
87
- if (onSectionRendered) {
88
- onSectionRendered({
89
- rowStartIndex: rowStartIndex,
90
- rowStopIndex: rowStopIndex,
91
- data: data.slice(rowStartIndex, rowStopIndex + 1),
92
- });
93
- }
94
- }, [data, onSectionRendered]);
95
86
  var tableHeight = pageSize
96
87
  ? pageSize * rowHeight + tableHeadersHeight
97
88
  : h;
98
- var canRenderTableHeaders = isFiltering ? true : data.length > 0;
89
+ var canRenderTableHeaders = isFiltering ? true : rowCount > 0;
99
90
  return (_jsxs(TableViewWrapper, __assign({ "data-test-id": "table-view-wrapper", isLoading: isLoading, checkboxColumnWidth: checkboxColumnWidth, h: tableHeight }, props, { children: [isLoading && loadingUI, _jsx(AutoSizer, { children: function (_a) {
100
91
  var autosizerWidth = _a.width, autosizerHeight = _a.height;
101
92
  // using Math.floor to avoid floating point errors with the grid and table cell widths
@@ -103,6 +94,7 @@ export var TableView = React.memo(function (_a) {
103
94
  var gridProps = {
104
95
  itemData: {
105
96
  items: data,
97
+ dataRefIds: dataRefIds,
106
98
  isDraggable: isDraggable,
107
99
  rowWidth: rowWidth,
108
100
  onRowClick: onRowClick,
@@ -113,12 +105,11 @@ export var TableView = React.memo(function (_a) {
113
105
  style: buildGridStyles(rowWidthScalingFactor),
114
106
  width: autosizerWidth,
115
107
  columnCount: 1,
116
- onItemsRendered: onItemsRendered,
117
108
  onScroll: onScroll,
118
109
  columnWidth: rowWidth,
119
110
  height: autosizerHeight - tableHeadersHeight,
120
111
  rowHeight: rowHeight,
121
- rowCount: data.length,
112
+ rowCount: rowCount,
122
113
  };
123
114
  var GridContainer = isDraggable
124
115
  ? SortableContext
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
2
  import { DivCSSProps } from "../../../styled/utils";
3
+ import { Record, RecordDataSet } from "../../../types";
3
4
  import { SortBy } from "../TableDataProvider";
4
5
  export type TableViewColumn = {
5
6
  header?: string;
@@ -10,13 +11,13 @@ export type TableViewColumn = {
10
11
  disableSort?: boolean;
11
12
  width?: number;
12
13
  };
13
- type TableSection = {
14
- rowStartIndex?: number;
15
- rowStopIndex?: number;
16
- data?: any[];
17
- };
18
14
  export type TableViewProps = {
19
- data: any[];
15
+ data?: any;
16
+ dataRefIds?: {
17
+ ids: string[];
18
+ ref: React.MutableRefObject<RecordDataSet>;
19
+ };
20
+ rowCount: number;
20
21
  columns: TableViewColumn[];
21
22
  sortBy?: SortBy;
22
23
  setSortBy?: React.Dispatch<React.SetStateAction<SortBy>>;
@@ -25,12 +26,10 @@ export type TableViewProps = {
25
26
  rowWidthScalingFactor?: number;
26
27
  rowHeight?: number;
27
28
  tableHeadersHeight?: number;
28
- onSectionRendered?: (section: TableSection) => void;
29
29
  onTableScroll?: (scrollTop: number) => void;
30
30
  onRowClick?: (row: any) => void;
31
- getItemKey?: (row: any) => string;
31
+ getItemKey?: (row: Record) => string;
32
32
  isDraggable?: boolean;
33
33
  checkboxColumnWidth?: number;
34
34
  isFiltering?: boolean;
35
35
  } & DivCSSProps;
36
- export {};
@@ -5,7 +5,8 @@ type Props = {
5
5
  onRowClick?: (row: any) => void;
6
6
  templateSlug?: string;
7
7
  isDraggable?: boolean;
8
+ rowHeight?: number;
8
9
  } & DivCSSProps;
9
- declare const Table: ({ columns, onRowClick, blankState, templateSlug, isDraggable, ...props }: Props) => JSX.Element;
10
+ declare const Table: ({ columns, onRowClick, blankState, templateSlug, isDraggable, rowHeight, ...props }: Props) => JSX.Element;
10
11
  export { Table };
11
12
  export * from "./TableDataProvider";
@@ -77,7 +77,7 @@ var TableView = styled(TableViewBase)(templateObject_4 || (templateObject_4 = __
77
77
  return p.withPagination && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n border-radius: 0px;\n "], ["\n border-radius: 0px;\n "])));
78
78
  });
79
79
  var Table = function (_a) {
80
- var columns = _a.columns, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.blankState, blankState = _c === void 0 ? null : _c, templateSlug = _a.templateSlug, _d = _a.isDraggable, isDraggable = _d === void 0 ? false : _d, props = __rest(_a, ["columns", "onRowClick", "blankState", "templateSlug", "isDraggable"]);
80
+ var columns = _a.columns, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.blankState, blankState = _c === void 0 ? null : _c, templateSlug = _a.templateSlug, _d = _a.isDraggable, isDraggable = _d === void 0 ? false : _d, rowHeight = _a.rowHeight, props = __rest(_a, ["columns", "onRowClick", "blankState", "templateSlug", "isDraggable", "rowHeight"]);
81
81
  var _e = useTableContext(), data = _e.data, isLoading = _e.isLoading, sortBy = _e.sortBy, setSortBy = _e.setSortBy, totalPages = _e.totalPages;
82
82
  var reorderRows = useReorderRows(templateSlug).reorderRows;
83
83
  var withPagination = data.length > 0 && totalPages > 1;
@@ -126,7 +126,7 @@ var Table = function (_a) {
126
126
  };
127
127
  var Container = data.length > 0 ? TableContainer : Div;
128
128
  var Wrapper = data.length > 0 ? TableWrapper : Div;
129
- return (_jsx(Container, { children: _jsx(Wrapper, { children: _jsxs(Div, __assign({}, props, { children: [data.length || isLoading ? (_jsx(DndContext, __assign({ sensors: dndContextValues.sensors, collisionDetection: dndContextValues.collisionDetection, onDragEnd: dndContextValues.onDragEnd, modifiers: dndContextValues.modifiers }, { children: _jsx(TableView, __assign({ pageSize: data.length, withPagination: withPagination, isDraggable: isDraggable }, {
129
+ return (_jsx(Container, { children: _jsx(Wrapper, { children: _jsxs(Div, __assign({}, props, { children: [data.length || isLoading ? (_jsx(DndContext, __assign({ sensors: dndContextValues.sensors, collisionDetection: dndContextValues.collisionDetection, onDragEnd: dndContextValues.onDragEnd, modifiers: dndContextValues.modifiers }, { children: _jsx(TableView, __assign({ rowCount: data.length, pageSize: data.length, withPagination: withPagination, isDraggable: isDraggable, rowHeight: rowHeight }, {
130
130
  isLoading: isLoading,
131
131
  data: data,
132
132
  columns: columns,
@@ -55,15 +55,16 @@ var toastTypeStyles = {
55
55
  },
56
56
  };
57
57
  var ToastWrapper = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n padding: 10px;\n box-shadow: 0px 2px 8px 1px rgba(0, 0, 0, 0.1);\n border-radius: ", "px;\n ", ";\n"], ["\n padding: 10px;\n box-shadow: 0px 2px 8px 1px rgba(0, 0, 0, 0.1);\n border-radius: ", "px;\n ", ";\n"])), toastBorderRadius, function (p) { return p.theme.css.alignCenter; });
58
+ var IconWrapper = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n margin-right: 10px;\n"], ["\n margin-right: 10px;\n"])));
58
59
  var Toast = function () {
59
60
  return (_jsx(Toaster, __assign({ toastOptions: {
60
61
  style: toastContainerCss,
61
62
  } }, { children: function (t) { return (_jsx(ToastBar, __assign({ toast: t }, { children: function (_a) {
62
63
  var message = _a.message, hotToastIcon = _a.icon;
63
64
  var _b = toastTypeStyles[t.type] || {}, icon = _b.icon, color = _b.color, backgroundColor = _b.backgroundColor;
64
- return (_jsxs(ToastWrapper, __assign({ c: color, bg: backgroundColor }, { children: [_jsx(Div, __assign({ alignCenter: true }, { children: icon || hotToastIcon })), _jsx(Div, __assign({ alignCenter: true }, { children: message })), _jsx(Div, __assign({ p: 5, clickable: true, onClick: function () { return toast.dismiss(t.id); } }, { children: closeIcon }))] })));
65
+ return (_jsxs(ToastWrapper, __assign({ c: color, bg: backgroundColor }, { children: [_jsx(IconWrapper, __assign({ alignCenter: true }, { children: icon || hotToastIcon })), _jsx(Div, __assign({ alignCenter: true }, { children: message })), _jsx(Div, __assign({ p: 5, clickable: true, onClick: function () { return toast.dismiss(t.id); } }, { children: closeIcon }))] })));
65
66
  } }))); } })));
66
67
  };
67
68
  export { Toast };
68
69
  var closeIcon = (_jsxs("svg", __assign({ width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: [_jsx("path", { d: "M2.5 2.5L7.82258 7.82258", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M2.5 7.82251L7.82258 2.49993", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })] })));
69
- var templateObject_1;
70
+ var templateObject_1, templateObject_2;
@@ -3,6 +3,7 @@ import React from "react";
3
3
  import { DivCSSProps } from "../styled/utils";
4
4
  type TooltipContentProps = {
5
5
  isActionable?: boolean;
6
+ shouldCenterText?: boolean;
6
7
  };
7
8
  export declare const TooltipContent: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../styled/utils").CSSProps & TooltipContentProps, never>;
8
9
  export type TooltipProps = {
@@ -14,6 +15,7 @@ export type TooltipProps = {
14
15
  tooltipMaxWidth?: number;
15
16
  tooltipMinWidth?: number;
16
17
  offset?: number[];
18
+ shouldCenterText?: boolean;
17
19
  } & DivCSSProps;
18
20
  export declare const TooltipProvider: React.FC<TooltipProps>;
19
21
  export {};
@@ -27,14 +27,17 @@ var __rest = (this && this.__rest) || function (s, e) {
27
27
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
28
28
  import { useMemo, useState } from "react";
29
29
  import { usePopper } from "react-popper";
30
- import styled from "styled-components";
30
+ import styled, { css } from "styled-components";
31
31
  import { Div } from "../styled/utils";
32
- export var TooltipContent = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", ";\n color: ", ";\n background: ", ";\n border-radius: 4px;\n padding: 10px;\n pointer-events: none;\n z-index: 1000;\n"], ["\n ", ";\n color: ", ";\n background: ", ";\n border-radius: 4px;\n padding: 10px;\n pointer-events: none;\n z-index: 1000;\n"])), function (p) { return p.theme.css.body4; }, function (p) { return p.theme.colors.white; }, function (p) { return p.theme.colors.black; });
32
+ export var TooltipContent = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n ", ";\n color: ", ";\n background: ", ";\n border-radius: 4px;\n padding: 10px;\n pointer-events: none;\n z-index: 1000;\n\n ", "\n"], ["\n ", ";\n color: ", ";\n background: ", ";\n border-radius: 4px;\n padding: 10px;\n pointer-events: none;\n z-index: 1000;\n\n ", "\n"])), function (p) { return p.theme.css.body4; }, function (p) { return p.theme.colors.white; }, function (p) { return p.theme.colors.black; }, function (_a) {
33
+ var shouldCenterText = _a.shouldCenterText;
34
+ return shouldCenterText && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n text-align: center;\n "], ["\n text-align: center;\n "])));
35
+ });
33
36
  export var TooltipProvider = function (_a) {
34
- var tooltip = _a.tooltip, children = _a.children, tooltipMaxWidth = _a.tooltipMaxWidth, tooltipMinWidth = _a.tooltipMinWidth, _b = _a.placement, placement = _b === void 0 ? "top-start" : _b, _c = _a.flip, flip = _c === void 0 ? true : _c, _d = _a.isDisabled, isDisabled = _d === void 0 ? false : _d, _e = _a.isOpen, isOpen = _e === void 0 ? false : _e, _f = _a.offset, offset = _f === void 0 ? [0, 4] : _f, props = __rest(_a, ["tooltip", "children", "tooltipMaxWidth", "tooltipMinWidth", "placement", "flip", "isDisabled", "isOpen", "offset"]);
35
- var _g = useState(false), isDisplayingTooltip = _g[0], setIsDisplayingTooltip = _g[1];
36
- var _h = useState(null), referenceElement = _h[0], setReferenceElement = _h[1];
37
- var _j = useState(null), popperElement = _j[0], setPopperElement = _j[1];
37
+ var tooltip = _a.tooltip, children = _a.children, tooltipMaxWidth = _a.tooltipMaxWidth, tooltipMinWidth = _a.tooltipMinWidth, _b = _a.placement, placement = _b === void 0 ? "top-start" : _b, _c = _a.flip, flip = _c === void 0 ? true : _c, _d = _a.isDisabled, isDisabled = _d === void 0 ? false : _d, _e = _a.isOpen, isOpen = _e === void 0 ? false : _e, _f = _a.offset, offset = _f === void 0 ? [0, 4] : _f, _g = _a.shouldCenterText, shouldCenterText = _g === void 0 ? false : _g, props = __rest(_a, ["tooltip", "children", "tooltipMaxWidth", "tooltipMinWidth", "placement", "flip", "isDisabled", "isOpen", "offset", "shouldCenterText"]);
38
+ var _h = useState(false), isDisplayingTooltip = _h[0], setIsDisplayingTooltip = _h[1];
39
+ var _j = useState(null), referenceElement = _j[0], setReferenceElement = _j[1];
40
+ var _k = useState(null), popperElement = _k[0], setPopperElement = _k[1];
38
41
  var options = useMemo(function () { return ({
39
42
  placement: placement,
40
43
  modifiers: [
@@ -50,8 +53,8 @@ export var TooltipProvider = function (_a) {
50
53
  },
51
54
  ],
52
55
  }); }, [placement, offset]);
53
- var _k = usePopper(referenceElement, popperElement, options), styles = _k.styles, attributes = _k.attributes;
56
+ var _l = usePopper(referenceElement, popperElement, options), styles = _l.styles, attributes = _l.attributes;
54
57
  var showTooltip = isOpen || (isDisplayingTooltip && !!tooltip);
55
- return (_jsxs(Div, __assign({ dim: "100%", ref: setReferenceElement, onMouseOver: function () { return isDisabled || setIsDisplayingTooltip(true); }, onMouseOut: function () { return isDisabled || setIsDisplayingTooltip(false); } }, props, { children: [children, showTooltip && (_jsx(TooltipContent, __assign({ ref: setPopperElement, style: styles.popper, maxw: tooltipMaxWidth, minw: tooltipMinWidth }, attributes.popper, { children: tooltip })))] })));
58
+ return (_jsxs(Div, __assign({ dim: "100%", ref: setReferenceElement, onMouseOver: function () { return isDisabled || setIsDisplayingTooltip(true); }, onMouseOut: function () { return isDisabled || setIsDisplayingTooltip(false); } }, props, { children: [children, showTooltip && (_jsx(TooltipContent, __assign({ ref: setPopperElement, style: styles.popper, maxw: tooltipMaxWidth, minw: tooltipMinWidth, shouldCenterText: shouldCenterText }, attributes.popper, { children: tooltip })))] })));
56
59
  };
57
- var templateObject_1;
60
+ var templateObject_1, templateObject_2;
@@ -15,6 +15,7 @@ export type BtnProps = {
15
15
  svgNormalStrokeColorOverride?: string;
16
16
  svgActiveStrokeColorOverride?: string;
17
17
  svgDisabledStrokeColorOverride?: string;
18
+ iconPlacement?: "left" | "right";
18
19
  } & CSSProps;
19
20
  export declare const ButtonWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, CSSProps & {
20
21
  onClick?: () => void;
@@ -30,6 +31,7 @@ export declare const ButtonWrapper: import("styled-components").StyledComponent<
30
31
  svgNormalStrokeColorOverride?: string;
31
32
  svgActiveStrokeColorOverride?: string;
32
33
  svgDisabledStrokeColorOverride?: string;
34
+ iconPlacement?: "left" | "right";
33
35
  }, never>;
34
36
  export declare const ButtonElementWrapper: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, CSSProps & {
35
37
  onClick?: () => void;
@@ -45,6 +47,8 @@ export declare const ButtonElementWrapper: import("styled-components").StyledCom
45
47
  svgNormalStrokeColorOverride?: string;
46
48
  svgActiveStrokeColorOverride?: string;
47
49
  svgDisabledStrokeColorOverride?: string;
50
+ iconPlacement?: "left" | "right";
48
51
  }, never>;
49
- export declare const Button: ({ onClick, isDisabled, variant, isSmall, children, isButtonElement, ...props }: BtnProps) => JSX.Element;
52
+ export declare const ContentWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, CSSProps, never>;
53
+ export declare const Button: ({ onClick, isDisabled, variant, isSmall, children, isButtonElement, iconPlacement, ...props }: BtnProps) => JSX.Element;
50
54
  export {};