fuse-importer 0.25.8 → 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/Review/ReviewWithContext.js +4 -1
- 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/fields/SpeadsheetAutocomplete.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +3 -3
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +6 -0
- 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/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 +34 -6
- 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 +5 -5
- package/package.json +1 -1
|
@@ -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;
|
|
@@ -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);
|
|
@@ -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
|
|
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,9 +35,9 @@ 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
|
|
39
|
-
return p.hasWarning && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: ", "
|
|
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
|
+
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
|
-
return p.hasError && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n color: ", "
|
|
41
|
+
return p.hasError && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.error; });
|
|
42
42
|
});
|
|
43
43
|
var templateObject_1, templateObject_2, templateObject_3;
|
|
@@ -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
|
};
|
|
@@ -120,6 +121,11 @@ export var useValidationState = function (_a) {
|
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
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
|
+
}
|
|
123
129
|
return filteredObj;
|
|
124
130
|
};
|
|
125
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 width: 100%;\n\n
|
|
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
|
});
|
|
@@ -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>;
|
|
@@ -63,7 +63,7 @@ var buildGridStyles = function (rowWidth) {
|
|
|
63
63
|
return gridStyles;
|
|
64
64
|
};
|
|
65
65
|
export var TableView = React.memo(function (_a) {
|
|
66
|
-
var data = _a.data, columns = _a.columns, pageSize = _a.pageSize, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.sortBy, sortBy = _c === void 0 ? { field: null, direction: null } : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.highlightFirstRow, highlightFirstRow = _e === void 0 ? false : _e, _f = _a.setSortBy, setSortBy = _f === void 0 ? null : _f, _g = _a.rowWidth, rowWidth = _g === void 0 ? 1 : _g, onSectionRendered = _a.onSectionRendered, _h = _a.tableHeadersHeight, tableHeadersHeight = _h === void 0 ? defaultTableHeaderHeightPx : _h, _j = _a.rowHeight, rowHeight = _j === void 0 ? defaultTableRowHeightPx : _j, _k = _a.h, h = _k === void 0 ? 500 : _k, _l = _a.onTableScroll, onTableScroll = _l === void 0 ? null : _l, _m = _a.getItemKey, getItemKey = _m === void 0 ? null : _m, _o = _a.shouldBeDraggable, shouldBeDraggable = _o === void 0 ? false : _o, _p = _a.
|
|
66
|
+
var data = _a.data, columns = _a.columns, pageSize = _a.pageSize, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.sortBy, sortBy = _c === void 0 ? { field: null, direction: null } : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.highlightFirstRow, highlightFirstRow = _e === void 0 ? false : _e, _f = _a.setSortBy, setSortBy = _f === void 0 ? null : _f, _g = _a.rowWidth, rowWidth = _g === void 0 ? 1 : _g, onSectionRendered = _a.onSectionRendered, _h = _a.tableHeadersHeight, tableHeadersHeight = _h === void 0 ? defaultTableHeaderHeightPx : _h, _j = _a.rowHeight, rowHeight = _j === void 0 ? defaultTableRowHeightPx : _j, _k = _a.h, h = _k === void 0 ? 500 : _k, _l = _a.onTableScroll, onTableScroll = _l === void 0 ? null : _l, _m = _a.getItemKey, getItemKey = _m === void 0 ? null : _m, _o = _a.shouldBeDraggable, shouldBeDraggable = _o === void 0 ? false : _o, _p = _a.shouldHaveCustomScrollbar, shouldHaveCustomScrollbar = _p === void 0 ? false : _p, checkboxColumnWidth = _a.checkboxColumnWidth, _q = _a.isFiltering, isFiltering = _q === void 0 ? false : _q, props = __rest(_a, ["data", "columns", "pageSize", "onRowClick", "sortBy", "isLoading", "highlightFirstRow", "setSortBy", "rowWidth", "onSectionRendered", "tableHeadersHeight", "rowHeight", "h", "onTableScroll", "getItemKey", "shouldBeDraggable", "shouldHaveCustomScrollbar", "checkboxColumnWidth", "isFiltering"]);
|
|
67
67
|
/*
|
|
68
68
|
multiply the rowWidth by 0.95 to let the user know they can scroll
|
|
69
69
|
horizontally (will display partial column on the right)
|
|
@@ -71,7 +71,8 @@ export var TableView = React.memo(function (_a) {
|
|
|
71
71
|
var _rowWidth = rowWidth > 1 ? rowWidth * 0.95 : rowWidth;
|
|
72
72
|
var headerContainerRef = useRef();
|
|
73
73
|
var listRef = useRef();
|
|
74
|
-
var
|
|
74
|
+
var canRenderTableHeaders = isFiltering ? true : data.length > 0;
|
|
75
|
+
var tableHeadersUI = canRenderTableHeaders && (_jsx(TableHeaders, { id: tableHeaderId, containerRef: headerContainerRef, height: tableHeadersHeight, rowHeight: rowHeight, rowWidth: _rowWidth, scrollLeft: 0, columns: columns, sortBy: sortBy, setSortBy: setSortBy, shouldHaveCustomScrollbar: shouldHaveCustomScrollbar }));
|
|
75
76
|
var onScroll = function (_a) {
|
|
76
77
|
var scrollTop = _a.scrollTop, scrollLeft = _a.scrollLeft;
|
|
77
78
|
if (headerContainerRef.current && headerContainerRef.current.scrollTo) {
|
|
@@ -102,18 +103,45 @@ export var TableView = React.memo(function (_a) {
|
|
|
102
103
|
highlightFirstRow: highlightFirstRow,
|
|
103
104
|
rowHeight: rowHeight,
|
|
104
105
|
getItemKey: getItemKey,
|
|
105
|
-
|
|
106
|
+
shouldHaveCustomScrollbar: shouldHaveCustomScrollbar,
|
|
106
107
|
}); }, [
|
|
107
108
|
data,
|
|
108
109
|
onRowClick,
|
|
109
110
|
columns,
|
|
110
111
|
highlightFirstRow,
|
|
111
112
|
rowHeight,
|
|
112
|
-
|
|
113
|
+
shouldHaveCustomScrollbar,
|
|
113
114
|
]);
|
|
114
|
-
|
|
115
|
+
var buildGridProps = function (width, isDraggable, columnWidth, height) { return ({
|
|
116
|
+
style: buildGridStyles(_rowWidth),
|
|
117
|
+
width: width,
|
|
118
|
+
columnCount: 1,
|
|
119
|
+
itemData: itemData,
|
|
120
|
+
onItemsRendered: onItemsRendered,
|
|
121
|
+
onScroll: onScroll,
|
|
122
|
+
columnWidth: isDraggable ? Math.floor(width * _rowWidth) : columnWidth,
|
|
123
|
+
height: height - tableHeadersHeight,
|
|
124
|
+
rowHeight: rowHeight,
|
|
125
|
+
rowCount: data.length,
|
|
126
|
+
}); };
|
|
127
|
+
return (_jsxs(TableViewWrapper, __assign({ "data-test-id": "table-view-wrapper", isLoading: isLoading, checkboxColumnWidth: checkboxColumnWidth }, (!shouldHaveCustomScrollbar ? { h: tableHeight } : {}), props, { children: [tableHeadersUI, loadingUI, _jsx(AutoSizer, { children: function (_a) {
|
|
115
128
|
var width = _a.width, height = _a.height;
|
|
116
|
-
|
|
129
|
+
var canUseCustomScrollbar = shouldHaveCustomScrollbar && !shouldBeDraggable;
|
|
130
|
+
var gridProps = {
|
|
131
|
+
style: buildGridStyles(_rowWidth),
|
|
132
|
+
width: width,
|
|
133
|
+
columnCount: 1,
|
|
134
|
+
itemData: itemData,
|
|
135
|
+
onItemsRendered: onItemsRendered,
|
|
136
|
+
onScroll: onScroll,
|
|
137
|
+
columnWidth: Math.floor(width * _rowWidth),
|
|
138
|
+
height: height - tableHeadersHeight,
|
|
139
|
+
rowHeight: rowHeight,
|
|
140
|
+
rowCount: data.length,
|
|
141
|
+
};
|
|
142
|
+
return (_jsx(_Fragment, { children: shouldBeDraggable ? (_jsx(SortableContext, __assign({ items: data, strategy: verticalListSortingStrategy }, { children: _jsx(StyledGrid, __assign({}, gridProps, { children: DraggableCell })) }))) : (_jsx(StyledGrid, __assign({}, gridProps, { ref: canUseCustomScrollbar ? listRef : undefined, outerElementType: canUseCustomScrollbar
|
|
143
|
+
? CustomScrollbarsVirtualList
|
|
144
|
+
: undefined }, { children: Cell }))) }));
|
|
117
145
|
} })] })));
|
|
118
146
|
}, areEqual);
|
|
119
147
|
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
|
|
@@ -31,7 +31,7 @@ import { FormInputLabel } from "..";
|
|
|
31
31
|
import { useDebounce } from "../../hooks";
|
|
32
32
|
import { Div } from "../../styled/utils";
|
|
33
33
|
import Tooltip from "./tooltip";
|
|
34
|
-
export var HTMLInput = styled.input(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: relative;\n\n
|
|
34
|
+
export var HTMLInput = styled.input(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: relative;\n\n padding: ", ";\n height: 68px;\n margin: 0px;\n box-shadow: none;\n\n outline: none;\n\n border: 1px solid ", ";\n box-sizing: border-box;\n border-radius: 8px;\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 ", ";\n\n ::placeholder {\n color: ", ";\n }\n\n :focus {\n border: 2px solid ", ";\n\n /* 3d at the end adds .24 opacity (using 8 digit hex)*/\n box-shadow: 0px 0px 8px ", "3d;\n }\n\n :hover {\n box-shadow: none;\n background: transparent;\n }\n\n ", "\n ", "\n"], ["\n position: relative;\n\n padding: ", ";\n height: 68px;\n margin: 0px;\n box-shadow: none;\n\n outline: none;\n\n border: 1px solid ", ";\n box-sizing: border-box;\n border-radius: 8px;\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 ", ";\n\n ::placeholder {\n color: ", ";\n }\n\n :focus {\n border: 2px solid ", ";\n\n /* 3d at the end adds .24 opacity (using 8 digit hex)*/\n box-shadow: 0px 0px 8px ", "3d;\n }\n\n :hover {\n box-shadow: none;\n background: transparent;\n }\n\n ", "\n ", "\n"])), function (_a) {
|
|
35
35
|
var padding = _a.padding;
|
|
36
36
|
return (padding ? padding : "20px 16px");
|
|
37
37
|
}, function (props) { return props.theme.colors.gray300; }, function (props) { return props.theme.css.body1; }, function (props) { return props.theme.colors.placeholder; }, function (props) { return props.theme.colors.blue500; }, function (props) { return props.theme.colors.blue500; }, function (props) {
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -6,12 +6,18 @@ declare class FuseImporter {
|
|
|
6
6
|
zIndex: number;
|
|
7
7
|
options: ImporterOptions;
|
|
8
8
|
constructor(apiToken: string, templateSlug: string, options?: ImporterOptions);
|
|
9
|
+
private cleanupIframe;
|
|
9
10
|
formatRecord: FormatRecord;
|
|
10
11
|
onValidateRecord: OnValidateRecord;
|
|
11
12
|
onSubmit: OnSubmit;
|
|
12
13
|
onClose: () => void;
|
|
13
14
|
close(): void;
|
|
14
15
|
show(): Promise<void>;
|
|
16
|
+
private renderImporterComponent;
|
|
17
|
+
private createDivComponent;
|
|
18
|
+
private createIframe;
|
|
19
|
+
private createImporterComponent;
|
|
20
|
+
private configureIframe;
|
|
15
21
|
private configureI18n;
|
|
16
22
|
}
|
|
17
23
|
export default FuseImporter;
|