fuse-importer 0.25.6 → 0.25.8
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/ImporterWithContext.js +9 -6
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/tableColumns.js +1 -1
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +2 -3
- package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +6 -6
- package/lib/esm/Importer/Matcher/HeaderMatcher/tableColumns.js +1 -1
- package/lib/esm/Importer/Matcher/index.js +3 -19
- package/lib/esm/Importer/Review/ReviewWithContext.js +4 -8
- package/lib/esm/Importer/Stepper/StepIndex.js +2 -2
- package/lib/esm/Importer/Stepper/index.js +22 -12
- package/lib/esm/Importer/Uploader/DragAndDropImporter/DragAndDropImporter.styles.d.ts +3 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/DragAndDropImporter.styles.js +11 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +2 -2
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/ImporterSectionHeader.styles.d.ts +7 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/ImporterSectionHeader.styles.js +11 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.d.ts +7 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.js +44 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +7 -45
- package/lib/esm/Importer/Uploader/HeaderButtons.js +4 -7
- package/lib/esm/Importer/Uploader/HeadersPreview.js +9 -1
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider.d.ts +1 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider.js +9 -1
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +2 -2
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +9 -12
- package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +1 -1
- 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 +3 -2
- package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/styles.js +1 -1
- package/lib/esm/Importer/data/index.js +7 -1
- package/lib/esm/common/Table/TableActions/DeleteSelectedRows.d.ts +0 -1
- package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +2 -2
- package/lib/esm/common/Table/TableActions/ExportData.d.ts +3 -0
- package/lib/esm/common/Table/TableActions/ExportData.js +21 -0
- package/lib/esm/common/Table/TableActions/SearchRows.js +2 -2
- package/lib/esm/common/Table/TableActions/TableActions.d.ts +1 -3
- package/lib/esm/common/Table/TableActions/TableActions.js +3 -16
- package/lib/esm/common/Table/TableActions/TableActions.styles.d.ts +5 -0
- package/lib/esm/common/Table/TableActions/TableActions.styles.js +17 -0
- package/lib/esm/common/Table/TableActions/icons.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/icons.js +1 -0
- 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 +6 -2
- package/lib/esm/common/Table/TableView/TableHeaders.js +11 -8
- package/lib/esm/common/Table/TableView/TableRow.d.ts +2 -1
- package/lib/esm/common/Table/TableView/TableRow.js +4 -4
- package/lib/esm/common/Table/TableView/common.d.ts +5 -1
- package/lib/esm/common/Table/TableView/common.js +11 -4
- package/lib/esm/common/Table/TableView/index.d.ts +4 -1
- package/lib/esm/common/Table/TableView/index.js +24 -11
- package/lib/esm/common/Table/index.js +1 -1
- package/lib/esm/common/buttons.js +21 -14
- package/lib/esm/common/icons/index.d.ts +1 -1
- package/lib/esm/common/icons/index.js +4 -1
- package/lib/esm/common/inputs/Checkbox.js +1 -1
- package/lib/esm/common/inputs/TextInput.js +1 -1
- package/lib/esm/locales/en.js +2 -2
- package/lib/esm/styled/theme/textStyles.js +2 -2
- package/lib/main.js +11 -11
- package/package.json +2 -1
|
@@ -45,10 +45,13 @@ var steps = [
|
|
|
45
45
|
component: _jsx(Review, {}),
|
|
46
46
|
},
|
|
47
47
|
];
|
|
48
|
-
export var Layout = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display:
|
|
49
|
-
var
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
export var Layout = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n display: flex;\n flex-direction: column;\n height: 100vh;\n left: 0;\n overflow-y: auto;\n position: fixed;\n top: 0;\n width: 100vw;\n z-index: ", ";\n ", ";\n"], ["\n background: ", ";\n display: flex;\n flex-direction: column;\n height: 100vh;\n left: 0;\n overflow-y: auto;\n position: fixed;\n top: 0;\n width: 100vw;\n z-index: ", ";\n ", ";\n"])), function (_a) {
|
|
49
|
+
var theme = _a.theme;
|
|
50
|
+
return theme.colors.backgroundInterface;
|
|
51
|
+
}, function (p) { return p.zIndex; }, function (p) { return p.theme.css.scrollbarDark; });
|
|
52
|
+
var Content = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (_a) {
|
|
53
|
+
var colors = _a.theme.colors, inTrialMode = _a.inTrialMode;
|
|
54
|
+
return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-color: ", ";\n flex: ", ";\n "], ["\n background-color: ", ";\n flex: ", ";\n "])), colors.backgroundInterface, inTrialMode ? "none" : 1);
|
|
52
55
|
});
|
|
53
56
|
export var ImporterWithContext = function () {
|
|
54
57
|
var _a = useImporterContext(), inTrialMode = _a.inTrialMode, currentStepIndex = _a.currentStepIndex, matcherSubstep = _a.matcherSubstep, theme = _a.theme, logoURL = _a.logoURL, previewFirstTime = _a.previewFirstTime, _b = _a.importerOptions, zIndex = _b.zIndex, previewMode = _b.previewMode;
|
|
@@ -58,9 +61,9 @@ export var ImporterWithContext = function () {
|
|
|
58
61
|
layoutRef.current.scrollTo(0, 0);
|
|
59
62
|
}, [currentStepIndex, matcherSubstep]);
|
|
60
63
|
function renderContent() {
|
|
61
|
-
return (_jsxs(_Fragment, { children: [_jsxs(Div, { children: [previewMode && _jsx(PreviewModeBanner, {}), !previewMode && _jsx(TrialModeBanner, {}), _jsx(Stepper, { stepLabels: steps.map(function (step) { return t(step.label); }), logoURL: logoURL })] }), _jsx(Content, { children: steps[currentStepIndex].component }), inTrialMode && (_jsx(Content, { children: _jsx(Footer, {}) }))] }));
|
|
64
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Div, { children: [previewMode && _jsx(PreviewModeBanner, {}), !previewMode && _jsx(TrialModeBanner, {}), _jsx(Stepper, { stepLabels: steps.map(function (step) { return t(step.label); }), logoURL: logoURL })] }), _jsx(Content, { children: steps[currentStepIndex].component }), inTrialMode && (_jsx(Content, __assign({ inTrialMode: inTrialMode }, { children: _jsx(Footer, {}) })))] }));
|
|
62
65
|
}
|
|
63
66
|
var shouldShowPreviewFirstTime = previewFirstTime && previewMode;
|
|
64
67
|
return (_jsxs(ThemeProvider, __assign({ theme: theme }, { children: [_jsx(Toast, {}), _jsx(GlobalStyle, {}), _jsx(ImporterFonts, {}), _jsx(ReviewContextProvider, { children: _jsx(Layout, __assign({ zIndex: zIndex, ref: layoutRef }, { children: shouldShowPreviewFirstTime ? _jsx(PreviewFirstTime, {}) : renderContent() })) })] })));
|
|
65
68
|
};
|
|
66
|
-
var templateObject_1, templateObject_2;
|
|
69
|
+
var templateObject_1, templateObject_2, templateObject_3;
|
|
@@ -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
|
}); }) }) })));
|
|
@@ -11,14 +11,13 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
13
|
import { Div } from "../../../styled/utils";
|
|
14
|
-
import { contentWidth } from "../../common/index";
|
|
15
14
|
import { useImporterContext } from "../../contexts/ImporterContextProvider";
|
|
16
15
|
import { EnumFieldMatcher } from "./EnumFieldMatcher";
|
|
17
16
|
import { useTranslation } from "react-i18next";
|
|
18
17
|
export var EnumFieldsMatchers = function () {
|
|
19
18
|
var t = useTranslation("match").t;
|
|
20
19
|
var enumFieldValueMatchings = useImporterContext().enumFieldValueMatchings;
|
|
21
|
-
return (_jsxs(_Fragment, { children: [_jsxs(Div, __assign({ flexColumn: true,
|
|
22
|
-
return (_jsx(Div, __assign({ w:
|
|
20
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Div, __assign({ flexColumn: true, ml: 32 }, { children: [_jsx(Div, __assign({ h2: true, mb: 16, mt: 40 }, { children: t("title") })), _jsx(Div, __assign({ body1: true, mb: 40, maxw: 928 }, { children: t("enum_description") }))] })), _jsx(Div, __assign({ flexColumn: true, alignCenter: true, mb: 20, ml: 32, mr: 32, centered: true }, { children: Object.keys(enumFieldValueMatchings).map(function (templateHeaderLabel, index) {
|
|
21
|
+
return (_jsx(Div, __assign({ w: "100%" }, { children: _jsx(EnumFieldMatcher, { templateHeaderLabel: templateHeaderLabel }) }), index));
|
|
23
22
|
}) }))] }));
|
|
24
23
|
};
|
|
@@ -19,13 +19,13 @@ import styled from "styled-components";
|
|
|
19
19
|
import { defaultTableHeaderHeightPx, TableView, } from "../../../common/Table/TableView";
|
|
20
20
|
import { colors } from "../../../styled/theme";
|
|
21
21
|
import { Div } from "../../../styled/utils";
|
|
22
|
-
import {
|
|
22
|
+
import { getTableHeight } from "../../common/index";
|
|
23
23
|
import { useImporterContext } from "../../contexts/ImporterContextProvider";
|
|
24
24
|
import { MAX_VISIBLE_ROWS } from "../common";
|
|
25
25
|
import { MatcherStatus } from "../common/types";
|
|
26
26
|
import { tableColumns } from "./tableColumns";
|
|
27
27
|
import { useTranslation } from "react-i18next";
|
|
28
|
-
var CardContainer = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n flex-direction: row;\n
|
|
28
|
+
var CardContainer = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n flex-direction: row;\n"], ["\n flex-direction: row;\n"])));
|
|
29
29
|
var HeaderMatcher = function () {
|
|
30
30
|
var t = useTranslation("match").t;
|
|
31
31
|
var _a = useImporterContext(), templateHeaders = _a.templateHeaders, templateHeaderMatchings = _a.templateHeaderMatchings;
|
|
@@ -52,10 +52,10 @@ var HeaderMatcher = function () {
|
|
|
52
52
|
dataCount: data.length,
|
|
53
53
|
maxVisibleRows: MAX_VISIBLE_ROWS,
|
|
54
54
|
});
|
|
55
|
-
return (_jsx(_Fragment, { children:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
return (_jsx(_Fragment, { children: _jsxs(Div, __assign({ flexColumn: true, h100: true }, { children: [_jsxs(Div, __assign({ ml: 32, mr: 32 }, { children: [_jsx(Div, __assign({ h2: true, mb: 16, mt: 40 }, { children: t("title") })), _jsx(Div, __assign({ body1: true, mb: 24 }, { children: t("description", {
|
|
56
|
+
numberOfMatchedHeaders: numberOfMatchedHeaders,
|
|
57
|
+
totalNumberOfHeaders: templateHeaders.length,
|
|
58
|
+
}) }))] })), _jsx(CardContainer, __assign({ dflex: true, centered: true, alignStart: true, w100: true, h100: true }, { children: _jsx(Div, __assign({ w100: true, h100: true }, { children: _jsx(TableView, { h: tableHeight, data: sortedData, rowHeight: tableRowHeight, columns: tableColumns, bg: colors.white, style: { height: "100%" } }) })) }))] })) }));
|
|
59
59
|
};
|
|
60
60
|
export { HeaderMatcher };
|
|
61
61
|
var templateObject_1;
|
|
@@ -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
|
}); }) }));
|
|
@@ -2,21 +2,9 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
|
|
|
2
2
|
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
3
|
return cooked;
|
|
4
4
|
};
|
|
5
|
-
var __assign = (this && this.__assign) || function () {
|
|
6
|
-
__assign = Object.assign || function(t) {
|
|
7
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
8
|
-
s = arguments[i];
|
|
9
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
10
|
-
t[p] = s[p];
|
|
11
|
-
}
|
|
12
|
-
return t;
|
|
13
|
-
};
|
|
14
|
-
return __assign.apply(this, arguments);
|
|
15
|
-
};
|
|
16
5
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
-
import React
|
|
6
|
+
import React from "react";
|
|
18
7
|
import styled, { css } from "styled-components";
|
|
19
|
-
import { FieldTypes } from "../..";
|
|
20
8
|
import { Div } from "../../styled/utils";
|
|
21
9
|
import { useImporterContext } from "../contexts/ImporterContextProvider";
|
|
22
10
|
import { HeaderMatcher } from "./HeaderMatcher";
|
|
@@ -27,12 +15,8 @@ var Dot = styled(Div)(function (_a) {
|
|
|
27
15
|
return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n height: 8px;\n width: 8px;\n border-radius: 100%;\n background: ", ";\n ", "\n "], ["\n height: 8px;\n width: 8px;\n border-radius: 100%;\n background: ", ";\n ", "\n "])), colors.outlineInputs, isSelected && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n height: 12px;\n width: 12px;\n background: ", ";\n "], ["\n height: 12px;\n width: 12px;\n background: ", ";\n "])), colors.highlight01));
|
|
28
16
|
});
|
|
29
17
|
var Matcher = function () {
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
return templateHeaders.filter(function (th) { return th.column_type === FieldTypes.enum; }).length;
|
|
33
|
-
}, [templateHeaders]);
|
|
34
|
-
var dotsUI = (_jsxs(_Fragment, { children: [_jsx(Dot, { isSelected: matcherSubstep === 0 }), _jsx(Dot, { isSelected: matcherSubstep === 1 })] }));
|
|
35
|
-
return (_jsxs(_Fragment, { children: [_jsx(Div, __assign({ centered: true }, { children: _jsx(Div, __assign({ w: 30, mt: 40, mb: 16, alignCenter: true, spaceBetween: true }, { children: enumFieldsCount > 0 && dotsUI })) })), matcherSubstep === 0 && _jsx(HeaderMatcher, {}), matcherSubstep === 1 && _jsx(EnumFieldsMatchers, {})] }));
|
|
18
|
+
var matcherSubstep = useImporterContext().matcherSubstep;
|
|
19
|
+
return (_jsxs(_Fragment, { children: [matcherSubstep === 0 && _jsx(HeaderMatcher, {}), matcherSubstep === 1 && _jsx(EnumFieldsMatchers, {})] }));
|
|
36
20
|
};
|
|
37
21
|
export default React.memo(Matcher, areEqual);
|
|
38
22
|
var templateObject_1, templateObject_2;
|
|
@@ -16,23 +16,19 @@ var __assign = (this && this.__assign) || function () {
|
|
|
16
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
17
|
import { useImporterContext } from "../contexts/ImporterContextProvider";
|
|
18
18
|
import { Div } from "../../styled/utils";
|
|
19
|
-
import { Span } from "../../styled";
|
|
20
19
|
import Spreadsheet from "../common/Spreadsheet";
|
|
21
20
|
import { getSpreadsheetRowWidth } from "../common/utils";
|
|
22
21
|
import { AppResponseModal } from "./AppResponseModal";
|
|
23
22
|
import { useReviewContext } from "./ReviewContextProvider";
|
|
24
|
-
import { Button } from "../../common/buttons";
|
|
25
23
|
import styled from "styled-components";
|
|
26
24
|
import { useTranslation } from "react-i18next";
|
|
27
|
-
var
|
|
28
|
-
var TitleContainer = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n width: 99%;\n"], ["\n width: 99%;\n"])));
|
|
29
|
-
var ExportButtonContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n position: absolute;\n right: 32px;\n"], ["\n position: absolute;\n right: 32px;\n"])));
|
|
25
|
+
var TitleContainer = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject([""], [""])));
|
|
30
26
|
var ReviewWithContext = function () {
|
|
31
|
-
var _a = useReviewContext(), fields = _a.reviewFields, initialDataSet = _a.reviewInitialDataSet, options = _a.options, onValidateRecord = _a.onValidateRecord, onDataSetChanged = _a.onDataSetChanged, onValidationStateChanged = _a.onValidationStateChanged
|
|
27
|
+
var _a = useReviewContext(), fields = _a.reviewFields, initialDataSet = _a.reviewInitialDataSet, options = _a.options, onValidateRecord = _a.onValidateRecord, onDataSetChanged = _a.onDataSetChanged, onValidationStateChanged = _a.onValidationStateChanged;
|
|
32
28
|
var _b = useImporterContext(), selectedRows = _b.selectedRows, setSelectedRows = _b.setSelectedRows, isUsingManualImport = _b.isUsingManualImport;
|
|
33
29
|
var t = useTranslation("review").t;
|
|
34
30
|
var spreadsheetUI = initialDataSet && (_jsx(Spreadsheet, { options: __assign(__assign({}, options), { showCheckboxColumn: true }), selectedRows: selectedRows, setSelectedRows: setSelectedRows, initialDataSet: initialDataSet, fields: fields, rowWidth: getSpreadsheetRowWidth(fields, 6), onDataSetChanged: onDataSetChanged, onValidateRecord: onValidateRecord, onValidationStateChanged: onValidationStateChanged }));
|
|
35
|
-
return (_jsxs(Div, __assign({ centered: true, flexColumn: true, h100: true }, { children: [_jsx(AppResponseModal, {}), _jsxs(Div, __assign({ w100: true, h100: true }, { children: [
|
|
31
|
+
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 }))] }))] })));
|
|
36
32
|
};
|
|
37
33
|
export default ReviewWithContext;
|
|
38
|
-
var templateObject_1
|
|
34
|
+
var templateObject_1;
|
|
@@ -15,13 +15,13 @@ var __assign = (this && this.__assign) || function () {
|
|
|
15
15
|
};
|
|
16
16
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
17
17
|
import styled, { css } from "styled-components";
|
|
18
|
-
import {
|
|
18
|
+
import { WhiteCheckIcon } from "../../common";
|
|
19
19
|
import { Div } from "../../styled";
|
|
20
20
|
var StepIndexWrapper = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n height: 22px;\n width: 22px;\n color: ", ";\n border-radius: 50%;\n background-color: none;\n border: 1px solid ", ";\n\n ", ";\n"], ["\n height: 22px;\n width: 22px;\n color: ", ";\n border-radius: 50%;\n background-color: none;\n border: 1px solid ", ";\n\n ", ";\n"])), function (p) { return p.theme.colors.gray400; }, function (p) { return p.theme.colors.gray400; }, function (p) {
|
|
21
21
|
return p.isSelected && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n height: 32px;\n width: 32px;\n border: solid 1px ", ";\n color: ", ";\n background-color: ", ";\n "], ["\n height: 32px;\n width: 32px;\n border: solid 1px ", ";\n color: ", ";\n background-color: ", ";\n "])), function (p) { return p.theme.colors.blue500; }, function (p) { return p.theme.colors.white; }, function (p) { return p.theme.colors.blue500; });
|
|
22
22
|
});
|
|
23
23
|
export var StepIndex = function (_a) {
|
|
24
24
|
var index = _a.index, isSelected = _a.isSelected, isCompleted = _a.isCompleted;
|
|
25
|
-
return (_jsx(_Fragment, { children: isCompleted ? (_jsx(Div, __assign({ centered: true, body2: true, bold: true, mr: 8 }, { children:
|
|
25
|
+
return (_jsx(_Fragment, { children: isCompleted ? (_jsx(Div, __assign({ centered: true, body2: true, bold: true, mr: 8 }, { children: _jsx(WhiteCheckIcon, {}) }))) : (_jsx(StepIndexWrapper, __assign({ centered: true, body2: true, bold: true, mr: 8, isSelected: isSelected }, { children: index }))) }));
|
|
26
26
|
};
|
|
27
27
|
var templateObject_1, templateObject_2;
|
|
@@ -18,7 +18,6 @@ import { useState } from "react";
|
|
|
18
18
|
import styled, { css } from "styled-components";
|
|
19
19
|
import { Button, closeIconCondensed, ChevronRightIcon } from "../../common";
|
|
20
20
|
import { Div } from "../../styled/utils";
|
|
21
|
-
import { contentWidth } from "../common";
|
|
22
21
|
import { useImporterContext } from "../contexts/ImporterContextProvider";
|
|
23
22
|
import { useReviewContext } from "../Review/ReviewContextProvider";
|
|
24
23
|
import { ColumnType } from "../Matcher/common/types";
|
|
@@ -29,8 +28,15 @@ import { UnmatchedHeadersModal } from "./UnmatchedHeadersModal";
|
|
|
29
28
|
import { ConfirmCloseModal } from "./ConfirmCloseModal";
|
|
30
29
|
import { useTranslation } from "react-i18next";
|
|
31
30
|
var StepperWrapper = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background-color: ", ";\n border-bottom: 1px solid ", ";\n user-select: none;\n"], ["\n background-color: ", ";\n border-bottom: 1px solid ", ";\n user-select: none;\n"])), function (p) { return p.theme.colors.white; }, function (p) { return p.theme.colors.gray300; });
|
|
32
|
-
var
|
|
33
|
-
var
|
|
31
|
+
var StepperContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n gap: 16px;\n justify-content: space-between;\n padding-left: 32px;\n padding-right: 32px;\n width: 100%;\n"], ["\n align-items: center;\n display: flex;\n gap: 16px;\n justify-content: space-between;\n padding-left: 32px;\n padding-right: 32px;\n width: 100%;\n"])));
|
|
32
|
+
var Steps = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n @media (max-width: 630px) {\n display: none;\n }\n"], ["\n @media (max-width: 630px) {\n display: none;\n }\n"])));
|
|
33
|
+
var Logo = styled.img(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n max-height: 70px;\n max-width: 300px;\n"], ["\n max-height: 70px;\n max-width: 300px;\n"])));
|
|
34
|
+
var StepperButtonContainer = styled(Div)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n flex: 1;\n gap: 32px;\n justify-content: ", ";\n"], ["\n align-items: center;\n display: flex;\n flex: 1;\n gap: 32px;\n justify-content: ", ";\n"])), function (_a) {
|
|
35
|
+
var align = _a.align;
|
|
36
|
+
return align === "left" ? "flex-start" : "flex-end";
|
|
37
|
+
});
|
|
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([""], [""]))); });
|
|
34
40
|
export var Stepper = function (_a) {
|
|
35
41
|
var stepLabels = _a.stepLabels, logoURL = _a.logoURL;
|
|
36
42
|
var _b = useState(false), isUnmatchedHeadersModalOpen = _b[0], setIsUnmatchedHeadersModalOpen = _b[1];
|
|
@@ -38,7 +44,7 @@ export var Stepper = function (_a) {
|
|
|
38
44
|
var _c = useState(false), isSubmitModalOpen = _c[0], setIsSubmitModalOpen = _c[1];
|
|
39
45
|
var _d = useState(false), isConfirmCloseModalOpen = _d[0], setIsConfirmCloseModalOpen = _d[1];
|
|
40
46
|
var _e = useReviewContext(), appResponse = _e.appResponse, isSubmitDisabled = _e.isSubmitDisabled, onSubmit = _e.onSubmit;
|
|
41
|
-
var _f = useImporterContext(), currentStepIndex = _f.currentStepIndex, templateHeaderMatchings = _f.templateHeaderMatchings, matcherSubstep = _f.matcherSubstep, templateHeaders = _f.templateHeaders, uploadedDataEnumFieldValues = _f.uploadedDataEnumFieldValues, setEnumFieldValueMatchings = _f.setEnumFieldValueMatchings, setMatcherSubstep = _f.setMatcherSubstep, setCurrentStepIndex = _f.setCurrentStepIndex, onClose = _f.onClose, isUsingManualImport = _f.isUsingManualImport, resetImporterWhenUsingManualImport = _f.resetImporterWhenUsingManualImport;
|
|
47
|
+
var _f = useImporterContext(), currentStepIndex = _f.currentStepIndex, templateHeaderMatchings = _f.templateHeaderMatchings, matcherSubstep = _f.matcherSubstep, templateHeaders = _f.templateHeaders, uploadedDataEnumFieldValues = _f.uploadedDataEnumFieldValues, setEnumFieldValueMatchings = _f.setEnumFieldValueMatchings, setMatcherSubstep = _f.setMatcherSubstep, setCurrentStepIndex = _f.setCurrentStepIndex, onClose = _f.onClose, isUsingManualImport = _f.isUsingManualImport, resetImporterWhenUsingManualImport = _f.resetImporterWhenUsingManualImport, uploadedData = _f.uploadedData;
|
|
42
48
|
var templateHeaderLabels = Object.keys(templateHeaderMatchings || []);
|
|
43
49
|
var unmatchedHeadersCount = templateHeaderLabels.filter(function (templateHeaderLabel) { return !templateHeaderMatchings[templateHeaderLabel]; }).length;
|
|
44
50
|
var isLastSubMatchStep = matcherSubstep === 1;
|
|
@@ -66,7 +72,10 @@ export var Stepper = function (_a) {
|
|
|
66
72
|
unmatchedHeadersCount ? setIsUnmatchedHeadersModalOpen(true) : setStep();
|
|
67
73
|
};
|
|
68
74
|
var continueToNextStep = function () {
|
|
69
|
-
if (
|
|
75
|
+
if (isVerifyStep) {
|
|
76
|
+
setCurrentStepIndex(1);
|
|
77
|
+
}
|
|
78
|
+
else if (isLastSubMatchStep) {
|
|
70
79
|
setIsUnmatchedHeadersModalOpen(false);
|
|
71
80
|
setCurrentStepIndex(2);
|
|
72
81
|
}
|
|
@@ -88,6 +97,10 @@ export var Stepper = function (_a) {
|
|
|
88
97
|
setCurrentStepIndex(currentStepIndex - 1);
|
|
89
98
|
}
|
|
90
99
|
};
|
|
100
|
+
var handleOnClose = function () {
|
|
101
|
+
setIsConfirmCloseModalOpen(true);
|
|
102
|
+
};
|
|
103
|
+
var isVerifyStep = currentStepIndex === 0 && !!uploadedData;
|
|
91
104
|
var isMatchStep = currentStepIndex === 1;
|
|
92
105
|
var isReviewStep = currentStepIndex === 2;
|
|
93
106
|
var stepsUI = (_jsx(Div, __assign({ dflex: true, centered: true }, { children: stepLabels.map(function (label, index) {
|
|
@@ -95,13 +108,10 @@ export var Stepper = function (_a) {
|
|
|
95
108
|
var isCompleted = index < currentStepIndex;
|
|
96
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));
|
|
97
110
|
}) })));
|
|
98
|
-
var leftButtonUI = (_jsx(Div, { children: currentStepIndex > 0 && !appResponse && (_jsx(Button, __assign({ variant: "secondary", onClick: goBack }, { children: t("stepper.go_back") }))) }));
|
|
99
|
-
var rightButtonUI = (_jsxs(
|
|
100
|
-
|
|
101
|
-
setIsConfirmCloseModalOpen(true);
|
|
102
|
-
};
|
|
103
|
-
return (_jsxs(_Fragment, { children: [_jsxs(StepperWrapper, __assign({ pRelative: true, alignCenter: true, w100: true, h: 96, centered: true }, { children: [logoURL && _jsx(Logo, { src: logoURL, alt: "" }), _jsxs(Div, __assign({ spaceBetween: true, w: contentWidth }, { children: [leftButtonUI, _jsx(Div, __assign({ alignCenter: true }, { children: stepsUI })), rightButtonUI] })), _jsx(CloseIcon, __assign({ "data-test-id": "close-importer", centered: true, clickable: true, onClick: handleOnClose }, { children: closeIconCondensed }))] })), _jsx(UnmatchedHeadersModal, { isUnmatchedHeadersModalOpen: isUnmatchedHeadersModalOpen, unmatchedHeadersCount: unmatchedHeadersCount, onSetStep: function () { return setStep(); }, onCloseUnmatchedHeadersModal: function () {
|
|
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") })) }))] })) })));
|
|
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 }))] })));
|
|
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 () {
|
|
104
114
|
return setIsUnmatchedHeadersModalOpen(false);
|
|
105
115
|
} }), _jsx(StepperSubmitModal, { isSubmitModalOpen: isSubmitModalOpen, onCloseModal: function () { return setIsSubmitModalOpen(false); }, onSubmit: onSubmit }), _jsx(ConfirmCloseModal, { isOpen: isConfirmCloseModalOpen, onClose: function () { return setIsConfirmCloseModalOpen(false); }, onCloseImporter: onClose })] }));
|
|
106
116
|
};
|
|
107
|
-
var templateObject_1, templateObject_2, templateObject_3;
|
|
117
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const ImporterSectionContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps, never>;
|
|
2
|
+
export declare const ErrorCardContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps, never>;
|
|
3
|
+
export declare const LoadingCardWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps, never>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
2
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
|
+
return cooked;
|
|
4
|
+
};
|
|
5
|
+
import styled from "styled-components";
|
|
6
|
+
import { theme } from "../../../styled/theme";
|
|
7
|
+
import { Div } from "../../../styled/utils";
|
|
8
|
+
export var ImporterSectionContainer = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n gap: 16px;\n width: 100%;\n height: 100%;\n\n @media (max-width: 1050px) {\n flex-direction: column;\n }\n"], ["\n display: flex;\n gap: 16px;\n width: 100%;\n height: 100%;\n\n @media (max-width: 1050px) {\n flex-direction: column;\n }\n"])));
|
|
9
|
+
export var ErrorCardContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n align-items: center;\n align-self: center;\n background: ", ";\n border-radius: 8px;\n border: 1px dashed ", ";\n display: flex;\n flex-direction: column;\n height: 550px;\n justify-content: center;\n width: 1120px;\n"], ["\n align-items: center;\n align-self: center;\n background: ", ";\n border-radius: 8px;\n border: 1px dashed ", ";\n display: flex;\n flex-direction: column;\n height: 550px;\n justify-content: center;\n width: 1120px;\n"])), theme.colors.blue100, theme.colors.blue500);
|
|
10
|
+
export var LoadingCardWrapper = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n box-shadow: 0px 0px 12px rgba(33, 75, 167, 0.24);\n border-radius: 8px;\n max-width: 544px;\n height: 102px;\n padding-left: 30px;\n padding-right: 30px;\n background: ", ";\n"], ["\n box-shadow: 0px 0px 12px rgba(33, 75, 167, 0.24);\n border-radius: 8px;\n max-width: 544px;\n height: 102px;\n padding-left: 30px;\n padding-right: 30px;\n background: ", ";\n"])), function (p) { return p.theme.colors.white; });
|
|
11
|
+
var templateObject_1, templateObject_2, templateObject_3;
|
|
@@ -25,7 +25,7 @@ import { addToast } from "../../../common/Toast";
|
|
|
25
25
|
import { Button } from "../../../common/buttons";
|
|
26
26
|
import { DragAndDropSvg, UploadIndicatorSvg } from "./backgrounds";
|
|
27
27
|
import { useTranslation } from "react-i18next";
|
|
28
|
-
var DragAndDropCard = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n border-radius: 8px;\n margin-right: ", ";\n width:
|
|
28
|
+
var DragAndDropCard = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n border-radius: 8px;\n margin-right: ", ";\n width: 100%;\n height: 100%;\n display: flex;\n background: ", ";\n border: 1px dashed ", ";\n\n @media (max-width: 1050px) {\n padding: 24px;\n width: auto;\n }\n\n ", "\n"], ["\n border-radius: 8px;\n margin-right: ", ";\n width: 100%;\n height: 100%;\n display: flex;\n background: ", ";\n border: 1px dashed ", ";\n\n @media (max-width: 1050px) {\n padding: 24px;\n width: auto;\n }\n\n ", "\n"])), function (props) { return (props.isDragActive ? "-10px" : "revert"); }, theme.colors.white, theme.colors.red50, function (props) {
|
|
29
29
|
return props.isDragActive && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n border: 1px solid ", ";\n justify-content: center;\n "], ["\n background: ", ";\n border: 1px solid ", ";\n justify-content: center;\n "])), function (p) { return p.theme.colors.blue100; }, function (p) { return p.theme.colors.blue500; });
|
|
30
30
|
});
|
|
31
31
|
var DropzoneUploadingContainer = styled(Div)(function (_a) {
|
|
@@ -37,7 +37,7 @@ var DragAndDropComponent = function (_a) {
|
|
|
37
37
|
var openUploadFileDialog = _a.openUploadFileDialog;
|
|
38
38
|
var t = useTranslation("upload").t;
|
|
39
39
|
var manualDataImportSelected = useImporterContext().manualDataImportSelected;
|
|
40
|
-
return (_jsxs(Div, __assign({ centered: true, flexColumn: true }, { children: [_jsx(Div, __assign({ mb: 12 }, { children: DragAndDropSvg })), _jsx(Div, __assign({
|
|
40
|
+
return (_jsxs(Div, __assign({ centered: true, flexColumn: true }, { children: [_jsx(Div, __assign({ mb: 12 }, { children: DragAndDropSvg })), _jsx(Div, __assign({ h5: true }, { children: t("dropzone.title") })), _jsx(Button, __assign({ mt: 20, variant: "secondary", w: "fit-content", p: 12, isSmall: true, onClick: openUploadFileDialog }, { children: t("dropzone.button") })), _jsx(Div, __assign({ body1: true, textAlignCenter: true, m: 4, mt: 24 }, { children: t("dropzone.description") })), _jsx(Div, { children: _jsx(Button, __assign({ variant: "link", w: "fit-content", p: 12, isSmall: true, onClick: manualDataImportSelected }, { children: t("dropzone.enter_data_manually") })) })] })));
|
|
41
41
|
};
|
|
42
42
|
var ImporterDropzone = function () {
|
|
43
43
|
var _a = useUploaderContext(), setIsUploading = _a.setIsUploading, setFileName = _a.setFileName;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type HeaderListItemProps = {
|
|
2
|
+
isLast: boolean;
|
|
3
|
+
};
|
|
4
|
+
export declare const HeaderCardWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../../styled/utils").CSSProps, never>;
|
|
5
|
+
export declare const HeaderCardContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../../styled/utils").CSSProps, never>;
|
|
6
|
+
export declare const HeaderListItem: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../../styled/utils").CSSProps & HeaderListItemProps, never>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
2
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
|
+
return cooked;
|
|
4
|
+
};
|
|
5
|
+
import styled from "styled-components";
|
|
6
|
+
import { Div } from "../../../../styled/utils";
|
|
7
|
+
import { theme } from "../../../../styled/theme";
|
|
8
|
+
export var HeaderCardWrapper = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n height: fit-content;\n"], ["\n height: fit-content;\n"])));
|
|
9
|
+
export var HeaderCardContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n border: 1px solid ", ";\n border-radius: 8px;\n padding: 24px;\n box-sizing: border-box;\n overflow-y: auto;\n ", ";\n background: ", ";\n max-height: 596px;\n width: 332px;\n\n @media (max-width: 1050px) {\n width: 100%;\n }\n"], ["\n border: 1px solid ", ";\n border-radius: 8px;\n padding: 24px;\n box-sizing: border-box;\n overflow-y: auto;\n ", ";\n background: ", ";\n max-height: 596px;\n width: 332px;\n\n @media (max-width: 1050px) {\n width: 100%;\n }\n"])), theme.colors.gray200, function (p) { return p.theme.css.scrollbarDark; }, function (p) { return p.theme.colors.white; });
|
|
10
|
+
export var HeaderListItem = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n margin-bottom: ", "px;\n"], ["\n margin-bottom: ", "px;\n"])), function (p) { return (p.isLast ? 0 : 8); });
|
|
11
|
+
var templateObject_1, templateObject_2, templateObject_3;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DivCSSProps } from "../../../../styled/utils";
|
|
2
|
+
import { TemplateHeader } from "../../../../types";
|
|
3
|
+
type HeaderCardProps = {
|
|
4
|
+
templateHeaders: TemplateHeader[];
|
|
5
|
+
} & DivCSSProps;
|
|
6
|
+
export declare const HeaderCard: ({ templateHeaders, ...props }: HeaderCardProps) => JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
+
import { Div } from "../../../../styled/utils";
|
|
25
|
+
import { useTranslation } from "react-i18next";
|
|
26
|
+
import * as S from "./ImporterSectionHeader.styles";
|
|
27
|
+
var HeadersList = function (_a) {
|
|
28
|
+
var title = _a.title, headers = _a.headers, props = __rest(_a, ["title", "headers"]);
|
|
29
|
+
return (_jsxs(_Fragment, { children: [_jsx(Div, __assign({ label3: true }, props, { children: title })), headers.map(function (header, index) {
|
|
30
|
+
var isLast = index === headers.length - 1;
|
|
31
|
+
return (_jsx(S.HeaderListItem, __assign({ body1: true, isLast: isLast, mt: 16 }, { children: header }), index));
|
|
32
|
+
})] }));
|
|
33
|
+
};
|
|
34
|
+
export var HeaderCard = function (_a) {
|
|
35
|
+
var templateHeaders = _a.templateHeaders, props = __rest(_a, ["templateHeaders"]);
|
|
36
|
+
var requiredHeaders = templateHeaders
|
|
37
|
+
.filter(function (h) { return h.required; })
|
|
38
|
+
.map(function (h) { return "".concat(h.label, "*"); });
|
|
39
|
+
var optionalHeaders = templateHeaders
|
|
40
|
+
.filter(function (h) { return !h.required; })
|
|
41
|
+
.map(function (h) { return h.label; });
|
|
42
|
+
var t = useTranslation("upload").t;
|
|
43
|
+
return (_jsx(S.HeaderCardWrapper, { children: _jsxs(S.HeaderCardContainer, __assign({}, props, { children: [_jsx(Div, __assign({ body3: true, mb: 24 }, { children: t("header.title") })), requiredHeaders.length > 0 && (_jsx(HeadersList, { title: t("header.required_headers"), headers: requiredHeaders })), optionalHeaders.length > 0 && (_jsx(HeadersList, { title: t("header.optional_headers"), headers: optionalHeaders, mt: 30 }))] })) }));
|
|
44
|
+
};
|
|
@@ -1,7 +1,3 @@
|
|
|
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
1
|
var __assign = (this && this.__assign) || function () {
|
|
6
2
|
__assign = Object.assign || function(t) {
|
|
7
3
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
@@ -13,20 +9,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
13
9
|
};
|
|
14
10
|
return __assign.apply(this, arguments);
|
|
15
11
|
};
|
|
16
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
17
|
-
var t = {};
|
|
18
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
19
|
-
t[p] = s[p];
|
|
20
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
21
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
22
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
23
|
-
t[p[i]] = s[p[i]];
|
|
24
|
-
}
|
|
25
|
-
return t;
|
|
26
|
-
};
|
|
27
12
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
28
|
-
import styled from "styled-components";
|
|
29
|
-
import { theme } from "../../../styled/theme";
|
|
30
13
|
import { colors } from "../../../styled/theme/colorPalette";
|
|
31
14
|
import { Div } from "../../../styled/utils";
|
|
32
15
|
import { closeIconWithCircle, errorIcon, fileExtensionIcon, } from "../../common/icons";
|
|
@@ -34,50 +17,29 @@ import { useImporterContext } from "../../contexts/ImporterContextProvider";
|
|
|
34
17
|
import { useUploaderContext } from "../UploaderContextProvider";
|
|
35
18
|
import { ImporterDropzone } from "./ImporterDropzone";
|
|
36
19
|
import { useTranslation } from "react-i18next";
|
|
37
|
-
|
|
38
|
-
|
|
20
|
+
import { HeaderCard } from "./ImporterSectionHeader";
|
|
21
|
+
import * as S from "./DragAndDropImporter.styles";
|
|
39
22
|
export var ErrorCard = function () {
|
|
40
23
|
var templateError = useImporterContext().templateError;
|
|
41
24
|
var t = useTranslation("upload").t;
|
|
42
|
-
return (_jsxs(ErrorCardContainer, { children: [_jsx(Div, __assign({ mb: 28 }, { children: errorIcon })), _jsx(Div, __assign({ h3: true, mb: 16 }, { children: t("error.title") })), _jsx(Div, __assign({ body1: true }, { children: templateError }))] }));
|
|
43
|
-
};
|
|
44
|
-
var HeaderListItem = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n margin-bottom: ", "px;\n"], ["\n margin-bottom: ", "px;\n"])), function (p) { return (p.isLast ? 0 : 8); });
|
|
45
|
-
var HeadersList = function (_a) {
|
|
46
|
-
var title = _a.title, headers = _a.headers, props = __rest(_a, ["title", "headers"]);
|
|
47
|
-
return (_jsxs(_Fragment, { children: [_jsx(Div, __assign({ label3: true }, props, { children: title })), headers.map(function (header, index) {
|
|
48
|
-
var isLast = index === headers.length - 1;
|
|
49
|
-
return (_jsx(HeaderListItem, __assign({ body1: true, isLast: isLast, mt: 16 }, { children: header }), index));
|
|
50
|
-
})] }));
|
|
51
|
-
};
|
|
52
|
-
var HeaderCard = function (_a) {
|
|
53
|
-
var templateHeaders = _a.templateHeaders, props = __rest(_a, ["templateHeaders"]);
|
|
54
|
-
var requiredHeaders = templateHeaders
|
|
55
|
-
.filter(function (h) { return h.required; })
|
|
56
|
-
.map(function (h) { return "".concat(h.label, "*"); });
|
|
57
|
-
var optionalHeaders = templateHeaders
|
|
58
|
-
.filter(function (h) { return !h.required; })
|
|
59
|
-
.map(function (h) { return h.label; });
|
|
60
|
-
var t = useTranslation("upload").t;
|
|
61
|
-
return (_jsx(Div, { children: _jsxs(HeaderCardWrapper, __assign({}, props, { children: [_jsx(Div, __assign({ body3: true, mb: 24 }, { children: t("header.title") })), requiredHeaders.length > 0 && (_jsx(HeadersList, { title: t("header.required_headers"), headers: requiredHeaders })), optionalHeaders.length > 0 && (_jsx(HeadersList, { title: t("header.optional_headers"), headers: optionalHeaders, mt: 30 }))] })) }));
|
|
25
|
+
return (_jsxs(S.ErrorCardContainer, { children: [_jsx(Div, __assign({ mb: 28 }, { children: errorIcon })), _jsx(Div, __assign({ h3: true, mb: 16 }, { children: t("error.title") })), _jsx(Div, __assign({ body1: true }, { children: templateError }))] }));
|
|
62
26
|
};
|
|
63
|
-
var LoadingCardWrapper = styled(Div)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n box-shadow: 0px 0px 12px rgba(33, 75, 167, 0.24);\n border-radius: 8px;\n max-width: 544px;\n height: 102px;\n padding-left: 30px;\n padding-right: 30px;\n background: ", ";\n"], ["\n box-shadow: 0px 0px 12px rgba(33, 75, 167, 0.24);\n border-radius: 8px;\n max-width: 544px;\n height: 102px;\n padding-left: 30px;\n padding-right: 30px;\n background: ", ";\n"])), function (p) { return p.theme.colors.white; });
|
|
64
27
|
var LoadingCard = function () {
|
|
65
28
|
var fileName = useUploaderContext().fileName;
|
|
66
29
|
var resetImport = useImporterContext().resetImport;
|
|
67
30
|
var t = useTranslation("upload").t;
|
|
68
31
|
var fileExtension = fileName && fileName.slice(fileName.lastIndexOf("."));
|
|
69
32
|
var fileExtensionUI = (_jsxs(Div, { children: [fileExtensionIcon, _jsx(Div, __assign({ c: colors.gray900, helperText: true, mt: -26, ml: 7 }, { children: fileExtension }))] }));
|
|
70
|
-
return (_jsxs(LoadingCardWrapper, __assign({ spaceBetween: true, centered: true }, { children: [fileExtensionUI, _jsxs(Div, __assign({ mr: 30, ml: 30 }, { children: [_jsx(Div, __assign({ label2: true }, { children: fileName })), _jsx(Div, __assign({ helperText: true, c: colors.gray500 }, { children: t("loading.title") }))] })), _jsx(Div, __assign({ clickable: true, onClick: resetImport }, { children: closeIconWithCircle }))] })));
|
|
33
|
+
return (_jsxs(S.LoadingCardWrapper, __assign({ spaceBetween: true, centered: true }, { children: [fileExtensionUI, _jsxs(Div, __assign({ mr: 30, ml: 30 }, { children: [_jsx(Div, __assign({ label2: true }, { children: fileName })), _jsx(Div, __assign({ helperText: true, c: colors.gray500 }, { children: t("loading.title") }))] })), _jsx(Div, __assign({ clickable: true, onClick: resetImport }, { children: closeIconWithCircle }))] })));
|
|
71
34
|
};
|
|
72
35
|
var ImporterSection = function () {
|
|
73
36
|
var _a = useImporterContext(), templateHeaders = _a.templateHeaders, templateError = _a.templateError;
|
|
74
|
-
return templateError ? (_jsx(ErrorCard, {})) : (_jsx(_Fragment, { children: templateHeaders && (_jsxs(
|
|
37
|
+
return templateError ? (_jsx(ErrorCard, {})) : (_jsx(_Fragment, { children: templateHeaders && (_jsxs(S.ImporterSectionContainer, { children: [_jsx(ImporterDropzone, {}), _jsx(HeaderCard, { templateHeaders: templateHeaders })] })) }));
|
|
75
38
|
};
|
|
76
39
|
var DragAndDropImporter = function () {
|
|
77
40
|
var isUploading = useUploaderContext().isUploading;
|
|
78
41
|
var t = useTranslation("upload").t;
|
|
79
|
-
var
|
|
80
|
-
return (_jsxs(Div, __assign({ flexColumn: true,
|
|
42
|
+
var HeaderUI = function () { return (_jsxs(_Fragment, { children: [_jsx(Div, { children: _jsx(Div, __assign({ h2: true, mb: 16, mt: 40 }, { children: t("title") })) }), _jsx(Div, __assign({ body1: true, mb: 48 }, { children: t("description") }))] })); };
|
|
43
|
+
return (_jsx(Div, __assign({ flexColumn: true, h100: true }, { children: _jsxs(Div, __assign({ flexColumn: true, pl: 32, pr: 32, pb: 64, h100: true }, { children: [_jsx(HeaderUI, {}), isUploading ? (_jsx(Div, __assign({ mt: 40, justifyCenter: true }, { children: _jsx(LoadingCard, {}) }))) : (_jsx(ImporterSection, {}))] })) })));
|
|
81
44
|
};
|
|
82
45
|
export { DragAndDropImporter };
|
|
83
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
|
|
@@ -13,19 +13,16 @@ var __assign = (this && this.__assign) || function () {
|
|
|
13
13
|
};
|
|
14
14
|
return __assign.apply(this, arguments);
|
|
15
15
|
};
|
|
16
|
-
import { jsx as _jsx
|
|
16
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
17
17
|
import styled from "styled-components";
|
|
18
18
|
import { Button } from "../../common/buttons";
|
|
19
19
|
import { Div } from "../../styled/utils";
|
|
20
20
|
import { useImporterContext } from "../contexts/ImporterContextProvider";
|
|
21
21
|
import { useTranslation } from "react-i18next";
|
|
22
|
-
var HeaderButtonsWrapper = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n > div {\n margin-
|
|
22
|
+
var HeaderButtonsWrapper = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n > div {\n margin-right: 8px;\n }\n"], ["\n > div {\n margin-right: 8px;\n }\n"])));
|
|
23
23
|
export var HeaderButtons = function () {
|
|
24
24
|
var t = useTranslation("upload").t;
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
setCurrentStepIndex(1);
|
|
28
|
-
};
|
|
29
|
-
return (_jsxs(HeaderButtonsWrapper, __assign({ dflex: true, spaceBetween: true, mb: 12 }, { children: [_jsx(Button, __assign({ isSmall: true, variant: "secondary", onClick: resetImport }, { children: t("headers_preview.cancel") })), _jsx(Button, __assign({ isSmall: true, onClick: onClick }, { children: t("headers_preview.continue") }))] })));
|
|
25
|
+
var resetImport = useImporterContext().resetImport;
|
|
26
|
+
return (_jsx(HeaderButtonsWrapper, __assign({ dflex: true, ml: 12 }, { children: _jsx(Button, __assign({ isSmall: true, variant: "secondary", onClick: resetImport }, { children: t("headers_preview.cancel") })) })));
|
|
30
27
|
};
|
|
31
28
|
var templateObject_1;
|
|
@@ -1,3 +1,7 @@
|
|
|
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
|
+
};
|
|
1
5
|
var __assign = (this && this.__assign) || function () {
|
|
2
6
|
__assign = Object.assign || function(t) {
|
|
3
7
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
@@ -17,13 +21,17 @@ import { useReviewContext } from "../Review/ReviewContextProvider";
|
|
|
17
21
|
import { HeaderButtons } from "./HeaderButtons";
|
|
18
22
|
import { useImporterContext } from "../contexts/ImporterContextProvider";
|
|
19
23
|
import { useTranslation } from "react-i18next";
|
|
24
|
+
import styled from "styled-components";
|
|
25
|
+
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
|
+
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"])));
|
|
20
27
|
var HeadersPreview = function () {
|
|
21
28
|
var _a = useReviewContext(), fields = _a.previewFields, initialDataSet = _a.previewInitialDataSet;
|
|
22
29
|
var t = useTranslation("upload").t;
|
|
23
30
|
var _b = useImporterContext(), selectedRows = _b.selectedRows, setSelectedRows = _b.setSelectedRows;
|
|
24
|
-
return (_jsxs(Div, __assign({ flexColumn: true,
|
|
31
|
+
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: getSpreadsheetRowWidth(fields, 6), isReadOnly: true, initialDataSet: initialDataSet, fields: fields, highlightFirstRow: true, options: {
|
|
25
32
|
showCheckboxColumn: true,
|
|
26
33
|
firstRowIsHeader: true,
|
|
27
34
|
}, selectedRows: selectedRows, setSelectedRows: setSelectedRows })) }))] })));
|
|
28
35
|
};
|
|
29
36
|
export default HeadersPreview;
|
|
37
|
+
var templateObject_1, templateObject_2;
|
|
@@ -25,6 +25,7 @@ type State = {
|
|
|
25
25
|
filteredInputValue: string;
|
|
26
26
|
setFilteredInputValue: React.Dispatch<React.SetStateAction<string>>;
|
|
27
27
|
addNewRowsToSpreadsheet: () => void;
|
|
28
|
+
checkboxColumnWidth: number;
|
|
28
29
|
} & ValidationState;
|
|
29
30
|
type Props = {
|
|
30
31
|
initialDataSet: RecordDataSet;
|
|
@@ -105,7 +105,15 @@ export var SpreadsheetContextProvider = function (_a) {
|
|
|
105
105
|
setSortByFieldErrors(null);
|
|
106
106
|
}, []);
|
|
107
107
|
var lastClickedIndexRef = useRef(null);
|
|
108
|
-
var
|
|
108
|
+
var checkboxColumnWidth = useMemo(function () {
|
|
109
|
+
var _a, _b, _c, _d;
|
|
110
|
+
var lastRowIndexLength = (_d = (_c = (_b = (_a = data[data.length - 1]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.rowIndex) === null || _c === void 0 ? void 0 : _c.toString()) === null || _d === void 0 ? void 0 : _d.length;
|
|
111
|
+
var singleLetterWidth = 15;
|
|
112
|
+
var horizontalSpacing = 8;
|
|
113
|
+
var baseCheckboxColumnWidth = lastRowIndexLength * singleLetterWidth + horizontalSpacing;
|
|
114
|
+
return baseCheckboxColumnWidth < 40 ? 40 : baseCheckboxColumnWidth;
|
|
115
|
+
}, [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 });
|
|
109
117
|
return (_jsx(SpreadsheetContext.Provider, __assign({ value: value }, { children: children })));
|
|
110
118
|
};
|
|
111
119
|
export var useSpreadsheetContext = function () { return useContext(SpreadsheetContext); };
|