fuse-importer 0.0.7-testing → 0.0.8-testing
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.d.ts +0 -1
- package/lib/esm/common/columnsValidations.d.ts +1 -1
- package/lib/esm/hooks/index.d.ts +0 -1
- package/lib/esm/types.d.ts +2 -2
- package/lib/main.js +18 -18
- package/package.json +2 -3
- package/lib/esm/Importer/ImporterWithContext.js +0 -63
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +0 -68
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/tableColumns.js +0 -58
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcherContext.js +0 -21
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +0 -23
- package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +0 -61
- package/lib/esm/Importer/Matcher/HeaderMatcher/tableColumns.js +0 -55
- package/lib/esm/Importer/Matcher/common/icons/index.js +0 -14
- package/lib/esm/Importer/Matcher/common/index.js +0 -39
- package/lib/esm/Importer/Matcher/common/types.js +0 -9
- package/lib/esm/Importer/Matcher/index.js +0 -22
- package/lib/esm/Importer/PreviewFirstTime.js +0 -81
- package/lib/esm/Importer/PreviewModeBanner.js +0 -19
- package/lib/esm/Importer/Review/AppResponseModal.js +0 -35
- package/lib/esm/Importer/Review/ReviewContextProvider.js +0 -315
- package/lib/esm/Importer/Review/ReviewWithContext.js +0 -33
- package/lib/esm/Importer/Review/index.js +0 -4
- package/lib/esm/Importer/Stepper/ConfirmCloseModal.js +0 -24
- package/lib/esm/Importer/Stepper/Step.js +0 -19
- package/lib/esm/Importer/Stepper/StepIndex.js +0 -27
- package/lib/esm/Importer/Stepper/StepperSubmitModal.js +0 -24
- package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +0 -31
- package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +0 -33
- package/lib/esm/Importer/Stepper/common/icons.js +0 -18
- package/lib/esm/Importer/Stepper/index.js +0 -118
- package/lib/esm/Importer/TrialModeBanner.js +0 -22
- package/lib/esm/Importer/Uploader/DragAndDropImporter/DragAndDropImporter.styles.js +0 -11
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +0 -123
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/ImporterSectionHeader.styles.js +0 -11
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.js +0 -44
- package/lib/esm/Importer/Uploader/DragAndDropImporter/backgrounds.js +0 -14
- package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +0 -45
- package/lib/esm/Importer/Uploader/HeaderButtons.js +0 -28
- package/lib/esm/Importer/Uploader/HeadersPreview.js +0 -44
- package/lib/esm/Importer/Uploader/UploaderContextProvider.js +0 -27
- package/lib/esm/Importer/Uploader/index.js +0 -13
- package/lib/esm/Importer/common/AppLoading.js +0 -24
- package/lib/esm/Importer/common/Footer.js +0 -17
- package/lib/esm/Importer/common/FuseApi.js +0 -48
- package/lib/esm/Importer/common/GlobalStyle.js +0 -7
- package/lib/esm/Importer/common/ImporterFonts.js +0 -5
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +0 -56
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +0 -176
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.js +0 -45
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +0 -14
- package/lib/esm/Importer/common/Spreadsheet/common/index.js +0 -63
- package/lib/esm/Importer/common/Spreadsheet/common/types.js +0 -5
- package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.js +0 -66
- package/lib/esm/Importer/common/Spreadsheet/components/GlobalStyle.js +0 -9
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +0 -110
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +0 -186
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.js +0 -55
- package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +0 -19
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.js +0 -43
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +0 -70
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +0 -108
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/Boolean.js +0 -18
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.js +0 -14
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/EnumInput.js +0 -30
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/FloatInput.js +0 -16
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/IntegerInput.js +0 -16
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/StringInput.js +0 -14
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.js +0 -20
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +0 -245
- package/lib/esm/Importer/common/Spreadsheet/index.js +0 -119
- package/lib/esm/Importer/common/Spreadsheet/styles.js +0 -16
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +0 -47
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +0 -204
- package/lib/esm/Importer/common/Spreadsheet/validation/index.js +0 -202
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +0 -181
- package/lib/esm/Importer/common/icons/index.js +0 -18
- package/lib/esm/Importer/common/index.js +0 -13
- package/lib/esm/Importer/common/theme.js +0 -19
- package/lib/esm/Importer/common/utils.js +0 -100
- package/lib/esm/Importer/contexts/ImporterContextProvider.js +0 -247
- package/lib/esm/Importer/data/index.js +0 -152
- package/lib/esm/Importer/index.js +0 -28
- package/lib/esm/api/index.js +0 -93
- package/lib/esm/api/responseHandlers.js +0 -49
- package/lib/esm/common/AppLoadingContextProvider/AppLoadingUI.js +0 -26
- package/lib/esm/common/AppLoadingContextProvider/index.js +0 -25
- package/lib/esm/common/ConfirmationModal.js +0 -19
- package/lib/esm/common/Modal.js +0 -31
- package/lib/esm/common/Spinner.js +0 -41
- package/lib/esm/common/Table/Pagination/icons.js +0 -42
- package/lib/esm/common/Table/Pagination/index.js +0 -32
- package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +0 -50
- package/lib/esm/common/Table/TableActions/ExportData.js +0 -23
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +0 -47
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.styles.js +0 -24
- package/lib/esm/common/Table/TableActions/FilterByErrors/functions.js +0 -35
- package/lib/esm/common/Table/TableActions/FilterByErrors/index.js +0 -1
- package/lib/esm/common/Table/TableActions/RowFilters.js +0 -42
- package/lib/esm/common/Table/TableActions/SearchRows.js +0 -72
- package/lib/esm/common/Table/TableActions/TableActions.js +0 -35
- package/lib/esm/common/Table/TableActions/TableActions.styles.js +0 -18
- package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +0 -71
- package/lib/esm/common/Table/TableActions/common.js +0 -1
- package/lib/esm/common/Table/TableActions/hooks.js +0 -41
- package/lib/esm/common/Table/TableActions/icons.js +0 -17
- package/lib/esm/common/Table/TableActions/index.js +0 -1
- package/lib/esm/common/Table/TableDataProvider.js +0 -127
- package/lib/esm/common/Table/TableView/CustomScrollbar.d.ts +0 -2
- package/lib/esm/common/Table/TableView/CustomScrollbar.js +0 -34
- package/lib/esm/common/Table/TableView/TableHeaders.js +0 -69
- package/lib/esm/common/Table/TableView/TableRows/TableRow.js +0 -57
- package/lib/esm/common/Table/TableView/TableRows/index.js +0 -48
- package/lib/esm/common/Table/TableView/common/index.js +0 -37
- package/lib/esm/common/Table/TableView/index.js +0 -132
- package/lib/esm/common/Table/TableView/types.js +0 -1
- package/lib/esm/common/Table/icons.js +0 -15
- package/lib/esm/common/Table/index.js +0 -140
- package/lib/esm/common/Table/useReorderRows.js +0 -83
- package/lib/esm/common/Toast.js +0 -69
- package/lib/esm/common/TooltipProvider.js +0 -57
- package/lib/esm/common/buttons.js +0 -97
- package/lib/esm/common/columnsTransformations.js +0 -94
- package/lib/esm/common/columnsValidations.js +0 -687
- package/lib/esm/common/icons/index.js +0 -30
- package/lib/esm/common/index.js +0 -45
- package/lib/esm/common/inputs/Autocomplete.js +0 -110
- package/lib/esm/common/inputs/Checkbox.js +0 -53
- package/lib/esm/common/inputs/SelectMenu.js +0 -67
- package/lib/esm/common/inputs/TextInput.js +0 -89
- package/lib/esm/common/inputs/index.js +0 -5
- package/lib/esm/common/inputs/tooltip.js +0 -38
- package/lib/esm/common/logo.js +0 -13
- package/lib/esm/hooks/index.js +0 -16
- package/lib/esm/index.js +0 -218
- package/lib/esm/locales/de.js +0 -126
- package/lib/esm/locales/en.js +0 -126
- package/lib/esm/locales/es.js +0 -126
- package/lib/esm/locales/fr.js +0 -126
- package/lib/esm/locales/index.js +0 -4
- package/lib/esm/styled/fontsURL.js +0 -27
- package/lib/esm/styled/index.js +0 -3
- package/lib/esm/styled/theme/animations.js +0 -9
- package/lib/esm/styled/theme/colorPalette.js +0 -109
- package/lib/esm/styled/theme/debugCss.js +0 -16
- package/lib/esm/styled/theme/dimensionsCss.js +0 -20
- package/lib/esm/styled/theme/fontCss.js +0 -17
- package/lib/esm/styled/theme/globalCss.js +0 -26
- package/lib/esm/styled/theme/index.js +0 -33
- package/lib/esm/styled/theme/layoutCss.js +0 -26
- package/lib/esm/styled/theme/mediaQueries.js +0 -4
- package/lib/esm/styled/theme/positionCss.js +0 -27
- package/lib/esm/styled/theme/textCss.js +0 -18
- package/lib/esm/styled/theme/textStyles.js +0 -27
- package/lib/esm/styled/themeType.js +0 -6
- package/lib/esm/styled/utils.js +0 -17
- package/lib/esm/types.js +0 -65
- package/lib/esm/utils/hooks/useWindowSize.js +0 -23
- package/lib/esm/utils/hooks.js +0 -1
- package/lib/esm/utils/index.js +0 -37
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
2
|
-
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
|
-
return cooked;
|
|
4
|
-
};
|
|
5
|
-
import { createGlobalStyle } from "styled-components";
|
|
6
|
-
export var GlobalStyle = createGlobalStyle(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n #fuse-importer-root > *,\n body > * {\n font-size: 17px;\n margin: 0;\n padding: 0;\n top: 0;\n left: 0;\n font-family: DM Sans;\n color-scheme: normal;\n color: black;\n }\n"], ["\n #fuse-importer-root > *,\n body > * {\n font-size: 17px;\n margin: 0;\n padding: 0;\n top: 0;\n left: 0;\n font-family: DM Sans;\n color-scheme: normal;\n color: black;\n }\n"])));
|
|
7
|
-
var templateObject_1;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Helmet } from "react-helmet";
|
|
3
|
-
export var ImporterFonts = function () {
|
|
4
|
-
return (_jsxs(Helmet, { children: [_jsx("link", { rel: "preconnect", href: "https://fonts.googleapis.com" }), _jsx("link", { rel: "preconnect", href: "https://fonts.gstatic.com", crossOrigin: "" }), _jsx("link", { href: "https://fonts.googleapis.com/css?family=Montserrat:300,400,500,600&display=swap", rel: "stylesheet" }), _jsx("link", { href: "https://fonts.googleapis.com/css?family=DM+Serif+Text:300,400,500,600&display=swap", rel: "stylesheet" }), _jsx("link", { href: "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&family=DM+Serif+Display&family=DM+Serif+Text&display=swap", rel: "stylesheet" }), _jsx("link", { href: "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&family=DM+Serif+Text&display=swap", rel: "stylesheet" })] }));
|
|
5
|
-
};
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
//Filter records by search value
|
|
2
|
-
export var filterRecordsBySearchValue = function (obj, value) {
|
|
3
|
-
var isObject = function (value) {
|
|
4
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5
|
-
};
|
|
6
|
-
var includesSearchValue = function (value, searchValue) {
|
|
7
|
-
if (typeof value === "string" || typeof value === "number") {
|
|
8
|
-
var stringValue = String(value).toLowerCase();
|
|
9
|
-
var searchValueLower = searchValue.toLowerCase();
|
|
10
|
-
return stringValue.includes(searchValueLower);
|
|
11
|
-
}
|
|
12
|
-
return false;
|
|
13
|
-
};
|
|
14
|
-
var filteredObj = {};
|
|
15
|
-
for (var _i = 0, _a = Object.entries(obj); _i < _a.length; _i++) {
|
|
16
|
-
var _b = _a[_i], key = _b[0], currentObj = _b[1];
|
|
17
|
-
if (!isObject(currentObj)) {
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
var matches = Object.values(currentObj).some(function (propertyValue) {
|
|
21
|
-
return includesSearchValue(propertyValue, value);
|
|
22
|
-
});
|
|
23
|
-
if (matches) {
|
|
24
|
-
filteredObj[key] = currentObj;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return filteredObj;
|
|
28
|
-
};
|
|
29
|
-
export var filterRecordsByType = function (obj, filterType) {
|
|
30
|
-
var _a, _b;
|
|
31
|
-
var rowIsEmpty = function (row) {
|
|
32
|
-
return Object.keys(row).every(function (key) {
|
|
33
|
-
if (key === "_meta")
|
|
34
|
-
return true;
|
|
35
|
-
return !row[key];
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
var filteredObj = {};
|
|
39
|
-
for (var key in obj) {
|
|
40
|
-
if (filterType === "all" ||
|
|
41
|
-
(((_b = (_a = obj[key]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.isInvalid) !== (filterType === "valid") &&
|
|
42
|
-
!rowIsEmpty(obj[key]))) {
|
|
43
|
-
filteredObj[key] = obj[key];
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return filteredObj;
|
|
47
|
-
};
|
|
48
|
-
//Filter records by selected column error
|
|
49
|
-
export var filterRecordsByError = function (obj, keyToFilter, errors) {
|
|
50
|
-
var filteredObj = {};
|
|
51
|
-
var filteredKeys = Object.keys(errors).filter(function (key) { var _a, _b; return ((_b = (_a = obj[key]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.isInvalid) && errors[key][keyToFilter]; });
|
|
52
|
-
for (var i = 0; i < filteredKeys.length; i++) {
|
|
53
|
-
filteredObj[filteredKeys[i]] = obj[filteredKeys[i]];
|
|
54
|
-
}
|
|
55
|
-
return filteredObj;
|
|
56
|
-
};
|
|
@@ -1,176 +0,0 @@
|
|
|
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
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
-
var t = {};
|
|
14
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
-
t[p] = s[p];
|
|
16
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
-
t[p[i]] = s[p[i]];
|
|
20
|
-
}
|
|
21
|
-
return t;
|
|
22
|
-
};
|
|
23
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
|
-
import { get } from "lodash";
|
|
25
|
-
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from "react";
|
|
26
|
-
import { addMeta } from "../../../data";
|
|
27
|
-
import { useValidationState } from "../hooks";
|
|
28
|
-
import { useSpreadsheetFilter, } from "./useSpreadsheetFilter";
|
|
29
|
-
import { filterRecordsByType, filterRecordsByError, filterRecordsBySearchValue, } from "./filterMethods";
|
|
30
|
-
import { hasValueInAnyField } from "./utils";
|
|
31
|
-
var getDefaultSortCompareFn = function (sortBy) {
|
|
32
|
-
return function (a, b) {
|
|
33
|
-
var aField = get(a, sortBy.field);
|
|
34
|
-
var bField = get(b, sortBy.field);
|
|
35
|
-
if (aField === bField)
|
|
36
|
-
return a._meta.rowIndex > b._meta.rowIndex ? 1 : -1;
|
|
37
|
-
if (!aField)
|
|
38
|
-
return 1;
|
|
39
|
-
if (!bField)
|
|
40
|
-
return -1;
|
|
41
|
-
if (sortBy.direction === "asc")
|
|
42
|
-
return aField > bField ? 1 : -1;
|
|
43
|
-
return aField < bField ? 1 : -1;
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
var SpreadsheetContext = createContext({});
|
|
47
|
-
export var SpreadsheetContextProvider = function (_a) {
|
|
48
|
-
var initialDataSet = _a.initialDataSet, fields = _a.fields, options = _a.options, isReadOnly = _a.isReadOnly, children = _a.children, onValidateRecord = _a.onValidateRecord, onDataSetChanged = _a.onDataSetChanged, onValidationStateChanged = _a.onValidationStateChanged, selectedRows = _a.selectedRows, setSelectedRows = _a.setSelectedRows, _b = _a.getSortCompareFn, getSortCompareFn = _b === void 0 ? getDefaultSortCompareFn : _b;
|
|
49
|
-
var _c = useState(initialDataSet), dataSet = _c[0], setDataSet = _c[1];
|
|
50
|
-
var _d = useState(false), isLoading = _d[0], setIsLoading = _d[1];
|
|
51
|
-
var _e = useState(null), sortByFieldErrors = _e[0], setSortByFieldErrors = _e[1];
|
|
52
|
-
var _f = useState(null), sortByFieldWarnings = _f[0], setSortByFieldWarnings = _f[1];
|
|
53
|
-
var _g = useState(""), filteredInputValue = _g[0], setFilteredInputValue = _g[1];
|
|
54
|
-
var _h = useState(null), sortBy = _h[0], setSortBy = _h[1];
|
|
55
|
-
var addRowTimeoutRef = useRef(null);
|
|
56
|
-
var _j = useState(false), isTransformTooltipOpened = _j[0], setIsTransformTooltipOpened = _j[1];
|
|
57
|
-
var _k = useSpreadsheetFilter(), spreadsheetFilter = _k.spreadsheetFilter, filterRecordsByRowType = _k.filterRecordsByRowType, filterRecordsByFieldErrors = _k.filterRecordsByFieldErrors, resetSpreadsheetFilter = _k.resetSpreadsheetFilter;
|
|
58
|
-
var _l = useValidationState({
|
|
59
|
-
dataSet: dataSet,
|
|
60
|
-
initialDataSet: initialDataSet,
|
|
61
|
-
fields: fields,
|
|
62
|
-
options: options,
|
|
63
|
-
isReadOnly: isReadOnly,
|
|
64
|
-
setDataSet: setDataSet,
|
|
65
|
-
setIsLoading: setIsLoading,
|
|
66
|
-
onValidateRecord: onValidateRecord,
|
|
67
|
-
}), updateRecordAndRevalidate = _l.updateRecordAndRevalidate, deleteRecords = _l.deleteRecords, warnings = _l.warnings, errors = _l.errors, validationState = __rest(_l, ["updateRecordAndRevalidate", "deleteRecords", "warnings", "errors"]);
|
|
68
|
-
var addNewRowsToSpreadsheet = function () {
|
|
69
|
-
addRowTimeoutRef.current = setTimeout(function () {
|
|
70
|
-
var _a, _b;
|
|
71
|
-
var highestRowIndex = -1;
|
|
72
|
-
for (var key in dataSet)
|
|
73
|
-
if (((_b = (_a = dataSet[key]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.rowIndex) > highestRowIndex)
|
|
74
|
-
highestRowIndex = dataSet[key]._meta.rowIndex;
|
|
75
|
-
var newRow = addMeta({}, highestRowIndex + 1);
|
|
76
|
-
setDataSet(function (oldValues) {
|
|
77
|
-
var _a;
|
|
78
|
-
return (__assign(__assign({}, oldValues), (_a = {}, _a[newRow._meta.id] = newRow, _a)));
|
|
79
|
-
});
|
|
80
|
-
addRowTimeoutRef.current = null;
|
|
81
|
-
}, 300);
|
|
82
|
-
};
|
|
83
|
-
var handleDeleteErrors = function (selectedRows) {
|
|
84
|
-
deleteRecords(selectedRows, errors, warnings);
|
|
85
|
-
};
|
|
86
|
-
var dataSnapshot = useMemo(function () {
|
|
87
|
-
var filteredData = spreadsheetFilter.type === "rowBased"
|
|
88
|
-
? filterRecordsByType(dataSet, spreadsheetFilter.byRow)
|
|
89
|
-
: filterRecordsByError(dataSet, spreadsheetFilter.byColumn.field, errors);
|
|
90
|
-
var filteredDatasetByString = filteredInputValue
|
|
91
|
-
? filterRecordsBySearchValue(filteredData, filteredInputValue)
|
|
92
|
-
: filteredData;
|
|
93
|
-
var dataSetValues = Object.values(filteredDatasetByString);
|
|
94
|
-
if (sortBy) {
|
|
95
|
-
return dataSetValues.sort(getSortCompareFn(sortBy));
|
|
96
|
-
}
|
|
97
|
-
else if (!!sortByFieldErrors || !!sortByFieldWarnings)
|
|
98
|
-
return dataSetValues.sort(function (a, b) {
|
|
99
|
-
var aHasErrors = !!get(sortByFieldErrors ? errors : warnings, "".concat(get(a, "_meta.id"), ".").concat(sortByFieldErrors || sortByFieldWarnings), false);
|
|
100
|
-
var bHasErrors = !!get(sortByFieldErrors ? errors : warnings, "".concat(get(b, "_meta.id"), ".").concat(sortByFieldErrors || sortByFieldWarnings), false);
|
|
101
|
-
if (aHasErrors === bHasErrors) {
|
|
102
|
-
return a._meta.rowIndex > b._meta.rowIndex ? 1 : -1;
|
|
103
|
-
}
|
|
104
|
-
return bHasErrors ? 1 : -1;
|
|
105
|
-
});
|
|
106
|
-
return dataSetValues;
|
|
107
|
-
}, [
|
|
108
|
-
filteredInputValue,
|
|
109
|
-
spreadsheetFilter,
|
|
110
|
-
sortBy,
|
|
111
|
-
Object.keys(dataSet).length,
|
|
112
|
-
sortByFieldErrors,
|
|
113
|
-
sortByFieldWarnings,
|
|
114
|
-
]);
|
|
115
|
-
var recordsWithValuesCount = useMemo(function () {
|
|
116
|
-
return Object.values(dataSet).filter(hasValueInAnyField).length;
|
|
117
|
-
}, [dataSet]);
|
|
118
|
-
var filteredDataCount = useMemo(function () {
|
|
119
|
-
return Object.values(dataSnapshot).filter(hasValueInAnyField).length;
|
|
120
|
-
}, [dataSnapshot]);
|
|
121
|
-
var isFiltering = useMemo(function () { return !!filteredInputValue; }, [filteredInputValue]);
|
|
122
|
-
useEffect(function () {
|
|
123
|
-
onDataSetChanged && onDataSetChanged(dataSet);
|
|
124
|
-
if (addRowTimeoutRef.current) {
|
|
125
|
-
// avoid adding new rows when the user is typing
|
|
126
|
-
clearTimeout(addRowTimeoutRef.current);
|
|
127
|
-
}
|
|
128
|
-
var dataSetKeys = Object.keys(dataSet);
|
|
129
|
-
var latestDataSet = dataSet[dataSetKeys[dataSetKeys.length - 1]];
|
|
130
|
-
var latestDataSetValuesWithoutMeta = Object.values(latestDataSet).filter(function (key) { return key !== "_meta"; });
|
|
131
|
-
var hasValueInTheLastObject = latestDataSetValuesWithoutMeta
|
|
132
|
-
.filter(function (value) {
|
|
133
|
-
return value !== null && value !== undefined && typeof value !== "object";
|
|
134
|
-
})
|
|
135
|
-
.some(function (value) { return value !== "null" && value !== "undefined"; });
|
|
136
|
-
if (hasValueInTheLastObject) {
|
|
137
|
-
addNewRowsToSpreadsheet();
|
|
138
|
-
}
|
|
139
|
-
}, [dataSet]);
|
|
140
|
-
// Review this later, this probably isn't the best approach
|
|
141
|
-
useEffect(function () {
|
|
142
|
-
setDataSet(initialDataSet);
|
|
143
|
-
}, [initialDataSet]);
|
|
144
|
-
useEffect(function () {
|
|
145
|
-
onValidationStateChanged &&
|
|
146
|
-
onValidationStateChanged(__assign(__assign({}, validationState), { errors: errors, warnings: warnings }));
|
|
147
|
-
}, [validationState, onValidationStateChanged]);
|
|
148
|
-
var handleSortByFieldErrors = useCallback(function (field) {
|
|
149
|
-
setSortByFieldErrors(field === sortByFieldErrors ? null : field);
|
|
150
|
-
setSortByFieldWarnings(null);
|
|
151
|
-
setSortBy(null);
|
|
152
|
-
}, [sortByFieldErrors]);
|
|
153
|
-
var handleSortByFieldWarnings = useCallback(function (field) {
|
|
154
|
-
setSortByFieldWarnings(field === sortByFieldWarnings ? null : field);
|
|
155
|
-
setSortByFieldErrors(null);
|
|
156
|
-
setSortBy(null);
|
|
157
|
-
}, [sortByFieldWarnings]);
|
|
158
|
-
var lastClickedIndexRef = useRef(null);
|
|
159
|
-
var checkboxColumnWidth = useMemo(function () {
|
|
160
|
-
var lastRowIndexLength = dataSnapshot.length.toString().length;
|
|
161
|
-
var singleLetterWidth = 15;
|
|
162
|
-
var horizontalSpacing = 8;
|
|
163
|
-
var baseCheckboxColumnWidth = lastRowIndexLength * singleLetterWidth + horizontalSpacing;
|
|
164
|
-
return baseCheckboxColumnWidth < 40 ? 40 : baseCheckboxColumnWidth;
|
|
165
|
-
}, [dataSnapshot]);
|
|
166
|
-
var updatedDataSnapshot = useMemo(function () {
|
|
167
|
-
return dataSnapshot.map(function (data) {
|
|
168
|
-
var _a;
|
|
169
|
-
var updatedData = dataSet[(_a = data._meta) === null || _a === void 0 ? void 0 : _a.id];
|
|
170
|
-
return updatedData;
|
|
171
|
-
});
|
|
172
|
-
}, [dataSet, dataSnapshot]);
|
|
173
|
-
var value = __assign(__assign({ data: updatedDataSnapshot, fields: fields, isLoading: isLoading }, validationState), { isReadOnly: isReadOnly, sortByFieldErrors: sortByFieldErrors, sortByFieldWarnings: sortByFieldWarnings, options: options, recordsWithValuesCount: recordsWithValuesCount, filteredDataCount: filteredDataCount, sortBy: sortBy, warnings: warnings, errors: errors, setIsLoading: setIsLoading, setSortByFieldErrors: handleSortByFieldErrors, setSortByFieldWarnings: handleSortByFieldWarnings, onValidateRecord: onValidateRecord, updateRecord: updateRecordAndRevalidate, selectedRows: selectedRows, setSelectedRows: setSelectedRows, deleteRecords: handleDeleteErrors, filteredInputValue: filteredInputValue, setFilteredInputValue: setFilteredInputValue, lastClickedIndexRef: lastClickedIndexRef, addNewRowsToSpreadsheet: addNewRowsToSpreadsheet, spreadsheetFilter: spreadsheetFilter, resetSpreadsheetFilter: resetSpreadsheetFilter, filterRecordsByRowType: filterRecordsByRowType, filterRecordsByFieldErrors: filterRecordsByFieldErrors, checkboxColumnWidth: checkboxColumnWidth, setSortBy: setSortBy, isFiltering: isFiltering, setIsTransformTooltipOpened: setIsTransformTooltipOpened, isTransformTooltipOpened: isTransformTooltipOpened });
|
|
174
|
-
return (_jsx(SpreadsheetContext.Provider, __assign({ value: value }, { children: children })));
|
|
175
|
-
};
|
|
176
|
-
export var useSpreadsheetContext = function () { return useContext(SpreadsheetContext); };
|
package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { useReducer } from "react";
|
|
2
|
-
export var useSpreadsheetFilter = function () {
|
|
3
|
-
var filtersInitialState = {
|
|
4
|
-
type: "rowBased",
|
|
5
|
-
byRow: "all",
|
|
6
|
-
};
|
|
7
|
-
function reducer(state, action) {
|
|
8
|
-
switch (action.type) {
|
|
9
|
-
case "FILTER_BY_ROW_TYPE":
|
|
10
|
-
return { type: "rowBased", byRow: action.payload, byColumn: null };
|
|
11
|
-
case "FILTER_BY_FIELD_ERRORS":
|
|
12
|
-
return {
|
|
13
|
-
type: "columnBased",
|
|
14
|
-
byColumn: {
|
|
15
|
-
type: "fieldWithErrors",
|
|
16
|
-
field: action.payload,
|
|
17
|
-
},
|
|
18
|
-
byRow: null,
|
|
19
|
-
};
|
|
20
|
-
case "RESTORE_FILTERS":
|
|
21
|
-
return filtersInitialState;
|
|
22
|
-
default:
|
|
23
|
-
return state;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
var _a = useReducer(reducer, filtersInitialState), spreadsheetFilter = _a[0], filtersDispatch = _a[1];
|
|
27
|
-
var resetSpreadsheetFilter = function () {
|
|
28
|
-
filtersDispatch({ type: "RESTORE_FILTERS" });
|
|
29
|
-
};
|
|
30
|
-
var filterRecordsByRowType = function (filterByRow) {
|
|
31
|
-
filtersDispatch({ type: "FILTER_BY_ROW_TYPE", payload: filterByRow });
|
|
32
|
-
};
|
|
33
|
-
var filterRecordsByFieldErrors = function (filterByColumn) {
|
|
34
|
-
filtersDispatch({
|
|
35
|
-
type: "FILTER_BY_FIELD_ERRORS",
|
|
36
|
-
payload: filterByColumn,
|
|
37
|
-
});
|
|
38
|
-
};
|
|
39
|
-
return {
|
|
40
|
-
spreadsheetFilter: spreadsheetFilter,
|
|
41
|
-
filterRecordsByRowType: filterRecordsByRowType,
|
|
42
|
-
filterRecordsByFieldErrors: filterRecordsByFieldErrors,
|
|
43
|
-
resetSpreadsheetFilter: resetSpreadsheetFilter,
|
|
44
|
-
};
|
|
45
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export var hasValueInAnyField = function (record) {
|
|
2
|
-
return Object.entries(record)
|
|
3
|
-
.filter(function (_a) {
|
|
4
|
-
var key = _a[0];
|
|
5
|
-
return key !== "_meta";
|
|
6
|
-
})
|
|
7
|
-
.some(function (_a) {
|
|
8
|
-
var key = _a[0], value = _a[1];
|
|
9
|
-
if (typeof value === "string") {
|
|
10
|
-
return value.trim() !== "";
|
|
11
|
-
}
|
|
12
|
-
return value !== null && value !== undefined;
|
|
13
|
-
});
|
|
14
|
-
};
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { FieldTypes } from "../../../../types";
|
|
2
|
-
export var spreadsheetRowHeightPx = 40;
|
|
3
|
-
export var spreadsheetHeaderHeightPx = 40;
|
|
4
|
-
export var isNullOrUndefined = function (value) {
|
|
5
|
-
return value === null || value === undefined;
|
|
6
|
-
};
|
|
7
|
-
export var isEmpty = function (value) {
|
|
8
|
-
return (value === undefined ||
|
|
9
|
-
value === null ||
|
|
10
|
-
(typeof value === "object" && Object.keys(value).length === 0) ||
|
|
11
|
-
(typeof value === "string" && value.trim().length === 0));
|
|
12
|
-
};
|
|
13
|
-
export var isEmail = function (value) {
|
|
14
|
-
var emailRegex = /^[\w+.-]+@([\w-]+\.)+[\w-]{2,4}$/;
|
|
15
|
-
return emailRegex.test(value);
|
|
16
|
-
};
|
|
17
|
-
export var isUrl = function (value) {
|
|
18
|
-
var urlRegex = /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/g;
|
|
19
|
-
return urlRegex.test(value);
|
|
20
|
-
};
|
|
21
|
-
export var isTrue = function (value) {
|
|
22
|
-
var _a;
|
|
23
|
-
var _value = (_a = value === null || value === void 0 ? void 0 : value.toString()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
24
|
-
return ["true", "yes", "1", "y", "on", "t"].includes(_value);
|
|
25
|
-
};
|
|
26
|
-
export var isFalse = function (value) {
|
|
27
|
-
var _a;
|
|
28
|
-
var _value = (_a = value === null || value === void 0 ? void 0 : value.toString()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
29
|
-
return ["false", "no", "0", "n", "off", "f"].includes(_value);
|
|
30
|
-
};
|
|
31
|
-
export var isBoolean = function (value) {
|
|
32
|
-
return isTrue(value) || isFalse(value);
|
|
33
|
-
};
|
|
34
|
-
export var isInteger = function (value) { return /^-?[0-9]+$/.test(value + ""); };
|
|
35
|
-
export var isFloat = function (value) {
|
|
36
|
-
return /^-?[0-9]+(?:\.[0-9]+)?$/.test(value + "");
|
|
37
|
-
};
|
|
38
|
-
export var isEven = function (value) { return value % 2 === 0; };
|
|
39
|
-
export var ignoreNullOrUndefinedKeyValues = function (obj) {
|
|
40
|
-
var result = {};
|
|
41
|
-
Object.keys(obj || {})
|
|
42
|
-
.filter(function (key) { return obj[key] !== null && obj[key] !== undefined; })
|
|
43
|
-
.forEach(function (key) {
|
|
44
|
-
result[key] = obj[key];
|
|
45
|
-
});
|
|
46
|
-
return result;
|
|
47
|
-
};
|
|
48
|
-
export var isRecordEmpty = function (record, fields) {
|
|
49
|
-
return fields.reduce(function (isEmptyRecord, f) { return isEmptyRecord && isEmpty(record[f.name]); }, true);
|
|
50
|
-
};
|
|
51
|
-
export var parseValue = function (fieldType, value, enumSet) {
|
|
52
|
-
if (isEmpty(value))
|
|
53
|
-
return value;
|
|
54
|
-
if (fieldType === FieldTypes.float)
|
|
55
|
-
return isFloat(value) ? parseFloat(value) : value;
|
|
56
|
-
if (fieldType === FieldTypes.integer)
|
|
57
|
-
return isInteger(value) ? parseInt(value) : value;
|
|
58
|
-
if (fieldType === FieldTypes.boolean)
|
|
59
|
-
return isTrue(value) ? true : false;
|
|
60
|
-
if (fieldType === FieldTypes.enum && enumSet)
|
|
61
|
-
return enumSet[value];
|
|
62
|
-
return value;
|
|
63
|
-
};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
2
|
-
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
|
-
return cooked;
|
|
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 { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
17
|
-
import { colors } from "../../../../styled/theme/colorPalette";
|
|
18
|
-
import styled, { css } from "styled-components";
|
|
19
|
-
import { TooltipProvider } from "../../../../common";
|
|
20
|
-
import { Div } from "../../../../styled/utils";
|
|
21
|
-
import { useSpreadsheetContext } from "../SpreadsheetContextProvider";
|
|
22
|
-
import { SortOrder } from "../common/types";
|
|
23
|
-
var ErrorCount = styled(Div)(function (_a) {
|
|
24
|
-
var _b = _a.theme, colors = _b.colors, c = _b.css;
|
|
25
|
-
return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: ", ";\n background: ", ";\n border: solid 1px ", ";\n padding: 4px 7px;\n border-radius: 56px;\n min-width: 24px;\n ", ";\n "], ["\n color: ", ";\n background: ", ";\n border: solid 1px ", ";\n padding: 4px 7px;\n border-radius: 56px;\n min-width: 24px;\n ", ";\n "])), colors.error, colors.red100, colors.error, c.centered);
|
|
26
|
-
});
|
|
27
|
-
export var SortIndicator = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n ", "\n svg {\n path {\n fill: ", ";\n }\n }\n"], ["\n ", "\n svg {\n path {\n fill: ", ";\n }\n }\n"])), function (p) {
|
|
28
|
-
return p.direction === SortOrder.ASC && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n transform: rotate(180deg);\n "], ["\n transform: rotate(180deg);\n "])));
|
|
29
|
-
}, function (p) { return p.theme.colors.gray300; });
|
|
30
|
-
export var FieldHeader = function (_a) {
|
|
31
|
-
var field = _a.field, sortByFieldErrors = _a.sortByFieldErrors, sortByFieldWarnings = _a.sortByFieldWarnings;
|
|
32
|
-
var _b = useSpreadsheetContext(), columnErrorCounts = _b.columnErrorCounts, columnWarningCounts = _b.columnWarningCounts, sortBy = _b.sortBy, spreadsheetFilter = _b.spreadsheetFilter, filteredInputValue = _b.filteredInputValue, setSortBy = _b.setSortBy;
|
|
33
|
-
var fieldErrorCount = columnErrorCounts[field.name];
|
|
34
|
-
var fieldWarningCount = columnWarningCounts[field.name];
|
|
35
|
-
var shouldRenderErrorCount = fieldErrorCount &&
|
|
36
|
-
filteredInputValue === "" &&
|
|
37
|
-
spreadsheetFilter.type === "rowBased" &&
|
|
38
|
-
spreadsheetFilter.byRow === "all";
|
|
39
|
-
var onHeaderClick = function () {
|
|
40
|
-
if ((sortBy === null || sortBy === void 0 ? void 0 : sortBy.field) === field.name && (sortBy === null || sortBy === void 0 ? void 0 : sortBy.direction) === SortOrder.ASC) {
|
|
41
|
-
setSortBy({
|
|
42
|
-
field: field.name,
|
|
43
|
-
direction: SortOrder.DESC,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
setSortBy({
|
|
48
|
-
field: field.name,
|
|
49
|
-
direction: SortOrder.ASC,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
return (_jsxs(Div, __assign({ "data-test-id": "column-header-".concat(field.name), p: "0 16px", spaceBetween: true, w100: true, alignCenter: true, onClick: onHeaderClick }, { children: [_jsxs(Div, __assign({ dflex: true }, { children: [_jsxs(Div, __assign({ truncateText: true, selectNone: true }, { children: [field.label, field.isRequired && "*"] })), _jsx(Div, __assign({ ml: 8, centered: true }, { children: (sortBy === null || sortBy === void 0 ? void 0 : sortBy.field) === field.name && (_jsx(SortIndicator, __assign({ direction: sortBy === null || sortBy === void 0 ? void 0 : sortBy.direction }, { children: chevronDown }))) }))] })), shouldRenderErrorCount && (_jsx(TooltipProvider, __assign({ mr: 3, w: 35, tooltip: "Sort by ".concat(field.label, " errors") }, { children: _jsx(ErrorCount, __assign({ "data-test-id": "column-errors-count-".concat(field.name), onClick: function (ev) {
|
|
54
|
-
ev.stopPropagation();
|
|
55
|
-
sortByFieldErrors(field.name);
|
|
56
|
-
} }, { children: _jsx(Div, __assign({ centered: true }, { children: _jsx(Div, __assign({ w: 35, textAlignCenter: true, label3: true, truncateText: true }, { children: fieldErrorCount })) })) })) }))), !fieldErrorCount && fieldWarningCount && (_jsx(TooltipProvider, __assign({ mr: 3, w: 35, tooltip: "Sort by ".concat(field.label, " errors") }, { children: _jsx(ErrorCount, __assign({ style: {
|
|
57
|
-
color: colors.orange1200,
|
|
58
|
-
background: colors.orange1100,
|
|
59
|
-
boxShadow: "0px 0px 0px 1px ".concat(colors.orange500, " inset"),
|
|
60
|
-
}, "data-test-id": "column-errors-count-".concat(field.name), onClick: function (ev) {
|
|
61
|
-
ev.stopPropagation();
|
|
62
|
-
sortByFieldWarnings(field.name);
|
|
63
|
-
} }, { children: _jsx(Div, __assign({ centered: true }, { children: _jsx(Div, __assign({ w: 35, textAlignCenter: true, label3: true, truncateText: true }, { children: fieldWarningCount })) })) })) })))] })));
|
|
64
|
-
};
|
|
65
|
-
export var chevronDown = (_jsx("svg", __assign({ width: "9", height: "5", viewBox: "0 0 9 5", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: _jsx("path", { d: "M4.31848 4.93945L0.421366 0.439453L8.2156 0.439454L4.31848 4.93945Z", fill: "#102622" }) })));
|
|
66
|
-
var templateObject_1, templateObject_2, templateObject_3;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
2
|
-
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
|
-
return cooked;
|
|
4
|
-
};
|
|
5
|
-
import { createGlobalStyle } from "styled-components";
|
|
6
|
-
// fix issues with external styles changing the spreadsheet scrollbar and layout
|
|
7
|
-
var GlobalStyle = createGlobalStyle(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", ";\n"], ["\n ", ";\n"])), function (p) { return p.theme.css.scrollbarDark; });
|
|
8
|
-
export default GlobalStyle;
|
|
9
|
-
var templateObject_1;
|
|
@@ -1,110 +0,0 @@
|
|
|
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
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
-
var t = {};
|
|
14
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
-
t[p] = s[p];
|
|
16
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
-
t[p[i]] = s[p[i]];
|
|
20
|
-
}
|
|
21
|
-
return t;
|
|
22
|
-
};
|
|
23
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
-
import React, { useCallback, useEffect, useMemo, useRef } from "react";
|
|
25
|
-
import { areEqual } from "react-window";
|
|
26
|
-
import { Div } from "../../../../styled/utils";
|
|
27
|
-
import { getTableHeight } from "../../../common";
|
|
28
|
-
import { spreadsheetHeaderHeightPx, spreadsheetRowHeightPx } from "../common";
|
|
29
|
-
import { useSpreadsheetContext } from "../SpreadsheetContextProvider";
|
|
30
|
-
import * as S from "../styles";
|
|
31
|
-
import { FieldHeader } from "./FieldHeader";
|
|
32
|
-
import GlobalStyle from "./GlobalStyle";
|
|
33
|
-
import { inputTypes } from "./inputs";
|
|
34
|
-
import { SpreadsheetRowCheckboxes } from "./SpreadsheetRowCheckboxes";
|
|
35
|
-
import ValidationProgress from "./ValidationProgress";
|
|
36
|
-
import { TableActions } from "../../../../common/Table/TableActions";
|
|
37
|
-
import { useImporterContext } from "../../../../Importer/contexts/ImporterContextProvider";
|
|
38
|
-
import useWindowDimensions from "../../../../utils/hooks/useWindowSize";
|
|
39
|
-
var getItemKey = function (record) { return record._meta.id; };
|
|
40
|
-
var SpreadsheetData = function (props) {
|
|
41
|
-
var _a = useSpreadsheetContext(), fields = _a.fields, data = _a.data, isLoading = _a.isLoading, isReadOnly = _a.isReadOnly, totalErrors = _a.totalErrors, validationPercentage = _a.validationPercentage, setSortByFieldErrors = _a.setSortByFieldErrors, options = _a.options, setSortByFieldWarnings = _a.setSortByFieldWarnings, selectedRows = _a.selectedRows, setSelectedRows = _a.setSelectedRows, checkboxColumnWidth = _a.checkboxColumnWidth, isFiltering = _a.isFiltering;
|
|
42
|
-
var currentStepIndex = useImporterContext().currentStepIndex;
|
|
43
|
-
var isOnSmallScreens = useWindowDimensions().isOnSmallScreens;
|
|
44
|
-
var canShowCheckboxOnCheckboxRowHover = currentStepIndex === 2;
|
|
45
|
-
var rowNumbersGridRef = useRef();
|
|
46
|
-
var rowCheckboxesGridRef = useRef();
|
|
47
|
-
useEffect(function () {
|
|
48
|
-
if (data.length > 0 && options.withSingleRowSelect)
|
|
49
|
-
setSelectedRows([data === null || data === void 0 ? void 0 : data[0]._meta.id]);
|
|
50
|
-
}, [options.withSingleRowSelect]);
|
|
51
|
-
var rowWidthScalingFactor = (function () {
|
|
52
|
-
// Spreadsheet will display 6 columns on the viewport and a small portion of the
|
|
53
|
-
// 7th column in the right side to let the user know they can scroll horizontally
|
|
54
|
-
var visibleColumnsOnTableViewport = 6;
|
|
55
|
-
// by multiplying by horizontalScrollVisibilityRatio the final rowWidth for the spreadsheet
|
|
56
|
-
// will be reduced in order to partially display the last column on the right side
|
|
57
|
-
// 0.95 was chosen because it's the ratio that looks better on the UI on desktop
|
|
58
|
-
// 0.9 was chosen because it's the ratio that looks better on the UI on mobile
|
|
59
|
-
var horizontalScrollVisibilityRatio = 0.95;
|
|
60
|
-
if (isOnSmallScreens) {
|
|
61
|
-
// When the screen is too small the Spreadsheet will display 3 columns on the viewport
|
|
62
|
-
// and a small portion of the 4th column in the right side to let the user know they can scroll horizontally
|
|
63
|
-
visibleColumnsOnTableViewport = 3;
|
|
64
|
-
horizontalScrollVisibilityRatio = 0.9;
|
|
65
|
-
}
|
|
66
|
-
var res = fields.length / visibleColumnsOnTableViewport;
|
|
67
|
-
if (res <= 1)
|
|
68
|
-
return 1;
|
|
69
|
-
/*
|
|
70
|
-
multiply the rowWidthScalingFactor by 0.95/0.9 to let the user know they can scroll
|
|
71
|
-
horizontally (will display partial column on the right)
|
|
72
|
-
*/
|
|
73
|
-
return res * horizontalScrollVisibilityRatio;
|
|
74
|
-
})();
|
|
75
|
-
var columns = useMemo(function () {
|
|
76
|
-
return fields.map(function (field) { return ({
|
|
77
|
-
Header: function () { return (_jsx(FieldHeader, { field: field, sortByFieldErrors: setSortByFieldErrors, sortByFieldWarnings: setSortByFieldWarnings })); },
|
|
78
|
-
Content: function (record) {
|
|
79
|
-
var Input = inputTypes[field.type];
|
|
80
|
-
var rowIndex = record.rowIndex, columnWidth = record.columnWidth, recordProp = __rest(record, ["rowIndex", "columnWidth"]);
|
|
81
|
-
return (_jsx(Input, { id: "".concat(field.name, "-").concat(rowIndex), fieldType: field.type, name: field.name, options: field.options, record: recordProp, columnWidth: columnWidth }));
|
|
82
|
-
},
|
|
83
|
-
}); });
|
|
84
|
-
}, [fields, setSortByFieldErrors]);
|
|
85
|
-
var onTableScroll = useCallback(function (scrollTop) {
|
|
86
|
-
if (rowNumbersGridRef.current) {
|
|
87
|
-
var grid = rowNumbersGridRef.current;
|
|
88
|
-
grid.scrollTo({ scrollTop: scrollTop });
|
|
89
|
-
}
|
|
90
|
-
if (rowCheckboxesGridRef.current) {
|
|
91
|
-
var grid = rowCheckboxesGridRef.current;
|
|
92
|
-
grid.scrollTo({ scrollTop: scrollTop });
|
|
93
|
-
}
|
|
94
|
-
}, []);
|
|
95
|
-
var dataLength = data === null || data === void 0 ? void 0 : data.length;
|
|
96
|
-
var spreadsheetHeight = useMemo(function () {
|
|
97
|
-
return getTableHeight({
|
|
98
|
-
headerHeight: spreadsheetHeaderHeightPx,
|
|
99
|
-
rowHeight: spreadsheetRowHeightPx,
|
|
100
|
-
dataCount: dataLength,
|
|
101
|
-
minimumTableHeight: 450,
|
|
102
|
-
maxVisibleRows: 12,
|
|
103
|
-
});
|
|
104
|
-
}, [dataLength]);
|
|
105
|
-
var showValidationProgress = !isReadOnly && validationPercentage < 100;
|
|
106
|
-
var isReviewStep = currentStepIndex === 2;
|
|
107
|
-
return (_jsxs(S.SpreadSheetData, __assign({ h100: true, flexColumn: true, className: props.className }, { children: [_jsx(GlobalStyle, {}), showValidationProgress && (_jsx(Div, __assign({ h: 32 }, { children: _jsx(ValidationProgress, { totalErrors: totalErrors, validationPercentage: validationPercentage }) }))), _jsxs(S.SpreadSheetContainer, __assign({ flexColumn: true, w100: true, h100: true }, { children: [_jsx(Div, __assign({ w100: true, justifyCenter: true }, { children: isReviewStep && _jsx(TableActions, {}) })), _jsxs(S.SpreadSheetWrapper, __assign({ canShowCheckboxOnHover: !showValidationProgress && canShowCheckboxOnCheckboxRowHover, shouldShowOnlyCheckbox: (!showValidationProgress && selectedRows.length > 0) ||
|
|
108
|
-
currentStepIndex === 0, dflex: true, h100: true }, { children: [(options === null || options === void 0 ? void 0 : options.showCheckboxColumn) && (_jsx(SpreadsheetRowCheckboxes, { gridRef: rowCheckboxesGridRef, height: spreadsheetHeight, isLoadingData: showValidationProgress })), _jsx(S.TableView, { tableHeadersHeight: spreadsheetHeaderHeightPx, rowHeight: spreadsheetRowHeightPx, h: null, rowWidthScalingFactor: rowWidthScalingFactor, data: data, columns: columns, isLoading: isLoading, onTableScroll: onTableScroll, getItemKey: getItemKey, checkboxColumnWidth: checkboxColumnWidth, isFiltering: isFiltering })] }))] }))] })));
|
|
109
|
-
};
|
|
110
|
-
export default React.memo(SpreadsheetData, areEqual);
|