fuse-importer 0.25.7 → 0.25.9
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/Matcher/EnumFieldsMatchers/EnumFieldMatcher/tableColumns.js +1 -1
- package/lib/esm/Importer/Matcher/HeaderMatcher/tableColumns.js +1 -1
- package/lib/esm/Importer/Review/ReviewWithContext.js +4 -1
- package/lib/esm/Importer/Stepper/index.js +4 -3
- package/lib/esm/Importer/Uploader/HeadersPreview.js +4 -1
- package/lib/esm/Importer/common/GlobalStyle.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider.d.ts +1 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider.js +4 -5
- package/lib/esm/Importer/common/Spreadsheet/common/index.d.ts +3 -3
- package/lib/esm/Importer/common/Spreadsheet/common/index.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +3 -2
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +4 -1
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +9 -2
- package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +1 -1
- package/lib/esm/Importer/common/utils.js +1 -1
- package/lib/esm/common/Table/TableActions/SearchRows.js +1 -1
- package/lib/esm/common/Table/TableView/CustomScrollbar.d.ts +2 -0
- package/lib/esm/common/Table/TableView/CustomScrollbar.js +34 -0
- package/lib/esm/common/Table/TableView/TableCells.js +2 -2
- package/lib/esm/common/Table/TableView/TableHeaders.d.ts +4 -4
- package/lib/esm/common/Table/TableView/TableHeaders.js +8 -11
- package/lib/esm/common/Table/TableView/TableRow.d.ts +2 -2
- package/lib/esm/common/Table/TableView/TableRow.js +4 -4
- package/lib/esm/common/Table/TableView/common.d.ts +1 -1
- package/lib/esm/common/Table/TableView/common.js +2 -5
- package/lib/esm/common/Table/TableView/index.d.ts +3 -3
- package/lib/esm/common/Table/TableView/index.js +38 -8
- package/lib/esm/common/inputs/Checkbox.js +1 -1
- package/lib/esm/common/inputs/TextInput.js +1 -1
- package/lib/esm/index.d.ts +6 -0
- package/lib/esm/index.js +75 -21
- package/lib/esm/styled/fontsURL.d.ts +9 -0
- package/lib/esm/styled/fontsURL.js +27 -0
- package/lib/esm/utils/hooks/useWindowSize.d.ts +11 -0
- package/lib/esm/utils/hooks/useWindowSize.js +23 -0
- package/lib/esm/utils/hooks.d.ts +1 -0
- package/lib/esm/utils/hooks.js +1 -0
- package/lib/main.js +12 -12
- package/package.json +2 -1
|
@@ -41,7 +41,7 @@ export var tableColumns = [
|
|
|
41
41
|
newEnumFieldValueMatchings[templateHeaderLabel][uploadedDataValue] = selected;
|
|
42
42
|
setEnumFieldValueMatchings(newEnumFieldValueMatchings);
|
|
43
43
|
};
|
|
44
|
-
return (_jsx(Div, __assign({ w100: true }, { children: _jsx(Autocomplete, { w: "90%", placeholder: t("columns.placeholder"), onChange: onChange, value: uploadedDataValueMatching, options: valueOptions.map(function (vo) { return ({
|
|
44
|
+
return (_jsx(Div, __assign({ w100: true }, { children: _jsx(Autocomplete, { w: "90%", placeholder: t("columns.placeholder"), onChange: onChange, placement: "bottom", value: uploadedDataValueMatching, options: valueOptions.map(function (vo) { return ({
|
|
45
45
|
value: vo,
|
|
46
46
|
label: vo,
|
|
47
47
|
}); }) }) })));
|
|
@@ -27,7 +27,7 @@ export var tableColumns = [
|
|
|
27
27
|
newTemplateHeaderMatchings[ourColumns] = selected;
|
|
28
28
|
setTemplateHeaderMatchings(newTemplateHeaderMatchings);
|
|
29
29
|
};
|
|
30
|
-
return (_jsx(Autocomplete, { w: "92%", onChange: onChange, value: yourColumns, id: "your-column-".concat(ourColumns), options: uploadedDataHeaders.map(function (h) { return ({
|
|
30
|
+
return (_jsx(Autocomplete, { w: "92%", onChange: onChange, value: yourColumns, placement: "bottom", id: "your-column-".concat(ourColumns), options: uploadedDataHeaders.map(function (h) { return ({
|
|
31
31
|
value: h,
|
|
32
32
|
label: h,
|
|
33
33
|
}); }) }));
|
|
@@ -22,12 +22,15 @@ import { AppResponseModal } from "./AppResponseModal";
|
|
|
22
22
|
import { useReviewContext } from "./ReviewContextProvider";
|
|
23
23
|
import styled from "styled-components";
|
|
24
24
|
import { useTranslation } from "react-i18next";
|
|
25
|
+
import useWindowDimensions from "../../utils/hooks/useWindowSize";
|
|
25
26
|
var TitleContainer = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject([""], [""])));
|
|
26
27
|
var ReviewWithContext = function () {
|
|
27
28
|
var _a = useReviewContext(), fields = _a.reviewFields, initialDataSet = _a.reviewInitialDataSet, options = _a.options, onValidateRecord = _a.onValidateRecord, onDataSetChanged = _a.onDataSetChanged, onValidationStateChanged = _a.onValidationStateChanged;
|
|
29
|
+
var isOnSmallScreens = useWindowDimensions().isOnSmallScreens;
|
|
28
30
|
var _b = useImporterContext(), selectedRows = _b.selectedRows, setSelectedRows = _b.setSelectedRows, isUsingManualImport = _b.isUsingManualImport;
|
|
29
31
|
var t = useTranslation("review").t;
|
|
30
|
-
var
|
|
32
|
+
var rowWidth = getSpreadsheetRowWidth(fields, isOnSmallScreens ? 3 : 6);
|
|
33
|
+
var spreadsheetUI = initialDataSet && (_jsx(Spreadsheet, { options: __assign(__assign({}, options), { showCheckboxColumn: true }), selectedRows: selectedRows, setSelectedRows: setSelectedRows, initialDataSet: initialDataSet, fields: fields, rowWidth: rowWidth, onDataSetChanged: onDataSetChanged, onValidateRecord: onValidateRecord, onValidationStateChanged: onValidationStateChanged }));
|
|
31
34
|
return (_jsxs(Div, __assign({ centered: true, flexColumn: true, h100: true }, { children: [_jsx(AppResponseModal, {}), _jsxs(Div, __assign({ w100: true, h100: true, flexColumn: true }, { children: [_jsx(TitleContainer, __assign({ flexColumn: true, ml: 32 }, { children: _jsx(Div, __assign({ h2: true, mt: 40, mb: 40 }, { children: t(isUsingManualImport.current ? "manual_importer_title" : "title") })) })), _jsx(Div, __assign({ h100: true, w100: true, justifyCenter: true }, { children: spreadsheetUI }))] }))] })));
|
|
32
35
|
};
|
|
33
36
|
export default ReviewWithContext;
|
|
@@ -35,7 +35,8 @@ var StepperButtonContainer = styled(Div)(templateObject_5 || (templateObject_5 =
|
|
|
35
35
|
var align = _a.align;
|
|
36
36
|
return align === "left" ? "flex-start" : "flex-end";
|
|
37
37
|
});
|
|
38
|
-
var
|
|
38
|
+
var GoBackButtonWrapper = styled(Div)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n @media (max-width: 740px) {\n display: none;\n }\n"], ["\n @media (max-width: 740px) {\n display: none;\n }\n"])));
|
|
39
|
+
var CloseIcon = styled(Div)(function () { return css(templateObject_7 || (templateObject_7 = __makeTemplateObject([""], [""]))); });
|
|
39
40
|
export var Stepper = function (_a) {
|
|
40
41
|
var stepLabels = _a.stepLabels, logoURL = _a.logoURL;
|
|
41
42
|
var _b = useState(false), isUnmatchedHeadersModalOpen = _b[0], setIsUnmatchedHeadersModalOpen = _b[1];
|
|
@@ -107,10 +108,10 @@ export var Stepper = function (_a) {
|
|
|
107
108
|
var isCompleted = index < currentStepIndex;
|
|
108
109
|
return (_jsxs(Div, __assign({ centered: true }, { children: [_jsx(Step, { index: index, label: label, isCompleted: isCompleted, isSelected: index === currentStepIndex }), !isLast && (_jsx(Div, __assign({ ml: 18, mr: 18, dflex: true }, { children: _jsx(ChevronRightIcon, {}) })))] }), index));
|
|
109
110
|
}) })));
|
|
110
|
-
var leftButtonUI = (_jsx(Div, __assign({
|
|
111
|
+
var leftButtonUI = (_jsx(Div, __assign({ style: { flex: 1 } }, { children: _jsxs(StepperButtonContainer, __assign({ align: "left" }, { children: [logoURL && (_jsx(Div, __assign({ forDesktop: true }, { children: _jsx(Logo, { src: logoURL, alt: "" }) }))), currentStepIndex > 0 && !appResponse && (_jsx(GoBackButtonWrapper, { children: _jsx(Button, __assign({ variant: "secondary", onClick: goBack }, { children: t("stepper.go_back") })) }))] })) })));
|
|
111
112
|
var rightButtonUI = (_jsxs(StepperButtonContainer, __assign({ align: "right" }, { children: [(isMatchStep || isVerifyStep) && (_jsx(Button, __assign({ variant: "primary", onClick: continueToNextStep }, { children: t("stepper.continue") }))), isReviewStep && (_jsx(Button, __assign({ variant: "primary", isDisabled: isSubmitDisabled, onClick: function () { return setIsSubmitModalOpen(true); } }, { children: t("stepper.submit") }))), _jsx(CloseIcon, __assign({ "data-test-id": "close-importer", centered: true, clickable: true, onClick: handleOnClose }, { children: closeIconCondensed }))] })));
|
|
112
113
|
return (_jsxs(_Fragment, { children: [_jsx(StepperWrapper, __assign({ pRelative: true, alignCenter: true, w100: true, h: 72, centered: true }, { children: _jsxs(StepperContainer, { children: [leftButtonUI, _jsx(Steps, __assign({ alignCenter: true }, { children: stepsUI })), rightButtonUI] }) })), _jsx(UnmatchedHeadersModal, { isUnmatchedHeadersModalOpen: isUnmatchedHeadersModalOpen, unmatchedHeadersCount: unmatchedHeadersCount, onSetStep: function () { return setStep(); }, onCloseUnmatchedHeadersModal: function () {
|
|
113
114
|
return setIsUnmatchedHeadersModalOpen(false);
|
|
114
115
|
} }), _jsx(StepperSubmitModal, { isSubmitModalOpen: isSubmitModalOpen, onCloseModal: function () { return setIsSubmitModalOpen(false); }, onSubmit: onSubmit }), _jsx(ConfirmCloseModal, { isOpen: isConfirmCloseModalOpen, onClose: function () { return setIsConfirmCloseModalOpen(false); }, onCloseImporter: onClose })] }));
|
|
115
116
|
};
|
|
116
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
|
|
117
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
|
|
@@ -22,13 +22,16 @@ import { HeaderButtons } from "./HeaderButtons";
|
|
|
22
22
|
import { useImporterContext } from "../contexts/ImporterContextProvider";
|
|
23
23
|
import { useTranslation } from "react-i18next";
|
|
24
24
|
import styled from "styled-components";
|
|
25
|
+
import useWindowDimensions from "../../utils/hooks/useWindowSize";
|
|
25
26
|
var HeaderContainer = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n margin-left: 32px;\n\n @media (max-width: 1050px) {\n margin-left: 0px;\n\n > div:first-of-type {\n text-align: center;\n }\n\n div:last-of-type {\n margin-left: 0px;\n }\n }\n"], ["\n margin-left: 32px;\n\n @media (max-width: 1050px) {\n margin-left: 0px;\n\n > div:first-of-type {\n text-align: center;\n }\n\n div:last-of-type {\n margin-left: 0px;\n }\n }\n"])));
|
|
26
27
|
var DescriptionAndButtons = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n @media (max-width: 1050px) {\n flex-direction: column;\n gap: 16px;\n }\n"], ["\n @media (max-width: 1050px) {\n flex-direction: column;\n gap: 16px;\n }\n"])));
|
|
27
28
|
var HeadersPreview = function () {
|
|
28
29
|
var _a = useReviewContext(), fields = _a.previewFields, initialDataSet = _a.previewInitialDataSet;
|
|
30
|
+
var isOnSmallScreens = useWindowDimensions().isOnSmallScreens;
|
|
29
31
|
var t = useTranslation("upload").t;
|
|
30
32
|
var _b = useImporterContext(), selectedRows = _b.selectedRows, setSelectedRows = _b.setSelectedRows;
|
|
31
|
-
|
|
33
|
+
var rowWidth = getSpreadsheetRowWidth(fields, isOnSmallScreens ? 3 : 6);
|
|
34
|
+
return (_jsxs(Div, __assign({ flexColumn: true, h100: true }, { children: [_jsxs(HeaderContainer, { children: [_jsx(Div, __assign({ h2: true, mt: 40, mb: 16 }, { children: t("headers_preview.title") })), _jsxs(DescriptionAndButtons, __assign({ body1: true, mb: 24, alignCenter: true }, { children: [t("headers_preview.description"), _jsx(HeaderButtons, {})] }))] }), _jsx(Div, __assign({ w100: true, h100: true, justifyCenter: true }, { children: initialDataSet && (_jsx(Spreadsheet, { rowWidth: rowWidth, isReadOnly: true, initialDataSet: initialDataSet, fields: fields, highlightFirstRow: true, options: {
|
|
32
35
|
showCheckboxColumn: true,
|
|
33
36
|
firstRowIsHeader: true,
|
|
34
37
|
}, selectedRows: selectedRows, setSelectedRows: setSelectedRows })) }))] })));
|
|
@@ -3,5 +3,5 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
|
|
|
3
3
|
return cooked;
|
|
4
4
|
};
|
|
5
5
|
import { createGlobalStyle } from "styled-components";
|
|
6
|
-
export var GlobalStyle = createGlobalStyle(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n
|
|
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
7
|
var templateObject_1;
|
|
@@ -24,7 +24,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
24
24
|
import { get } from "lodash";
|
|
25
25
|
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from "react";
|
|
26
26
|
import { useValidationState } from "./hooks";
|
|
27
|
-
import { addEmptyRows } from "../../../Importer/data";
|
|
28
27
|
import { addMeta } from "../../../Importer/data";
|
|
29
28
|
var SpreadsheetContext = createContext({});
|
|
30
29
|
export var SpreadsheetContextProvider = function (_a) {
|
|
@@ -46,14 +45,14 @@ export var SpreadsheetContextProvider = function (_a) {
|
|
|
46
45
|
setIsLoading: setIsLoading,
|
|
47
46
|
onValidateRecord: onValidateRecord,
|
|
48
47
|
}), errorsRef = _h.errorsRef, warningsRef = _h.warningsRef, updateRecordAndRevalidate = _h.updateRecordAndRevalidate, deleteRecords = _h.deleteRecords, filterRecordsBySearchValue = _h.filterRecordsBySearchValue, validationState = __rest(_h, ["errorsRef", "warningsRef", "updateRecordAndRevalidate", "deleteRecords", "filterRecordsBySearchValue"]);
|
|
49
|
-
var addNewRowsToSpreadsheet = function () {
|
|
48
|
+
var addNewRowsToSpreadsheet = useCallback(function () {
|
|
50
49
|
var highestRowIndex = Math.max.apply(Math, Object.values(dataSet).map(function (obj) { return obj._meta.rowIndex; }));
|
|
51
50
|
var newRow = addMeta({}, highestRowIndex + 1);
|
|
52
51
|
setDataSet(function (oldValues) {
|
|
53
52
|
var _a;
|
|
54
53
|
return (__assign(__assign({}, oldValues), (_a = {}, _a[newRow._meta.id] = newRow, _a)));
|
|
55
54
|
});
|
|
56
|
-
};
|
|
55
|
+
}, [dataSet]);
|
|
57
56
|
// sort data based on errors (errors group on top and not errors group at bottom)
|
|
58
57
|
var data = useMemo(function () {
|
|
59
58
|
var filteredObj = filterRecordsBySearchValue(dataSet, filteredInputValue);
|
|
@@ -71,7 +70,7 @@ export var SpreadsheetContextProvider = function (_a) {
|
|
|
71
70
|
return bHasErrors ? 1 : -1;
|
|
72
71
|
});
|
|
73
72
|
}, [dataSet, filteredInputValue, sortByFieldErrors, sortByFieldWarnings]);
|
|
74
|
-
|
|
73
|
+
var isFiltering = useMemo(function () { return !!filteredInputValue; }, [filteredInputValue]);
|
|
75
74
|
useEffect(function () {
|
|
76
75
|
onDataSetChanged && onDataSetChanged(dataSet);
|
|
77
76
|
var dataSetKeys = Object.keys(dataSet);
|
|
@@ -113,7 +112,7 @@ export var SpreadsheetContextProvider = function (_a) {
|
|
|
113
112
|
var baseCheckboxColumnWidth = lastRowIndexLength * singleLetterWidth + horizontalSpacing;
|
|
114
113
|
return baseCheckboxColumnWidth < 40 ? 40 : baseCheckboxColumnWidth;
|
|
115
114
|
}, [data]);
|
|
116
|
-
var value = __assign(__assign({ data: data, fields: fields, isLoading: isLoading }, validationState), { isReadOnly: isReadOnly, rowWidth: rowWidth, sortByFieldErrors: sortByFieldErrors, sortByFieldWarnings: sortByFieldWarnings, highlightFirstRow: highlightFirstRow, options: options, setIsLoading: setIsLoading, setSortByFieldErrors: handleSortByFieldErrors, setSortByFieldWarnings: handleSortByFieldWarnings, onValidateRecord: onValidateRecord, updateRecord: updateRecordAndRevalidate, selectedRows: selectedRows, setSelectedRows: setSelectedRows, deleteRecords: deleteRecords, filteredInputValue: filteredInputValue, setFilteredInputValue: setFilteredInputValue, lastClickedIndexRef: lastClickedIndexRef, addNewRowsToSpreadsheet: addNewRowsToSpreadsheet, checkboxColumnWidth: checkboxColumnWidth });
|
|
115
|
+
var value = __assign(__assign({ data: data, fields: fields, isLoading: isLoading }, validationState), { isReadOnly: isReadOnly, rowWidth: rowWidth, sortByFieldErrors: sortByFieldErrors, sortByFieldWarnings: sortByFieldWarnings, highlightFirstRow: highlightFirstRow, options: options, setIsLoading: setIsLoading, setSortByFieldErrors: handleSortByFieldErrors, setSortByFieldWarnings: handleSortByFieldWarnings, onValidateRecord: onValidateRecord, updateRecord: updateRecordAndRevalidate, selectedRows: selectedRows, setSelectedRows: setSelectedRows, deleteRecords: deleteRecords, filteredInputValue: filteredInputValue, setFilteredInputValue: setFilteredInputValue, lastClickedIndexRef: lastClickedIndexRef, addNewRowsToSpreadsheet: addNewRowsToSpreadsheet, checkboxColumnWidth: checkboxColumnWidth, isFiltering: isFiltering });
|
|
117
116
|
return (_jsx(SpreadsheetContext.Provider, __assign({ value: value }, { children: children })));
|
|
118
117
|
};
|
|
119
118
|
export var useSpreadsheetContext = function () { return useContext(SpreadsheetContext); };
|
|
@@ -2,9 +2,9 @@ import { Record, Field, FieldTypes } from "../../../../types";
|
|
|
2
2
|
export declare const spreadsheetRowHeightPx = 40;
|
|
3
3
|
export declare const spreadsheetHeaderHeightPx = 40;
|
|
4
4
|
export declare const isNullOrUndefined: (value: any) => boolean;
|
|
5
|
-
export declare const isEmpty: (value:
|
|
6
|
-
export declare const isEmail: (value:
|
|
7
|
-
export declare const isUrl: (value:
|
|
5
|
+
export declare const isEmpty: (value: string) => boolean;
|
|
6
|
+
export declare const isEmail: (value: string) => boolean;
|
|
7
|
+
export declare const isUrl: (value: string) => boolean;
|
|
8
8
|
export declare const isTrue: (value: string) => boolean;
|
|
9
9
|
export declare const isFalse: (value: string) => boolean;
|
|
10
10
|
export declare const isBoolean: (value: string) => boolean;
|
|
@@ -11,7 +11,7 @@ export var isEmpty = function (value) {
|
|
|
11
11
|
(typeof value === "string" && value.trim().length === 0));
|
|
12
12
|
};
|
|
13
13
|
export var isEmail = function (value) {
|
|
14
|
-
var emailRegex = /^[\w
|
|
14
|
+
var emailRegex = /^[\w+.-]+@([\w-]+\.)+[\w-]{2,4}$/;
|
|
15
15
|
return emailRegex.test(value);
|
|
16
16
|
};
|
|
17
17
|
export var isUrl = function (value) {
|
|
@@ -37,7 +37,7 @@ import { TableActions } from "../../../../common/Table/TableActions";
|
|
|
37
37
|
import { useImporterContext } from "../../../../Importer/contexts/ImporterContextProvider";
|
|
38
38
|
var getItemKey = function (record) { return record._meta.id; };
|
|
39
39
|
var SpreadsheetData = function () {
|
|
40
|
-
var _a = useSpreadsheetContext(), fields = _a.fields, data = _a.data, isLoading = _a.isLoading, isReadOnly = _a.isReadOnly, rowWidth = _a.rowWidth, totalErrors = _a.totalErrors, validationPercentage = _a.validationPercentage, setSortByFieldErrors = _a.setSortByFieldErrors, options = _a.options, setSortByFieldWarnings = _a.setSortByFieldWarnings, selectedRows = _a.selectedRows, checkboxColumnWidth = _a.checkboxColumnWidth;
|
|
40
|
+
var _a = useSpreadsheetContext(), fields = _a.fields, data = _a.data, isLoading = _a.isLoading, isReadOnly = _a.isReadOnly, rowWidth = _a.rowWidth, totalErrors = _a.totalErrors, validationPercentage = _a.validationPercentage, setSortByFieldErrors = _a.setSortByFieldErrors, options = _a.options, setSortByFieldWarnings = _a.setSortByFieldWarnings, selectedRows = _a.selectedRows, checkboxColumnWidth = _a.checkboxColumnWidth, isFiltering = _a.isFiltering;
|
|
41
41
|
var currentStepIndex = useImporterContext().currentStepIndex;
|
|
42
42
|
var canShowCheckboxOnCheckboxRowHover = currentStepIndex === 2;
|
|
43
43
|
var rowNumbersGridRef = useRef();
|
|
@@ -83,6 +83,7 @@ var SpreadsheetData = function () {
|
|
|
83
83
|
});
|
|
84
84
|
}, [dataLength]);
|
|
85
85
|
var showValidationProgress = !isReadOnly && validationPercentage < 100;
|
|
86
|
-
|
|
86
|
+
var isReviewStep = currentStepIndex === 2;
|
|
87
|
+
return (_jsxs(S.SpreadSheetData, __assign({ h100: true, flexColumn: true }, { 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, dflex: true, h100: true }, { children: [(options === null || options === void 0 ? void 0 : options.showCheckboxColumn) && (_jsx(SpreadsheetRowCheckboxes, { gridRef: rowCheckboxesGridRef, spreadsheetHasXScroll: rowWidth > 1, height: spreadsheetHeight, firstRowIsHeader: options === null || options === void 0 ? void 0 : options.firstRowIsHeader, isLoadingData: showValidationProgress })), _jsx(S.TableView, { tableHeadersHeight: spreadsheetHeaderHeightPx, highlightFirstRow: isReadOnly, rowHeight: spreadsheetRowHeightPx, h: spreadsheetHeight, rowWidth: rowWidth, data: data, columns: columns, isLoading: isLoading, onTableScroll: onTableScroll, getItemKey: getItemKey, shouldHaveCustomScrollbar: true, checkboxColumnWidth: checkboxColumnWidth, isFiltering: isFiltering })] }))] }))] })));
|
|
87
88
|
};
|
|
88
89
|
export default React.memo(SpreadsheetData, areEqual);
|
|
@@ -44,7 +44,10 @@ import { useSpreadsheetContext } from "../SpreadsheetContextProvider";
|
|
|
44
44
|
import { Checkbox } from "../../../../common/inputs/Checkbox";
|
|
45
45
|
import { useImporterContext } from "../../../contexts/ImporterContextProvider";
|
|
46
46
|
import ReactVirtualizedAutoSizer from "react-virtualized-auto-sizer";
|
|
47
|
-
var StyledGrid = styled(Grid)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n
|
|
47
|
+
var StyledGrid = styled(Grid)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n overflow-y: scroll;\n"], ["\n background: ", ";\n overflow-y: scroll;\n"])), function (_a) {
|
|
48
|
+
var theme = _a.theme;
|
|
49
|
+
return theme.colors.white50;
|
|
50
|
+
});
|
|
48
51
|
var gridStyles = {
|
|
49
52
|
outline: "none",
|
|
50
53
|
willChange: "unset",
|
|
@@ -20,7 +20,7 @@ import { Autocomplete as AutocompleteBase, } from "../../../../../common/inputs/
|
|
|
20
20
|
import { SelectMenuDiv, SelectMenuScrollArea, } from "../../../../../common/inputs/SelectMenu";
|
|
21
21
|
import { HTMLInput, TextInputIcon, } from "../../../../../common/inputs/TextInput";
|
|
22
22
|
import { spreadsheetRowHeightPx } from "../../common";
|
|
23
|
-
var Autocomplete = styled(AutocompleteBase)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n ", " {\n border: none;\n border-radius: 0;\n margin: 0;\n background: transparent;\n height: ", "px;\n padding: 0 12px;\n\n ", "\n\n ::placeholder {\n ", "\n\n ", "\n\n ::placeholder {\n ", "\n }\n }\n :focus {\n border: none;\n box-shadow: none;\n }\n }\n ", " {\n right: 6px;\n }\n ", " {\n border-radius: 7px;\n }\n ", " {\n padding: 4px;\n }\n"], ["\n ", " {\n border: none;\n border-radius: 0;\n margin: 0;\n background: transparent;\n height: ", "px;\n padding: 0 12px;\n\n ", "\n\n ::placeholder {\n ", "\n\n ", "\n\n ::placeholder {\n ", "\n }\n }\n :focus {\n border: none;\n box-shadow: none;\n }\n }\n ", " {\n right: 6px;\n }\n ", " {\n border-radius: 7px;\n }\n ", " {\n padding: 4px;\n }\n"])), HTMLInput, spreadsheetRowHeightPx - 5, function (p) {
|
|
23
|
+
var Autocomplete = styled(AutocompleteBase)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n ", " {\n border: none;\n border-radius: 0;\n margin: 0;\n background: transparent;\n height: ", "px;\n padding: 0 12px;\n\n ", "\n\n ::placeholder {\n ", "\n\n ", "\n\n ::placeholder {\n ", "\n }\n }\n\n :focus {\n border: none;\n box-shadow: none;\n }\n\n :hover {\n background: transparent;\n }\n }\n ", " {\n right: 6px;\n }\n ", " {\n border-radius: 7px;\n }\n ", " {\n padding: 4px;\n }\n"], ["\n ", " {\n border: none;\n border-radius: 0;\n margin: 0;\n background: transparent;\n height: ", "px;\n padding: 0 12px;\n\n ", "\n\n ::placeholder {\n ", "\n\n ", "\n\n ::placeholder {\n ", "\n }\n }\n\n :focus {\n border: none;\n box-shadow: none;\n }\n\n :hover {\n background: transparent;\n }\n }\n ", " {\n right: 6px;\n }\n ", " {\n border-radius: 7px;\n }\n ", " {\n padding: 4px;\n }\n"])), HTMLInput, spreadsheetRowHeightPx - 5, function (p) {
|
|
24
24
|
return p.hasWarning && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.orange1200; });
|
|
25
25
|
}, function (p) {
|
|
26
26
|
return p.hasWarning && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.orange1200; });
|
|
@@ -35,7 +35,7 @@ export var SpreadsheetInput = function (_a) {
|
|
|
35
35
|
return setValue(value);
|
|
36
36
|
} }, props)) })));
|
|
37
37
|
};
|
|
38
|
-
export var Input = styled.input(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n
|
|
38
|
+
export var Input = styled.input(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background: transparent;\n border: none;\n box-shadow: none;\n box-sizing: border-box;\n height: calc(100% - 2px);\n margin: 0px;\n outline: none;\n width: 100%;\n\n ::-webkit-outer-spin-button,\n ::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n /* Firefox */\n -moz-appearance: textfield;\n\n padding: 0 12px;\n ", ";\n color: ", ";\n ::placeholder {\n color: ", ";\n }\n\n ", "\n\n ", "\n"], ["\n background: transparent;\n border: none;\n box-shadow: none;\n box-sizing: border-box;\n height: calc(100% - 2px);\n margin: 0px;\n outline: none;\n width: 100%;\n\n ::-webkit-outer-spin-button,\n ::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n /* Firefox */\n -moz-appearance: textfield;\n\n padding: 0 12px;\n ", ";\n color: ", ";\n ::placeholder {\n color: ", ";\n }\n\n ", "\n\n ", "\n"])), function (props) { return props.theme.css.body1; }, function (props) { return props.theme.colors.gray1000; }, function (props) { return props.theme.colors.placeholder; }, function (p) {
|
|
39
39
|
return p.hasWarning && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.orange1200; });
|
|
40
40
|
}, function (p) {
|
|
41
41
|
return p.hasError && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.error; });
|
|
@@ -49,6 +49,7 @@ import { omit, set } from "lodash";
|
|
|
49
49
|
import { useCallback, useEffect, useMemo, useRef, useState, } from "react";
|
|
50
50
|
import { sleep } from "../../..";
|
|
51
51
|
import { selectValidatorsFor, validateRecord } from "./validation";
|
|
52
|
+
import { addEmptyRows, recordListToDataSet } from "../../../Importer/data";
|
|
52
53
|
var checkIfHasErrors = function (errors) {
|
|
53
54
|
return errors && Object.keys(errors).length > 0;
|
|
54
55
|
};
|
|
@@ -81,8 +82,9 @@ var isObject = function (value) {
|
|
|
81
82
|
};
|
|
82
83
|
var includesSearchValue = function (value, searchValue) {
|
|
83
84
|
if (typeof value === "string" || typeof value === "number") {
|
|
84
|
-
var stringValue = String(value);
|
|
85
|
-
|
|
85
|
+
var stringValue = String(value).toLowerCase();
|
|
86
|
+
var searchValueLower = searchValue.toLowerCase();
|
|
87
|
+
return stringValue.includes(searchValueLower);
|
|
86
88
|
}
|
|
87
89
|
return false;
|
|
88
90
|
};
|
|
@@ -119,6 +121,11 @@ export var useValidationState = function (_a) {
|
|
|
119
121
|
}
|
|
120
122
|
}
|
|
121
123
|
}
|
|
124
|
+
// To ensure that rows are always displayed, even when the search query is empty,
|
|
125
|
+
// we return an empty record list when the search yields no results.
|
|
126
|
+
if (Object.keys(filteredObj).length === 0) {
|
|
127
|
+
return recordListToDataSet(addEmptyRows([], fields), fields);
|
|
128
|
+
}
|
|
122
129
|
return filteredObj;
|
|
123
130
|
};
|
|
124
131
|
//Validate record and update dataSet
|
|
@@ -6,5 +6,5 @@ interface SpreadSheetWrapperProps {
|
|
|
6
6
|
export declare const SpreadSheetData: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps, never>;
|
|
7
7
|
export declare const SpreadSheetWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps & SpreadSheetWrapperProps, never>;
|
|
8
8
|
export declare const SpreadSheetContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps, never>;
|
|
9
|
-
export declare const TableView: import("styled-components").StyledComponent<import("react").MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, highlightFirstRow, setSortBy, rowWidth, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, shouldBeDraggable,
|
|
9
|
+
export declare const TableView: import("styled-components").StyledComponent<import("react").MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, highlightFirstRow, setSortBy, rowWidth, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, shouldBeDraggable, shouldHaveCustomScrollbar, checkboxColumnWidth, isFiltering, ...props }: import("../../../common/Table/TableView").TableViewProps) => JSX.Element>, import("styled-components").DefaultTheme, {}, never>;
|
|
10
10
|
export {};
|
|
@@ -36,7 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
};
|
|
37
37
|
import axios from "axios";
|
|
38
38
|
export var getSpreadsheetRowWidth = function (fields, visibleRowsOnTableViewport) {
|
|
39
|
-
var res = fields.length / visibleRowsOnTableViewport;
|
|
39
|
+
var res = Math.ceil(fields.length / visibleRowsOnTableViewport);
|
|
40
40
|
return res > 1 ? res : 1;
|
|
41
41
|
};
|
|
42
42
|
export var getColumnType = function (_a) {
|
|
@@ -30,7 +30,7 @@ var Wrapper = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateO
|
|
|
30
30
|
return (isOpen ? "332px" : "24px");
|
|
31
31
|
});
|
|
32
32
|
var IconWrapper = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n height: 24px;\n width: 24px;\n"], ["\n height: 24px;\n width: 24px;\n"])));
|
|
33
|
-
var Input = styled.input(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n ", ";\n background: none;\n border: none;\n color: ", ";\n height: 20px
|
|
33
|
+
var Input = styled.input(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n ", ";\n width: 100%;\n\n background-color: none;\n background: none;\n border: none;\n box-shadow: none;\n color: ", ";\n height: 20px;\n line-height: 20px;\n outline: none;\n padding: 1px 2px;\n\n ", ";\n"], ["\n ", ";\n width: 100%;\n\n background-color: none;\n background: none;\n border: none;\n box-shadow: none;\n color: ", ";\n height: 20px;\n line-height: 20px;\n outline: none;\n padding: 1px 2px;\n\n ", ";\n"])), textStyles.body3, colors.gray700, function (_a) {
|
|
34
34
|
var isOpen = _a.isOpen;
|
|
35
35
|
return !isOpen && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: absolute;\n top: -9999px;\n "], ["\n position: absolute;\n top: -9999px;\n "])));
|
|
36
36
|
});
|
|
@@ -0,0 +1,34 @@
|
|
|
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 { jsx as _jsx } from "react/jsx-runtime";
|
|
17
|
+
import { forwardRef, useCallback } from "react";
|
|
18
|
+
import { Scrollbars } from "react-custom-scrollbars";
|
|
19
|
+
import styled from "styled-components";
|
|
20
|
+
var StyledScrollbars = styled(Scrollbars)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n scrollbar-width: thin;\n scrollbar-color: #b1b1b2 transparent;\n\n ::-webkit-scrollbar {\n width: 0;\n height: 5px;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: #b1b1b2;\n border-radius: 3px;\n }\n\n ::-webkit-scrollbar-track {\n background: transparent;\n }\n\n > div:first-of-type {\n margin-bottom: 0 !important;\n }\n"], ["\n scrollbar-width: thin;\n scrollbar-color: #b1b1b2 transparent;\n\n ::-webkit-scrollbar {\n width: 0;\n height: 5px;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: #b1b1b2;\n border-radius: 3px;\n }\n\n ::-webkit-scrollbar-track {\n background: transparent;\n }\n\n > div:first-of-type {\n margin-bottom: 0 !important;\n }\n"])));
|
|
21
|
+
var CustomScrollbars = function (_a) {
|
|
22
|
+
var onScroll = _a.onScroll, forwardedRef = _a.forwardedRef, style = _a.style, children = _a.children;
|
|
23
|
+
var refSetter = useCallback(function (scrollbarsRef) {
|
|
24
|
+
if (scrollbarsRef) {
|
|
25
|
+
forwardedRef(scrollbarsRef.view);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
forwardedRef(null);
|
|
29
|
+
}
|
|
30
|
+
}, []);
|
|
31
|
+
return (_jsx(StyledScrollbars, __assign({ renderTrackHorizontal: function (props) { return (_jsx("div", __assign({}, props, { style: { display: "none" }, className: "track-horizontal" }))); }, ref: refSetter, style: style, onScroll: onScroll }, { children: children })));
|
|
32
|
+
};
|
|
33
|
+
export var CustomScrollbarsVirtualList = forwardRef(function (props, ref) { return (_jsx(CustomScrollbars, __assign({}, props, { forwardedRef: ref }))); });
|
|
34
|
+
var templateObject_1;
|
|
@@ -20,11 +20,11 @@ import { useSpreadsheetContext } from "../../../Importer";
|
|
|
20
20
|
var Cell = 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, onRowClick = data.onRowClick, columns = data.columns, highlightFirstRow = data.highlightFirstRow, rowHeight = data.rowHeight, getItemKey = data.getItemKey,
|
|
23
|
+
var items = data.items, onRowClick = data.onRowClick, columns = data.columns, highlightFirstRow = data.highlightFirstRow, rowHeight = data.rowHeight, getItemKey = data.getItemKey, shouldHaveCustomScrollbar = data.shouldHaveCustomScrollbar;
|
|
24
24
|
var item = items[rowIndex];
|
|
25
25
|
var selectedRows = useSpreadsheetContext().selectedRows;
|
|
26
26
|
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
|
-
return (_jsx(Div, __assign({ style: style }, { children: _jsx(TableRow, { columns: columns, onRowClick: onRowClick, highlightFirstRow: highlightFirstRow, h: rowHeight, row: item, indexI: rowIndex, isLast: rowIndex === items.length - 1, pRelative: true, getItemKey: getItemKey, isRowSelected: isRowSelected || false,
|
|
27
|
+
return (_jsx(Div, __assign({ style: style }, { children: _jsx(TableRow, { columns: columns, onRowClick: onRowClick, highlightFirstRow: highlightFirstRow, h: rowHeight, row: item, indexI: rowIndex, isLast: rowIndex === items.length - 1, pRelative: true, getItemKey: getItemKey, isRowSelected: isRowSelected || false, shouldHaveCustomScrollbar: shouldHaveCustomScrollbar }) })));
|
|
28
28
|
}, areEqual);
|
|
29
29
|
var DraggableCell = React.memo(function (_a) {
|
|
30
30
|
var data = _a.data, rowIndex = _a.rowIndex, baseStyle = _a.style;
|
|
@@ -4,10 +4,10 @@ import { DivCSSProps } from "../../../styled/utils";
|
|
|
4
4
|
import { SortDirection } from "../TableDataProvider";
|
|
5
5
|
type TableViewHeaderProps = {
|
|
6
6
|
isLast: boolean;
|
|
7
|
-
|
|
7
|
+
shouldHaveCustomScrollbar?: boolean;
|
|
8
8
|
};
|
|
9
9
|
export declare const TableViewHeader: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps & {
|
|
10
|
-
|
|
10
|
+
shouldHaveCustomScrollbar?: boolean;
|
|
11
11
|
} & TableViewHeaderProps, never>;
|
|
12
12
|
type SortIndicatorProps = {
|
|
13
13
|
direction: SortDirection;
|
|
@@ -19,7 +19,7 @@ type TableHeadersProps = Pick<TableViewProps, "columns" | "sortBy" | "setSortBy"
|
|
|
19
19
|
scrollLeft: number;
|
|
20
20
|
height: number;
|
|
21
21
|
containerRef: React.MutableRefObject<HTMLDivElement>;
|
|
22
|
-
|
|
22
|
+
shouldHaveCustomScrollbar?: boolean;
|
|
23
23
|
} & DivCSSProps;
|
|
24
|
-
export declare const TableHeaders: ({ scrollLeft, columns, sortBy, rowHeight, containerRef, setSortBy, rowWidth, height,
|
|
24
|
+
export declare const TableHeaders: ({ scrollLeft, columns, sortBy, rowHeight, containerRef, setSortBy, rowWidth, height, shouldHaveCustomScrollbar, ...props }: TableHeadersProps) => JSX.Element;
|
|
25
25
|
export {};
|
|
@@ -31,19 +31,16 @@ import { chevronDown as chevronDownIcon } from "../icons";
|
|
|
31
31
|
import { SortDirection } from "../TableDataProvider";
|
|
32
32
|
import { columnWidthPercentage, defaultTableHeaderHeightPx, TableViewCellContainer, } from "./common";
|
|
33
33
|
import { useTranslation } from "react-i18next";
|
|
34
|
-
export var TableViewHeader = styled(TableViewCellContainer)(
|
|
34
|
+
export var TableViewHeader = styled(TableViewCellContainer)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n border-bottom: none;\n box-shadow: inset 0 -1px 0 ", ";\n background-color: ", ";\n ", ";\n color: ", ";\n ", "\n"], ["\n border-bottom: none;\n box-shadow: inset 0 -1px 0 ", ";\n background-color: ", ";\n ", ";\n color: ", ";\n ", "\n"])), function (p) { return p.theme.colors.gray300; }, function (p) { return p.theme.colors.tableHeader; }, function (p) { return p.theme.css.body2; }, function (p) { return p.theme.colors.text; }, function (p) {
|
|
35
35
|
return p.isLast && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n border-right: solid 1px transparent !important;\n "], ["\n border-right: solid 1px transparent !important;\n "])));
|
|
36
|
-
}, function (_a) {
|
|
37
|
-
var isSpreadsheetTable = _a.isSpreadsheetTable;
|
|
38
|
-
return isSpreadsheetTable && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n min-width: 200px;\n "], ["\n min-width: 200px;\n "])));
|
|
39
36
|
});
|
|
40
|
-
export var SortIndicator = styled(Div)(
|
|
41
|
-
return p.direction === SortDirection.asc && css(
|
|
37
|
+
export var SortIndicator = styled(Div)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n margin-left: 10px;\n margin-top: -4px;\n ", "\n svg {\n path {\n fill: ", ";\n }\n }\n"], ["\n margin-left: 10px;\n margin-top: -4px;\n ", "\n svg {\n path {\n fill: ", ";\n }\n }\n"])), function (p) {
|
|
38
|
+
return p.direction === SortDirection.asc && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n margin-top: 3px;\n transform: rotate(180deg);\n "], ["\n margin-top: 3px;\n transform: rotate(180deg);\n "])));
|
|
42
39
|
}, function (p) { return p.theme.colors.gray300; });
|
|
43
|
-
export var TableHeadersContainer = styled(Div)(
|
|
44
|
-
export var TableHeadersContent = styled(Div)(
|
|
40
|
+
export var TableHeadersContainer = styled(Div)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n overflow-x: hidden;\n"], ["\n overflow-x: hidden;\n"])));
|
|
41
|
+
export var TableHeadersContent = styled(Div)(templateObject_6 || (templateObject_6 = __makeTemplateObject([""], [""])));
|
|
45
42
|
export var TableHeaders = function (_a) {
|
|
46
|
-
var _b = _a.scrollLeft, scrollLeft = _b === void 0 ? 0 : _b, columns = _a.columns, sortBy = _a.sortBy, rowHeight = _a.rowHeight, containerRef = _a.containerRef, setSortBy = _a.setSortBy, _c = _a.rowWidth, rowWidth = _c === void 0 ? 1 : _c, _d = _a.height, height = _d === void 0 ? defaultTableHeaderHeightPx : _d,
|
|
43
|
+
var _b = _a.scrollLeft, scrollLeft = _b === void 0 ? 0 : _b, columns = _a.columns, sortBy = _a.sortBy, rowHeight = _a.rowHeight, containerRef = _a.containerRef, setSortBy = _a.setSortBy, _c = _a.rowWidth, rowWidth = _c === void 0 ? 1 : _c, _d = _a.height, height = _d === void 0 ? defaultTableHeaderHeightPx : _d, shouldHaveCustomScrollbar = _a.shouldHaveCustomScrollbar, props = __rest(_a, ["scrollLeft", "columns", "sortBy", "rowHeight", "containerRef", "setSortBy", "rowWidth", "height", "shouldHaveCustomScrollbar"]);
|
|
47
44
|
var t = useTranslation().t;
|
|
48
45
|
return (_jsx(TableHeadersContainer, __assign({ ref: containerRef }, { children: _jsx(TableHeadersContent, __assign({ dflex: true, w: "".concat(100 * rowWidth, "%") }, { children: columns.map(function (column, index) {
|
|
49
46
|
var header = column.header, Header = column.Header;
|
|
@@ -65,7 +62,7 @@ export var TableHeaders = function (_a) {
|
|
|
65
62
|
});
|
|
66
63
|
}
|
|
67
64
|
};
|
|
68
|
-
return (_jsxs(TableViewHeader, __assign({ isLast: index === columns.length - 1, w: columnWidthPercentage(column, columns), onClick: onHeaderClick, h: height,
|
|
65
|
+
return (_jsxs(TableViewHeader, __assign({ isLast: index === columns.length - 1, w: columnWidthPercentage(column, columns), onClick: onHeaderClick, h: height, shouldHaveCustomScrollbar: shouldHaveCustomScrollbar }, props, { children: [_jsx(_Fragment, { children: Header ? _jsx(Header, {}) : t(header) }), (sortBy === null || sortBy === void 0 ? void 0 : sortBy.field) === column.dataAccessor && (_jsx(SortIndicator, __assign({ direction: sortBy === null || sortBy === void 0 ? void 0 : sortBy.direction }, { children: chevronDownIcon })))] }), index));
|
|
69
66
|
}) })) })));
|
|
70
67
|
};
|
|
71
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6
|
|
68
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
|
|
@@ -13,7 +13,7 @@ type Props = Pick<TableViewProps, "columns" | "onRowClick" | "highlightFirstRow"
|
|
|
13
13
|
isLast?: boolean;
|
|
14
14
|
getItemKey?: (row: any) => string;
|
|
15
15
|
isRowSelected?: boolean;
|
|
16
|
-
|
|
16
|
+
shouldHaveCustomScrollbar?: boolean;
|
|
17
17
|
} & DivCSSProps;
|
|
18
|
-
export declare const TableRow: ({ row, indexI, columns, isLast, highlightFirstRow, onRowClick, getItemKey, isRowSelected,
|
|
18
|
+
export declare const TableRow: ({ row, indexI, columns, isLast, highlightFirstRow, onRowClick, getItemKey, isRowSelected, shouldHaveCustomScrollbar, ...props }: Props) => JSX.Element;
|
|
19
19
|
export {};
|
|
@@ -31,8 +31,8 @@ import styled, { css } from "styled-components";
|
|
|
31
31
|
import { Div } from "../../../styled/utils";
|
|
32
32
|
import { columnWidthPercentage, TableViewCellContainer } from "./common";
|
|
33
33
|
export var Cell = React.memo(function (props) {
|
|
34
|
-
var children = props.children,
|
|
35
|
-
return (_jsx(TableViewCellContainer, __assign({
|
|
34
|
+
var children = props.children, shouldHaveCustomScrollbar = props.shouldHaveCustomScrollbar, cellProps = __rest(props, ["children", "shouldHaveCustomScrollbar"]);
|
|
35
|
+
return (_jsx(TableViewCellContainer, __assign({ shouldHaveCustomScrollbar: shouldHaveCustomScrollbar }, cellProps, { children: children })));
|
|
36
36
|
}, areEqual);
|
|
37
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) {
|
|
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; });
|
|
@@ -40,7 +40,7 @@ export var TableViewRow = styled(Div)(templateObject_3 || (templateObject_3 = __
|
|
|
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);
|
|
41
41
|
});
|
|
42
42
|
export var TableRow = function (_a) {
|
|
43
|
-
var row = _a.row, indexI = _a.indexI, columns = _a.columns, isLast = _a.isLast, highlightFirstRow = _a.highlightFirstRow, onRowClick = _a.onRowClick, getItemKey = _a.getItemKey, _b = _a.isRowSelected, isRowSelected = _b === void 0 ? false : _b,
|
|
43
|
+
var row = _a.row, indexI = _a.indexI, columns = _a.columns, isLast = _a.isLast, highlightFirstRow = _a.highlightFirstRow, onRowClick = _a.onRowClick, getItemKey = _a.getItemKey, _b = _a.isRowSelected, isRowSelected = _b === void 0 ? false : _b, shouldHaveCustomScrollbar = _a.shouldHaveCustomScrollbar, props = __rest(_a, ["row", "indexI", "columns", "isLast", "highlightFirstRow", "onRowClick", "getItemKey", "isRowSelected", "shouldHaveCustomScrollbar"]);
|
|
44
44
|
var isHighlighted = (indexI === 0 && highlightFirstRow) || isRowSelected;
|
|
45
45
|
return (_jsx(TableViewRow, __assign({ "data-test-id": "row-".concat(indexI), dflex: true }, { isHighlighted: isHighlighted, isLast: isLast }, props, { children: columns.map(function (column, indexJ) {
|
|
46
46
|
var Content = column.Content;
|
|
@@ -48,7 +48,7 @@ export var TableRow = function (_a) {
|
|
|
48
48
|
var resolvedKey = "column-".concat(indexJ, "-row-").concat(key);
|
|
49
49
|
return (_jsx(Cell, __assign({ row: row, onClick: onRowClick && !column.preventRowClick
|
|
50
50
|
? function () { return onRowClick(row); }
|
|
51
|
-
: null,
|
|
51
|
+
: null, shouldHaveCustomScrollbar: shouldHaveCustomScrollbar, w: columnWidthPercentage(column, columns) }, { children: Content ? (_jsx(Content, __assign({}, row, { rowIndex: indexI }))) : (_jsx(Div, __assign({ truncateText: true }, { children: row[column.dataAccessor] || "-" }))) }), resolvedKey));
|
|
52
52
|
}) })));
|
|
53
53
|
};
|
|
54
54
|
var templateObject_1, templateObject_2, templateObject_3;
|
|
@@ -2,7 +2,7 @@ import { TableViewColumn } from ".";
|
|
|
2
2
|
export declare const defaultTableRowHeightPx = 60;
|
|
3
3
|
export declare const defaultTableHeaderHeightPx = 60;
|
|
4
4
|
type TableViewCellContainerProps = {
|
|
5
|
-
|
|
5
|
+
shouldHaveCustomScrollbar?: boolean;
|
|
6
6
|
};
|
|
7
7
|
export declare const columnWidthPercentage: (column: TableViewColumn, columns: TableViewColumn[]) => string;
|
|
8
8
|
export declare const TableViewCellContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps & TableViewCellContainerProps, never>;
|
|
@@ -14,14 +14,11 @@ export var columnWidthPercentage = function (column, columns) {
|
|
|
14
14
|
? "".concat((column.width || 1 / totalColumnWidthCount) * 100, "%")
|
|
15
15
|
: "0%";
|
|
16
16
|
};
|
|
17
|
-
export var TableViewCellContainer = styled(Div)(
|
|
17
|
+
export var TableViewCellContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n padding-left: 16px;\n align-items: center;\n color: ", ";\n\n ", "\n ", ";\n"], ["\n display: flex;\n padding-left: 16px;\n align-items: center;\n color: ", ";\n\n ", "\n ", ";\n"])), function (p) { return p.theme.colors.textPrim; }, function (_a) {
|
|
18
18
|
var onClick = _a.onClick;
|
|
19
19
|
return onClick && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n :hover {\n cursor: pointer;\n }\n "], ["\n :hover {\n cursor: pointer;\n }\n "])));
|
|
20
20
|
}, function (_a) {
|
|
21
21
|
var theme = _a.theme;
|
|
22
22
|
return theme.css.body3;
|
|
23
|
-
}, function (_a) {
|
|
24
|
-
var isSpreadsheetTable = _a.isSpreadsheetTable;
|
|
25
|
-
return isSpreadsheetTable && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n min-width: 200px;\n "], ["\n min-width: 200px;\n "])));
|
|
26
23
|
});
|
|
27
|
-
var templateObject_1, templateObject_2
|
|
24
|
+
var templateObject_1, templateObject_2;
|
|
@@ -39,8 +39,8 @@ export type TableViewProps = {
|
|
|
39
39
|
onRowClick?: (row: any) => void;
|
|
40
40
|
getItemKey?: (row: any) => string;
|
|
41
41
|
shouldBeDraggable?: boolean;
|
|
42
|
-
isInsideImporter?: boolean;
|
|
43
42
|
checkboxColumnWidth?: number;
|
|
44
|
-
|
|
43
|
+
shouldHaveCustomScrollbar?: boolean;
|
|
44
|
+
isFiltering?: boolean;
|
|
45
45
|
} & DivCSSProps;
|
|
46
|
-
export declare const TableView: React.MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, highlightFirstRow, setSortBy, rowWidth, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, shouldBeDraggable,
|
|
46
|
+
export declare const TableView: React.MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, highlightFirstRow, setSortBy, rowWidth, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, shouldBeDraggable, shouldHaveCustomScrollbar, checkboxColumnWidth, isFiltering, ...props }: TableViewProps) => JSX.Element>;
|