fuse-importer 0.24.0 → 0.24.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +5 -5
  2. package/lib/esm/Importer/ImporterWithContext.d.ts +1 -2
  3. package/lib/esm/Importer/ImporterWithContext.js +7 -10
  4. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.d.ts +0 -1
  5. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +5 -1
  6. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/tableColumns.d.ts +0 -1
  7. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/tableColumns.js +8 -8
  8. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcherContext.d.ts +2 -3
  9. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.d.ts +0 -1
  10. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +3 -1
  11. package/lib/esm/Importer/Matcher/HeaderMatcher/index.d.ts +0 -1
  12. package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +6 -1
  13. package/lib/esm/Importer/Matcher/HeaderMatcher/tableColumns.d.ts +0 -1
  14. package/lib/esm/Importer/Matcher/HeaderMatcher/tableColumns.js +5 -7
  15. package/lib/esm/Importer/Matcher/common/icons/index.d.ts +0 -1
  16. package/lib/esm/Importer/Matcher/common/index.d.ts +2 -3
  17. package/lib/esm/Importer/Matcher/common/index.js +9 -2
  18. package/lib/esm/Importer/PreviewFirstTime.d.ts +0 -1
  19. package/lib/esm/Importer/PreviewFirstTime.js +9 -8
  20. package/lib/esm/Importer/PreviewModeBanner.d.ts +0 -1
  21. package/lib/esm/Importer/PreviewModeBanner.js +5 -1
  22. package/lib/esm/Importer/Review/AppResponseModal.d.ts +0 -1
  23. package/lib/esm/Importer/Review/AppResponseModal.js +1 -1
  24. package/lib/esm/Importer/Review/ReviewContextProvider.d.ts +3 -3
  25. package/lib/esm/Importer/Review/ReviewContextProvider.js +37 -4
  26. package/lib/esm/Importer/Review/ReviewWithContext.d.ts +0 -1
  27. package/lib/esm/Importer/Review/ReviewWithContext.js +18 -3
  28. package/lib/esm/Importer/Stepper/ConfirmCloseModal.d.ts +7 -0
  29. package/lib/esm/Importer/Stepper/ConfirmCloseModal.js +24 -0
  30. package/lib/esm/Importer/Stepper/Step.d.ts +0 -1
  31. package/lib/esm/Importer/Stepper/StepIndex.d.ts +0 -1
  32. package/lib/esm/Importer/Stepper/StepperSubmitModal.d.ts +1 -2
  33. package/lib/esm/Importer/Stepper/StepperSubmitModal.js +4 -2
  34. package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.d.ts +1 -2
  35. package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +9 -1
  36. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.d.ts +1 -1
  37. package/lib/esm/Importer/Stepper/common/icons.d.ts +0 -1
  38. package/lib/esm/Importer/Stepper/index.d.ts +1 -2
  39. package/lib/esm/Importer/Stepper/index.js +13 -6
  40. package/lib/esm/Importer/TrialModeBanner.d.ts +0 -1
  41. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.d.ts +0 -1
  42. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +10 -9
  43. package/lib/esm/Importer/Uploader/DragAndDropImporter/backgrounds.d.ts +0 -1
  44. package/lib/esm/Importer/Uploader/DragAndDropImporter/index.d.ts +0 -1
  45. package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +9 -4
  46. package/lib/esm/Importer/Uploader/HeaderButtons.d.ts +0 -1
  47. package/lib/esm/Importer/Uploader/HeaderButtons.js +3 -1
  48. package/lib/esm/Importer/Uploader/HeadersPreview.d.ts +0 -1
  49. package/lib/esm/Importer/Uploader/HeadersPreview.js +8 -1
  50. package/lib/esm/Importer/Uploader/UploaderContextProvider.d.ts +2 -2
  51. package/lib/esm/Importer/common/AppLoading.d.ts +0 -1
  52. package/lib/esm/Importer/common/Footer.d.ts +0 -1
  53. package/lib/esm/Importer/common/ImporterFonts.d.ts +0 -1
  54. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider.d.ts +10 -5
  55. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider.js +2 -2
  56. package/lib/esm/Importer/common/Spreadsheet/common/index.js +1 -1
  57. package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.d.ts +1 -1
  58. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +8 -2
  59. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.d.ts +10 -0
  60. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +106 -0
  61. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.d.ts +1 -1
  62. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.d.ts +0 -1
  63. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.d.ts +2 -2
  64. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.d.ts +1 -2
  65. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.d.ts +0 -1
  66. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +1 -1
  67. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EnumInput.d.ts +1 -1
  68. package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +3 -3
  69. package/lib/esm/Importer/common/Spreadsheet/hooks.js +2 -2
  70. package/lib/esm/Importer/common/Spreadsheet/index.d.ts +4 -2
  71. package/lib/esm/Importer/common/Spreadsheet/index.js +2 -2
  72. package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +1 -0
  73. package/lib/esm/Importer/common/Spreadsheet/styles.js +4 -3
  74. package/lib/esm/Importer/common/Spreadsheet/validation/index.d.ts +3 -3
  75. package/lib/esm/Importer/common/Spreadsheet/validation/index.js +2 -2
  76. package/lib/esm/Importer/common/Spreadsheet/validation/validators.d.ts +2 -2
  77. package/lib/esm/Importer/common/icons/index.d.ts +0 -1
  78. package/lib/esm/Importer/common/index.d.ts +2 -2
  79. package/lib/esm/Importer/common/theme.d.ts +2 -2
  80. package/lib/esm/Importer/common/theme.js +2 -1
  81. package/lib/esm/Importer/common/utils.d.ts +1 -1
  82. package/lib/esm/Importer/common/utils.js +1 -1
  83. package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +7 -5
  84. package/lib/esm/Importer/contexts/ImporterContextProvider.js +10 -2
  85. package/lib/esm/Importer/data/index.d.ts +1 -1
  86. package/lib/esm/Importer/index.d.ts +1 -2
  87. package/lib/esm/api/index.d.ts +1 -1
  88. package/lib/esm/api/responseHandlers.d.ts +1 -1
  89. package/lib/esm/common/Modal.d.ts +1 -1
  90. package/lib/esm/common/Spinner.d.ts +0 -1
  91. package/lib/esm/common/Table/Pagination/icons.d.ts +1 -2
  92. package/lib/esm/common/Table/Pagination/index.d.ts +0 -1
  93. package/lib/esm/common/Table/TableDataProvider.d.ts +2 -2
  94. package/lib/esm/common/Table/TableDataProvider.js +1 -1
  95. package/lib/esm/common/Table/TableView/TableHeaders.d.ts +3 -3
  96. package/lib/esm/common/Table/TableView/TableHeaders.js +3 -1
  97. package/lib/esm/common/Table/TableView/TableRow.d.ts +2 -2
  98. package/lib/esm/common/Table/TableView/index.d.ts +4 -4
  99. package/lib/esm/common/Table/icons.d.ts +0 -1
  100. package/lib/esm/common/Table/index.d.ts +1 -2
  101. package/lib/esm/common/Toast.d.ts +0 -1
  102. package/lib/esm/common/TooltipProvider.d.ts +3 -2
  103. package/lib/esm/common/TooltipProvider.js +9 -5
  104. package/lib/esm/common/buttons.d.ts +20 -3
  105. package/lib/esm/common/buttons.js +25 -8
  106. package/lib/esm/common/icons/index.d.ts +0 -1
  107. package/lib/esm/common/index.d.ts +2 -3
  108. package/lib/esm/common/inputs/Autocomplete.d.ts +4 -4
  109. package/lib/esm/common/inputs/Autocomplete.js +5 -3
  110. package/lib/esm/common/inputs/Checkbox.d.ts +9 -0
  111. package/lib/esm/common/inputs/Checkbox.js +50 -0
  112. package/lib/esm/common/inputs/SelectMenu.d.ts +1 -2
  113. package/lib/esm/common/inputs/TextInput.d.ts +2 -2
  114. package/lib/esm/common/inputs/index.d.ts +1 -0
  115. package/lib/esm/common/inputs/index.js +1 -0
  116. package/lib/esm/common/inputs/tooltip.d.ts +0 -1
  117. package/lib/esm/common/logo.d.ts +0 -1
  118. package/lib/esm/index.d.ts +2 -1
  119. package/lib/esm/index.js +86 -15
  120. package/lib/esm/locales/de.d.ts +94 -0
  121. package/lib/esm/locales/de.js +94 -0
  122. package/lib/esm/locales/en.d.ts +94 -0
  123. package/lib/esm/locales/en.js +94 -0
  124. package/lib/esm/locales/es.d.ts +94 -0
  125. package/lib/esm/locales/es.js +94 -0
  126. package/lib/esm/locales/fr.d.ts +94 -0
  127. package/lib/esm/locales/fr.js +94 -0
  128. package/lib/esm/locales/index.d.ts +4 -0
  129. package/lib/esm/locales/index.js +4 -0
  130. package/lib/esm/styled/theme/index.d.ts +1 -1
  131. package/lib/esm/styled/utils.d.ts +9 -9
  132. package/lib/esm/types.d.ts +24 -22
  133. package/lib/main.js +171 -1
  134. package/lib/main.js.LICENSE.txt +1 -3
  135. package/package.json +12 -4
@@ -0,0 +1,24 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { Div } from "../../styled";
14
+ import { Button, Modal } from "../../common";
15
+ import { errorIcon } from "./common/icons";
16
+ import { useTranslation } from "react-i18next";
17
+ export var ConfirmCloseModal = function (_a) {
18
+ var isOpen = _a.isOpen, onClose = _a.onClose, onCloseImporter = _a.onCloseImporter;
19
+ var t = useTranslation("general").t;
20
+ return (_jsx(Modal, __assign({ isOpen: isOpen, onClose: onClose }, { children: _jsxs(Div, __assign({ centered: true, flexColumn: true, p: 60 }, { children: [_jsx(Div, __assign({ textAlignCenter: true, mb: 10, mt: 5 }, { children: errorIcon })), _jsx(Div, __assign({ h5: true, mt: 10 }, { children: t("confirm_close_modal.title") })), _jsx(Div, __assign({ body1: true, mt: 12, w: 448, textAlignCenter: true }, { children: t("confirm_close_modal.description") })), _jsxs(Div, __assign({ dflex: true, mt: 40, w100: true, centered: true }, { children: [_jsx(Button, __assign({ w: 115, variant: "secondary", mr: 10, onClick: onClose, "data-test-id": "confirm-close-modal-cancel" }, { children: t("confirm_close_modal.cancel") })), _jsx(Button, __assign({ w: 140, ml: 10, onClick: function () {
21
+ onCloseImporter();
22
+ onClose();
23
+ } }, { children: t("confirm_close_modal.close") }))] }))] })) })));
24
+ };
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare const Step: ({ index, label, isSelected, isCompleted }: {
3
2
  index: any;
4
3
  label: any;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare const StepIndex: ({ index, isSelected, isCompleted }: {
3
2
  index: any;
4
3
  isSelected: any;
@@ -1,5 +1,4 @@
1
- /// <reference types="react" />
2
- declare type StepperSubmitModalProps = {
1
+ type StepperSubmitModalProps = {
3
2
  isSubmitModalOpen: boolean;
4
3
  onCloseModal: () => void;
5
4
  onSubmit: () => void;
@@ -13,10 +13,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import { Div } from "../../styled";
14
14
  import { Button, Modal } from "../../common";
15
15
  import { submitIcon } from "./common/icons";
16
+ import { useTranslation } from "react-i18next";
16
17
  export var StepperSubmitModal = function (_a) {
17
18
  var isSubmitModalOpen = _a.isSubmitModalOpen, onCloseModal = _a.onCloseModal, onSubmit = _a.onSubmit;
18
- return (_jsx(Modal, __assign({ isOpen: isSubmitModalOpen, onClose: function () { return onCloseModal(); } }, { children: _jsxs(Div, __assign({ centered: true, flexColumn: true, p: 60 }, { children: [_jsx(Div, { children: submitIcon }), _jsx(Div, __assign({ h5: true, mt: 20 }, { children: "Ready to submit?" })), _jsx(Div, __assign({ body1: true, mt: 12, w: 448, textAlignCenter: true }, { children: "We didn't find anything wrong with your file. You're good to go!" })), _jsxs(Div, __assign({ dflex: true, mt: 40, w100: true, centered: true }, { children: [_jsx(Button, __assign({ w: 115, variant: "secondary", mr: 10, onClick: function () { return onCloseModal(); }, "data-test-id": "submit-modal-go-back" }, { children: "Go back" })), _jsx(Button, __assign({ w: 140, ml: 10, onClick: function () {
19
+ var t = useTranslation("general").t;
20
+ return (_jsx(Modal, __assign({ isOpen: isSubmitModalOpen, onClose: function () { return onCloseModal(); } }, { children: _jsxs(Div, __assign({ centered: true, flexColumn: true, p: 60 }, { children: [_jsx(Div, { children: submitIcon }), _jsx(Div, __assign({ h5: true, mt: 20 }, { children: t("submit_modal.title") })), _jsx(Div, __assign({ body1: true, mt: 12, w: 448, textAlignCenter: true }, { children: t("submit_modal.description") })), _jsxs(Div, __assign({ dflex: true, mt: 40, w100: true, centered: true }, { children: [_jsx(Button, __assign({ w: 115, variant: "secondary", mr: 10, onClick: function () { return onCloseModal(); }, "data-test-id": "submit-modal-go-back" }, { children: t("submit_modal.cancel") })), _jsx(Button, __assign({ w: 140, ml: 10, onClick: function () {
19
21
  onSubmit();
20
22
  onCloseModal();
21
- } }, { children: "Yes, submit" }))] }))] })) })));
23
+ } }, { children: t("submit_modal.submit") }))] }))] })) })));
22
24
  };
@@ -1,5 +1,4 @@
1
- /// <reference types="react" />
2
- declare type UnmatchedHeadersModalProps = {
1
+ type UnmatchedHeadersModalProps = {
3
2
  isUnmatchedHeadersModalOpen: boolean;
4
3
  unmatchedHeadersCount: number;
5
4
  onSetStep: () => void;
@@ -13,11 +13,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import { Div } from "../../styled";
14
14
  import { Button, Modal } from "../../common";
15
15
  import { errorIcon } from "./common/icons";
16
+ import { useTranslation } from "react-i18next";
16
17
  export var UnmatchedHeadersModal = function (_a) {
17
18
  var isUnmatchedHeadersModalOpen = _a.isUnmatchedHeadersModalOpen, unmatchedHeadersCount = _a.unmatchedHeadersCount, onSetStep = _a.onSetStep, onCloseUnmatchedHeadersModal = _a.onCloseUnmatchedHeadersModal;
18
19
  var skipStep = function () {
19
20
  onSetStep();
20
21
  onCloseUnmatchedHeadersModal();
21
22
  };
22
- return (_jsx(Modal, __assign({ isOpen: isUnmatchedHeadersModalOpen, onClose: function () { return onCloseUnmatchedHeadersModal(); } }, { children: _jsxs(Div, __assign({ p: "17px 20px" }, { children: [_jsx(Div, __assign({ textAlignCenter: true, mb: 24, mt: 5 }, { children: errorIcon })), _jsx(Div, __assign({ textAlignCenter: true, h5: true }, { children: "Unmatched Column Headers" })), _jsxs(Div, __assign({ w: 448, mt: 12, textAlignCenter: true, body1: true }, { children: [unmatchedHeadersCount === 1 ? "There is " : "There are ", unmatchedHeadersCount, " unmatched column headers. You will have to fill these out manually if you proceed."] })), _jsxs(Div, __assign({ dflex: true, centered: true, mt: 40 }, { children: [_jsx(Button, __assign({ variant: "secondary", onClick: function () { return onCloseUnmatchedHeadersModal(); }, w: 160, mr: 16 }, { children: "Assign Headers" })), _jsx(Button, __assign({ w: 83, variant: "primary", onClick: skipStep }, { children: "Skip" }))] }))] })) })));
23
+ var t = useTranslation("general").t;
24
+ return (_jsx(Modal, __assign({ isOpen: isUnmatchedHeadersModalOpen, onClose: function () { return onCloseUnmatchedHeadersModal(); } }, { children: _jsxs(Div, __assign({ p: "17px 20px" }, { children: [_jsx(Div, __assign({ textAlignCenter: true, mb: 24, mt: 5 }, { children: errorIcon })), _jsx(Div, __assign({ textAlignCenter: true, h5: true }, { children: t("unmatched_headers_modal.title") })), _jsx(Div, __assign({ w: 448, mt: 12, textAlignCenter: true, body1: true }, { children: unmatchedHeadersCount === 1
25
+ ? t("unmatched_headers_modal.description_singular", {
26
+ count: unmatchedHeadersCount,
27
+ })
28
+ : t("unmatched_headers_modal.description_plural", {
29
+ count: unmatchedHeadersCount,
30
+ }) })), _jsxs(Div, __assign({ dflex: true, centered: true, mt: 40 }, { children: [_jsx(Button, __assign({ variant: "secondary", onClick: function () { return onCloseUnmatchedHeadersModal(); }, w: 160, mr: 16 }, { children: t("unmatched_headers_modal.assign_headers") })), _jsx(Button, __assign({ variant: "primary", onClick: skipStep }, { children: t("unmatched_headers_modal.skip") }))] }))] })) })));
23
31
  };
@@ -1,6 +1,6 @@
1
1
  import { TemplateHeader } from "../../../types";
2
2
  import { EnumFieldValueMatchings, UploadedDataEnumFieldValues } from "../../contexts/ImporterContextProvider";
3
- declare type GetEnumFieldValueMatchingsInitialValueArgs = {
3
+ type GetEnumFieldValueMatchingsInitialValueArgs = {
4
4
  uploadedDataEnumFieldValues: UploadedDataEnumFieldValues;
5
5
  templateHeaders: TemplateHeader[];
6
6
  };
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  export declare const submitIcon: JSX.Element;
3
2
  export declare const errorIcon: JSX.Element;
@@ -1,5 +1,4 @@
1
- /// <reference types="react" />
2
- declare type StepperProps = {
1
+ type StepperProps = {
3
2
  stepLabels: string[];
4
3
  logoURL?: string;
5
4
  };
@@ -26,15 +26,19 @@ import { getEnumFieldValueMatchingsInitialValue } from "./common/getEnumFieldVal
26
26
  import { Step } from "./Step";
27
27
  import { StepperSubmitModal } from "./StepperSubmitModal";
28
28
  import { UnmatchedHeadersModal } from "./UnmatchedHeadersModal";
29
+ import { ConfirmCloseModal } from "./ConfirmCloseModal";
30
+ import { useTranslation } from "react-i18next";
29
31
  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; });
30
32
  var Logo = styled.img(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n max-height: 70px;\n max-width: 300px;\n position: absolute;\n left: 41px;\n"], ["\n max-height: 70px;\n max-width: 300px;\n position: absolute;\n left: 41px;\n"])));
31
33
  var CloseIcon = styled(Div)(function () { return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: absolute;\n right: 41px;\n "], ["\n position: absolute;\n right: 41px;\n "]))); });
32
34
  export var Stepper = function (_a) {
33
35
  var stepLabels = _a.stepLabels, logoURL = _a.logoURL;
34
36
  var _b = useState(false), isUnmatchedHeadersModalOpen = _b[0], setIsUnmatchedHeadersModalOpen = _b[1];
37
+ var t = useTranslation("general").t;
35
38
  var _c = useState(false), isSubmitModalOpen = _c[0], setIsSubmitModalOpen = _c[1];
36
- var _d = useReviewContext(), appResponse = _d.appResponse, isSubmitDisabled = _d.isSubmitDisabled, onSubmit = _d.onSubmit;
37
- var _e = useImporterContext(), currentStepIndex = _e.currentStepIndex, templateHeaderMatchings = _e.templateHeaderMatchings, matcherSubstep = _e.matcherSubstep, templateHeaders = _e.templateHeaders, uploadedDataEnumFieldValues = _e.uploadedDataEnumFieldValues, setEnumFieldValueMatchings = _e.setEnumFieldValueMatchings, setMatcherSubstep = _e.setMatcherSubstep, setCurrentStepIndex = _e.setCurrentStepIndex, onClose = _e.onClose;
39
+ var _d = useState(false), isConfirmCloseModalOpen = _d[0], setIsConfirmCloseModalOpen = _d[1];
40
+ 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;
38
42
  var templateHeaderLabels = Object.keys(templateHeaderMatchings || []);
39
43
  var unmatchedHeadersCount = templateHeaderLabels.filter(function (templateHeaderLabel) { return !templateHeaderMatchings[templateHeaderLabel]; }).length;
40
44
  var isLastSubMatchStep = matcherSubstep === 1;
@@ -88,10 +92,13 @@ export var Stepper = function (_a) {
88
92
  var isCompleted = index < currentStepIndex;
89
93
  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));
90
94
  }) })));
91
- var leftButtonUI = (_jsx(Div, __assign({ w: 100 }, { children: currentStepIndex > 0 && !appResponse && (_jsx(Button, __assign({ variant: "secondary", onClick: goBack }, { children: "Go back" }))) })));
92
- var rightButtonUI = (_jsxs(Div, __assign({ w: 100 }, { children: [isMatchStep && (_jsx(Button, __assign({ variant: "primary", onClick: continueToNextStep }, { children: "Continue" }))), isReviewStep && (_jsx(Button, __assign({ variant: "primary", isDisabled: isSubmitDisabled, onClick: function () { return setIsSubmitModalOpen(true); } }, { children: "Submit" })))] })));
93
- 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: onClose }, { children: closeIconCondensed }))] })), _jsx(UnmatchedHeadersModal, { isUnmatchedHeadersModalOpen: isUnmatchedHeadersModalOpen, unmatchedHeadersCount: unmatchedHeadersCount, onSetStep: function () { return setStep(); }, onCloseUnmatchedHeadersModal: function () {
95
+ var leftButtonUI = (_jsx(Div, { children: currentStepIndex > 0 && !appResponse && (_jsx(Button, __assign({ variant: "secondary", onClick: goBack }, { children: t("stepper.go_back") }))) }));
96
+ var rightButtonUI = (_jsxs(Div, __assign({ w: 100 }, { children: [isMatchStep && (_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") })))] })));
97
+ var handleOnClose = function () {
98
+ setIsConfirmCloseModalOpen(true);
99
+ };
100
+ 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 () {
94
101
  return setIsUnmatchedHeadersModalOpen(false);
95
- } }), _jsx(StepperSubmitModal, { isSubmitModalOpen: isSubmitModalOpen, onCloseModal: function () { return setIsSubmitModalOpen(false); }, onSubmit: onSubmit })] }));
102
+ } }), _jsx(StepperSubmitModal, { isSubmitModalOpen: isSubmitModalOpen, onCloseModal: function () { return setIsSubmitModalOpen(false); }, onSubmit: onSubmit }), _jsx(ConfirmCloseModal, { isOpen: isConfirmCloseModalOpen, onClose: function () { return setIsConfirmCloseModalOpen(false); }, onCloseImporter: onClose })] }));
96
103
  };
97
104
  var templateObject_1, templateObject_2, templateObject_3;
@@ -1,2 +1 @@
1
- /// <reference types="react" />
2
1
  export declare const TrialModeBanner: () => JSX.Element;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  declare const ImporterDropzone: () => JSX.Element;
3
2
  export { ImporterDropzone };
@@ -16,7 +16,7 @@ var __assign = (this && this.__assign) || function () {
16
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
17
  import { useDropzone } from "react-dropzone";
18
18
  import styled, { css } from "styled-components";
19
- import XLSX from "xlsx";
19
+ import * as XLSX from "xlsx";
20
20
  import { useUploaderContext } from "../UploaderContextProvider";
21
21
  import { useImporterContext } from "../../contexts/ImporterContextProvider";
22
22
  import { Div } from "../../../styled/utils";
@@ -24,19 +24,19 @@ import { theme } from "../../../styled/theme";
24
24
  import { addToast } from "../../../common/Toast";
25
25
  import { Button } from "../../../common/buttons";
26
26
  import { DragAndDropSvg, UploadIndicatorSvg } from "./backgrounds";
27
+ import { useTranslation } from "react-i18next";
27
28
  var DragAndDropCard = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n border-radius: 8px;\n margin-right: ", ";\n width: 832px;\n height: 530px;\n display: flex;\n background: ", ";\n border: 1px dashed ", ";\n ", "\n"], ["\n border-radius: 8px;\n margin-right: ", ";\n width: 832px;\n height: 530px;\n display: flex;\n background: ", ";\n border: 1px dashed ", ";\n ", "\n"])), function (props) { return (props.isDragActive ? "-10px" : "revert"); }, theme.colors.white, theme.colors.red50, function (props) {
28
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; });
29
30
  });
30
- var UploadingBg = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background-image: url(", ");\n background-position: 100% 100%;\n background-size: cover;\n max-width: 40px;\n min-width: 40px;\n max-height: 40px;\n min-height: 40px;\n height: 2.9vw;\n width: 2.9vw;\n position: relative;\n"], ["\n background-image: url(", ");\n background-position: 100% 100%;\n background-size: cover;\n max-width: 40px;\n min-width: 40px;\n max-height: 40px;\n min-height: 40px;\n height: 2.9vw;\n width: 2.9vw;\n position: relative;\n"])), function (props) { return props.src; });
31
- var DragAndDropBg = styled(Div)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n background-image: url(", ");\n background-position: 100% 100%;\n background-size: cover;\n max-width: 118px;\n min-width: 118px;\n max-height: 68px;\n min-height: 68px;\n height: 5vw;\n width: 8.2vw;\n position: relative;\n"], ["\n background-image: url(", ");\n background-position: 100% 100%;\n background-size: cover;\n max-width: 118px;\n min-width: 118px;\n max-height: 68px;\n min-height: 68px;\n height: 5vw;\n width: 8.2vw;\n position: relative;\n"])), function (props) { return props.src; });
32
31
  var DropzoneUploadingContainer = styled(Div)(function (_a) {
33
32
  var _b = _a.theme, colors = _b.colors, c = _b.css;
34
- return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n position: absolute;\n height: 100%;\n width: 100%;\n background: ", ";\n border: 1px solid ", ";\n "], ["\n position: absolute;\n height: 100%;\n width: 100%;\n background: ", ";\n border: 1px solid ", ";\n "])), theme.colors.blue100, theme.colors.blue500);
33
+ return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: absolute;\n height: 100%;\n width: 100%;\n background: ", ";\n border: 1px solid ", ";\n "], ["\n position: absolute;\n height: 100%;\n width: 100%;\n background: ", ";\n border: 1px solid ", ";\n "])), theme.colors.blue100, theme.colors.blue500);
35
34
  });
36
35
  var dropzoneUploadingUI = (_jsx(DropzoneUploadingContainer, __assign({ centered: true }, { children: _jsxs(Div, { children: [_jsx(Div, __assign({ centered: true, mb: 12 }, { children: UploadIndicatorSvg })), _jsx(Div, __assign({ h5: true }, { children: " Drop your file here to upload!" }))] }) })));
37
36
  var DragAndDropComponent = function (_a) {
38
37
  var openUploadFileDialog = _a.openUploadFileDialog;
39
- return (_jsxs(Div, __assign({ centered: true, flexColumn: true }, { children: [_jsx(Div, __assign({ mb: 12 }, { children: DragAndDropSvg })), _jsx(Div, __assign({ h4: true }, { children: "Drag & drop your file here" })), _jsx(Div, __assign({ body1: true, textAlignCenter: true, m: 20 }, { children: "Or" })), _jsx(Button, __assign({ variant: "secondary", w: 133, isSmall: true, onClick: openUploadFileDialog }, { children: "Browse Files" }))] })));
38
+ var t = useTranslation("upload").t;
39
+ return (_jsxs(Div, __assign({ centered: true, flexColumn: true }, { children: [_jsx(Div, __assign({ mb: 12 }, { children: DragAndDropSvg })), _jsx(Div, __assign({ h4: true }, { children: t("dropzone.title") })), _jsx(Div, __assign({ body1: true, textAlignCenter: true, m: 20 }, { children: t("dropzone.description") })), _jsx(Button, __assign({ variant: "secondary", w: "fit-content", p: 12, isSmall: true, onClick: openUploadFileDialog }, { children: t("dropzone.button") }))] })));
40
40
  };
41
41
  var ImporterDropzone = function () {
42
42
  var _a = useUploaderContext(), setIsUploading = _a.setIsUploading, setFileName = _a.setFileName;
@@ -63,11 +63,12 @@ var ImporterDropzone = function () {
63
63
  var getDataFromFile = function (fileResults) {
64
64
  var workBook = XLSX.read(fileResults, {
65
65
  type: "array",
66
+ codepage: 65001,
66
67
  raw: true,
67
68
  });
68
69
  var workBookName = workBook.SheetNames[0];
69
70
  var sheet = workBook.Sheets[workBookName];
70
- return XLSX.utils.sheet_to_json(sheet, { header: 1 });
71
+ return XLSX.utils.sheet_to_json(sheet, { header: 1, raw: false });
71
72
  };
72
73
  var fileData = getDataFromFile(results);
73
74
  var headersCount = fileData[0].length;
@@ -98,11 +99,11 @@ var ImporterDropzone = function () {
98
99
  onDropRejected: onDropRejected,
99
100
  noClick: true,
100
101
  noKeyboard: true,
101
- accept: ".csv,.tsv, .xls, .xlsx",
102
+ accept: ".csv, .tsv, .xls, .xlsx",
102
103
  maxFiles: 1,
103
104
  maxSize: 10000000,
104
105
  }), getRootProps = _b.getRootProps, getInputProps = _b.getInputProps, open = _b.open, isDragActive = _b.isDragActive;
105
- return (_jsxs(DragAndDropCard, __assign({ centered: true, pRelative: true }, getRootProps(), { children: [_jsx("input", __assign({}, getInputProps())), isDragActive && dropzoneUploadingUI, _jsx(DragAndDropComponent, { openUploadFileDialog: open })] })));
106
+ return (_jsxs(DragAndDropCard, __assign({ isDragActive: isDragActive, centered: true, pRelative: true }, getRootProps(), { children: [_jsx("input", __assign({}, getInputProps())), isDragActive && dropzoneUploadingUI, _jsx(DragAndDropComponent, { openUploadFileDialog: open })] })));
106
107
  };
107
108
  export { ImporterDropzone };
108
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
109
+ var templateObject_1, templateObject_2, templateObject_3;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  export declare const DragAndDropSvg: JSX.Element;
3
2
  export declare const UploadIndicatorSvg: JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare const ErrorCard: () => JSX.Element;
3
2
  declare const DragAndDropImporter: () => JSX.Element;
4
3
  export { DragAndDropImporter };
@@ -33,11 +33,13 @@ import { closeIconWithCircle, errorIcon, fileExtensionIcon, } from "../../common
33
33
  import { useImporterContext } from "../../contexts/ImporterContextProvider";
34
34
  import { useUploaderContext } from "../UploaderContextProvider";
35
35
  import { ImporterDropzone } from "./ImporterDropzone";
36
+ import { useTranslation } from "react-i18next";
36
37
  var HeaderCardWrapper = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n border: 1px solid ", ";\n border-radius: 8px;\n padding: 24px;\n box-sizing: border-box;\n width: 256px;\n overflow-y: auto;\n ", ";\n background: ", ";\n max-height: 530px;\n"], ["\n border: 1px solid ", ";\n border-radius: 8px;\n padding: 24px;\n box-sizing: border-box;\n width: 256px;\n overflow-y: auto;\n ", ";\n background: ", ";\n max-height: 530px;\n"])), theme.colors.gray200, function (p) { return p.theme.css.scrollbarDark; }, function (p) { return p.theme.colors.white; });
37
38
  var ErrorCardContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n border-radius: 8px;\n width: 1120px;\n height: 550px;\n display: flex;\n flex-direction: column;\n align-items: center;\n background: ", ";\n border: 1px dashed ", ";\n justify-content: center;\n"], ["\n border-radius: 8px;\n width: 1120px;\n height: 550px;\n display: flex;\n flex-direction: column;\n align-items: center;\n background: ", ";\n border: 1px dashed ", ";\n justify-content: center;\n"])), theme.colors.blue100, theme.colors.blue500);
38
39
  export var ErrorCard = function () {
39
40
  var templateError = useImporterContext().templateError;
40
- return (_jsxs(ErrorCardContainer, { children: [_jsx(Div, __assign({ mb: 28 }, { children: errorIcon })), _jsx(Div, __assign({ h3: true, mb: 16 }, { children: "Something\u2019s wrong" })), _jsx(Div, __assign({ body1: true }, { children: templateError }))] }));
41
+ 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 }))] }));
41
43
  };
42
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); });
43
45
  var HeadersList = function (_a) {
@@ -55,15 +57,17 @@ var HeaderCard = function (_a) {
55
57
  var optionalHeaders = templateHeaders
56
58
  .filter(function (h) { return !h.required; })
57
59
  .map(function (h) { return h.label; });
58
- return (_jsx(Div, { children: _jsxs(HeaderCardWrapper, __assign({}, props, { children: [_jsx(Div, __assign({ body3: true, mb: 24 }, { children: "Make sure your document contains data similar to this:" })), requiredHeaders.length > 0 && (_jsx(HeadersList, { title: "Required Headers", headers: requiredHeaders })), optionalHeaders.length > 0 && (_jsx(HeadersList, { title: "Optional Headers", headers: optionalHeaders, mt: 30 }))] })) }));
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 }))] })) }));
59
62
  };
60
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; });
61
64
  var LoadingCard = function () {
62
65
  var fileName = useUploaderContext().fileName;
63
66
  var resetImport = useImporterContext().resetImport;
67
+ var t = useTranslation("upload").t;
64
68
  var fileExtension = fileName && fileName.slice(fileName.lastIndexOf("."));
65
69
  var fileExtensionUI = (_jsxs(Div, { children: [fileExtensionIcon, _jsx(Div, __assign({ c: colors.gray900, helperText: true, mt: -26, ml: 7 }, { children: fileExtension }))] }));
66
- 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: "Uploading..." }))] })), _jsx(Div, __assign({ clickable: true, onClick: resetImport }, { children: closeIconWithCircle }))] })));
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 }))] })));
67
71
  };
68
72
  var ImporterSection = function () {
69
73
  var _a = useImporterContext(), templateHeaders = _a.templateHeaders, templateError = _a.templateError;
@@ -71,7 +75,8 @@ var ImporterSection = function () {
71
75
  };
72
76
  var DragAndDropImporter = function () {
73
77
  var isUploading = useUploaderContext().isUploading;
74
- var headerUI = (_jsxs(Div, __assign({ textAlignCenter: true }, { children: [_jsx(Div, __assign({ h2: true, mb: 16, mt: 64 }, { children: "Upload a File to Import your Data" })), _jsx(Div, __assign({ body1: true, mb: 24, textAlignCenter: true }, { children: "Upload any .csv, .tsv, .xls, .xlsx spreadsheet file with any set of columns as long as it has one record per row." }))] })));
78
+ var t = useTranslation("upload").t;
79
+ var headerUI = (_jsxs(_Fragment, { children: [_jsx(Div, __assign({ textAlignCenter: true, dflex: true, centered: true }, { children: _jsx(Div, __assign({ h2: true, mb: 16, mt: 64 }, { children: t("title") })) })), _jsx(Div, __assign({ body1: true, mb: 24, textAlignCenter: true }, { children: t("description") }))] }));
75
80
  return (_jsxs(Div, __assign({ flexColumn: true, centered: true }, { children: [headerUI, isUploading ? (_jsx(Div, __assign({ mt: 40 }, { children: _jsx(LoadingCard, {}) }))) : (_jsx(ImporterSection, {}))] })));
76
81
  };
77
82
  export { DragAndDropImporter };
@@ -1,2 +1 @@
1
- /// <reference types="react" />
2
1
  export declare const HeaderButtons: () => JSX.Element;
@@ -18,12 +18,14 @@ 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
+ import { useTranslation } from "react-i18next";
21
22
  var HeaderButtonsWrapper = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n > div {\n margin-left: 8px;\n margin-right: 8px;\n }\n"], ["\n > div {\n margin-left: 8px;\n margin-right: 8px;\n }\n"])));
22
23
  export var HeaderButtons = function () {
24
+ var t = useTranslation("upload").t;
23
25
  var _a = useImporterContext(), setCurrentStepIndex = _a.setCurrentStepIndex, resetImport = _a.resetImport;
24
26
  var onClick = function () {
25
27
  setCurrentStepIndex(1);
26
28
  };
27
- return (_jsxs(HeaderButtonsWrapper, __assign({ dflex: true, spaceBetween: true, mb: 12 }, { children: [_jsx(Button, __assign({ w: 180, isSmall: true, variant: "secondary", onClick: resetImport }, { children: "No, Re-upload file" })), _jsx(Button, __assign({ w: 142, isSmall: true, onClick: onClick }, { children: "Yes, continue" }))] })));
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") }))] })));
28
30
  };
29
31
  var templateObject_1;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  declare const HeadersPreview: () => JSX.Element;
3
2
  export default HeadersPreview;
@@ -15,8 +15,15 @@ import Spreadsheet from "../common/Spreadsheet";
15
15
  import { getSpreadsheetRowWidth } from "../common/utils";
16
16
  import { useReviewContext } from "../Review/ReviewContextProvider";
17
17
  import { HeaderButtons } from "./HeaderButtons";
18
+ import { useImporterContext } from "../contexts/ImporterContextProvider";
19
+ import { useTranslation } from "react-i18next";
18
20
  var HeadersPreview = function () {
19
21
  var _a = useReviewContext(), fields = _a.previewFields, initialDataSet = _a.previewInitialDataSet;
20
- return (_jsxs(Div, __assign({ flexColumn: true, centered: true, pt: 40 }, { children: [_jsx(Div, __assign({ h2: true, mb: 16 }, { children: "Verify Your Column Headers" })), _jsx(Div, __assign({ body1: true, mb: 24, textAlignCenter: true }, { children: "File must contain column headers to proceed." })), _jsx(HeaderButtons, {}), _jsx(Div, __assign({ w100: true, centered: true, mb: 36 }, { children: initialDataSet && (_jsx(Spreadsheet, { rowWidth: getSpreadsheetRowWidth(fields, 6), isReadOnly: true, initialDataSet: initialDataSet, fields: fields, highlightFirstRow: true })) }))] })));
22
+ var t = useTranslation("upload").t;
23
+ var _b = useImporterContext(), selectedRows = _b.selectedRows, setSelectedRows = _b.setSelectedRows;
24
+ return (_jsxs(Div, __assign({ flexColumn: true, centered: true, pt: 40 }, { children: [_jsx(Div, __assign({ h2: true, mb: 16 }, { children: t("headers_preview.title") })), _jsx(Div, __assign({ body1: true, mb: 24, textAlignCenter: true }, { children: t("headers_preview.description") })), _jsx(HeaderButtons, {}), _jsx(Div, __assign({ w100: true, centered: true, mb: 36 }, { children: initialDataSet && (_jsx(Spreadsheet, { rowWidth: getSpreadsheetRowWidth(fields, 6), isReadOnly: true, initialDataSet: initialDataSet, fields: fields, highlightFirstRow: true, options: {
25
+ showCheckboxColumn: true,
26
+ firstRowIsHeader: true,
27
+ }, selectedRows: selectedRows, setSelectedRows: setSelectedRows })) }))] })));
21
28
  };
22
29
  export default HeadersPreview;
@@ -1,11 +1,11 @@
1
1
  import React from "react";
2
- declare type State = {
2
+ type State = {
3
3
  isUploading: boolean;
4
4
  setIsUploading: React.Dispatch<boolean>;
5
5
  fileName: string;
6
6
  setFileName: React.Dispatch<string>;
7
7
  };
8
- declare type UploaderContextProviderProps = {
8
+ type UploaderContextProviderProps = {
9
9
  children: JSX.Element;
10
10
  };
11
11
  export declare const UploaderContextProvider: ({ children, }: UploaderContextProviderProps) => JSX.Element;
@@ -1,2 +1 @@
1
- /// <reference types="react" />
2
1
  export declare const AppLoading: () => JSX.Element;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  declare const Footer: () => JSX.Element;
3
2
  export { Footer };
@@ -1,2 +1 @@
1
- /// <reference types="react" />
2
1
  export declare const ImporterFonts: () => JSX.Element;
@@ -2,21 +2,24 @@ import React from "react";
2
2
  import { SpreadsheetOptions } from "../../..";
3
3
  import { Field, OnValidateRecord, Record, RecordDataSet } from "../../../types";
4
4
  import { ValidationState } from "./hooks";
5
- export declare type OnDataSetChanged = (dataSet: RecordDataSet) => void;
6
- export declare type OnValidationStateChanged = (state: ValidationState) => void;
7
- declare type State = {
5
+ export type OnDataSetChanged = (dataSet: RecordDataSet) => void;
6
+ export type OnValidationStateChanged = (state: ValidationState) => void;
7
+ type State = {
8
8
  rowWidth?: number;
9
9
  data: Record[];
10
10
  fields: Field[];
11
11
  isLoading: boolean;
12
12
  isReadOnly?: boolean;
13
13
  highlightFirstRow: boolean;
14
+ options: SpreadsheetOptions;
14
15
  sortByFieldErrors: string;
15
16
  updateRecord: (record: Record) => void;
16
17
  setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;
17
18
  setSortByFieldErrors: React.Dispatch<React.SetStateAction<string>>;
19
+ selectedRows: number[];
20
+ setSelectedRows: React.Dispatch<React.SetStateAction<number[]>>;
18
21
  } & ValidationState;
19
- declare type Props = {
22
+ type Props = {
20
23
  initialDataSet: RecordDataSet;
21
24
  rowWidth?: number;
22
25
  isReadOnly?: boolean;
@@ -27,7 +30,9 @@ declare type Props = {
27
30
  onValidationStateChanged?: OnValidationStateChanged;
28
31
  onValidateRecord?: OnValidateRecord;
29
32
  onDataSetChanged?: OnDataSetChanged;
33
+ selectedRows: number[];
34
+ setSelectedRows: React.Dispatch<React.SetStateAction<number[]>>;
30
35
  };
31
- export declare const SpreadsheetContextProvider: ({ initialDataSet, rowWidth, fields, options, isReadOnly, highlightFirstRow, children, onValidateRecord, onDataSetChanged, onValidationStateChanged, }: Props) => JSX.Element;
36
+ export declare const SpreadsheetContextProvider: ({ initialDataSet, rowWidth, fields, options, isReadOnly, highlightFirstRow, children, onValidateRecord, onDataSetChanged, onValidationStateChanged, selectedRows, setSelectedRows, }: Props) => JSX.Element;
32
37
  export declare const useSpreadsheetContext: () => State;
33
38
  export {};
@@ -26,7 +26,7 @@ import { createContext, useCallback, useContext, useEffect, useMemo, useRef, use
26
26
  import { useValidationState } from "./hooks";
27
27
  var SpreadsheetContext = createContext({});
28
28
  export var SpreadsheetContextProvider = function (_a) {
29
- var initialDataSet = _a.initialDataSet, _b = _a.rowWidth, rowWidth = _b === void 0 ? 1 : _b, fields = _a.fields, options = _a.options, isReadOnly = _a.isReadOnly, highlightFirstRow = _a.highlightFirstRow, children = _a.children, onValidateRecord = _a.onValidateRecord, onDataSetChanged = _a.onDataSetChanged, onValidationStateChanged = _a.onValidationStateChanged;
29
+ var initialDataSet = _a.initialDataSet, _b = _a.rowWidth, rowWidth = _b === void 0 ? 1 : _b, fields = _a.fields, options = _a.options, isReadOnly = _a.isReadOnly, highlightFirstRow = _a.highlightFirstRow, children = _a.children, onValidateRecord = _a.onValidateRecord, onDataSetChanged = _a.onDataSetChanged, onValidationStateChanged = _a.onValidationStateChanged, selectedRows = _a.selectedRows, setSelectedRows = _a.setSelectedRows;
30
30
  var _c = useState(initialDataSet), dataSet = _c[0], setDataSet = _c[1];
31
31
  var _d = useState(false), isLoading = _d[0], setIsLoading = _d[1];
32
32
  var _e = useState(null), sortByFieldErrors = _e[0], setSortByFieldErrors = _e[1];
@@ -70,7 +70,7 @@ export var SpreadsheetContextProvider = function (_a) {
70
70
  sortByCurrentErrorsRef.current = __assign({}, errorsRef.current);
71
71
  setSortByFieldErrors(value);
72
72
  }, []);
73
- var value = __assign(__assign({ data: data, fields: fields, isLoading: isLoading }, validationState), { isReadOnly: isReadOnly, rowWidth: rowWidth, sortByFieldErrors: sortByFieldErrors, highlightFirstRow: highlightFirstRow, setIsLoading: setIsLoading, setSortByFieldErrors: handleSortByFieldErrors, onValidateRecord: onValidateRecord, updateRecord: updateRecordAndRevalidate });
73
+ var value = __assign(__assign({ data: data, fields: fields, isLoading: isLoading }, validationState), { isReadOnly: isReadOnly, rowWidth: rowWidth, sortByFieldErrors: sortByFieldErrors, highlightFirstRow: highlightFirstRow, options: options, setIsLoading: setIsLoading, setSortByFieldErrors: handleSortByFieldErrors, onValidateRecord: onValidateRecord, updateRecord: updateRecordAndRevalidate, selectedRows: selectedRows, setSelectedRows: setSelectedRows });
74
74
  return (_jsx(SpreadsheetContext.Provider, __assign({ value: value }, { children: children })));
75
75
  };
76
76
  export var useSpreadsheetContext = function () { return useContext(SpreadsheetContext); };
@@ -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 = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
14
+ var emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
15
15
  return emailRegex.test(value);
16
16
  };
17
17
  export var isUrl = function (value) {
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { Field } from "../../../../types";
3
- export declare type FieldHeaderProps = {
3
+ export type FieldHeaderProps = {
4
4
  field: Field;
5
5
  sortByFieldErrors: (name: string) => void;
6
6
  };
@@ -32,11 +32,13 @@ import { FieldHeader } from "./FieldHeader";
32
32
  import GlobalStyle from "./GlobalStyle";
33
33
  import { inputTypes } from "./inputs";
34
34
  import { SpreadsheetRowNumbers } from "./SpreadsheetRowNumbers";
35
+ import { SpreadsheetRowCheckboxes } from "./SpreadsheetRowCheckboxes";
35
36
  import ValidationProgress from "./ValidationProgress";
36
37
  var getItemKey = function (record) { return record._meta.id; };
37
38
  var SpreadsheetData = function () {
38
- 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;
39
+ 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;
39
40
  var rowNumbersGridRef = useRef();
41
+ var rowCheckboxesGridRef = useRef();
40
42
  var sortByErrors = useCallback(function (field) {
41
43
  return setSortByFieldErrors(function (sortByFieldErrors) {
42
44
  return sortByFieldErrors === field ? null : field;
@@ -57,6 +59,10 @@ var SpreadsheetData = function () {
57
59
  var grid = rowNumbersGridRef.current;
58
60
  grid.scrollTo({ scrollTop: scrollTop });
59
61
  }
62
+ if (rowCheckboxesGridRef.current) {
63
+ var grid = rowCheckboxesGridRef.current;
64
+ grid.scrollTo({ scrollTop: scrollTop });
65
+ }
60
66
  }, []);
61
67
  var dataLength = data === null || data === void 0 ? void 0 : data.length;
62
68
  var spreadsheetHeight = useMemo(function () {
@@ -69,6 +75,6 @@ var SpreadsheetData = function () {
69
75
  });
70
76
  }, [dataLength]);
71
77
  var showValidationProgress = !isReadOnly && validationPercentage < 100;
72
- return (_jsxs(Div, { children: [_jsx(GlobalStyle, {}), _jsx(Div, __assign({ h: 32 }, { children: showValidationProgress && (_jsx(ValidationProgress, { totalErrors: totalErrors, validationPercentage: validationPercentage })) })), _jsxs(S.SpreadSheetWrapper, __assign({ h: spreadsheetHeight, dflex: true, w: 1400 }, { children: [_jsx(SpreadsheetRowNumbers, { gridRef: rowNumbersGridRef, spreadsheetHasXScroll: rowWidth > 1, height: spreadsheetHeight }), _jsx(S.TableView, { tableHeadersHeight: spreadsheetHeaderHeightPx, highlightFirstRow: isReadOnly, rowHeight: spreadsheetRowHeightPx, h: spreadsheetHeight, rowWidth: rowWidth, data: data, columns: columns, isLoading: isLoading, onTableScroll: onTableScroll, getItemKey: getItemKey })] }))] }));
78
+ return (_jsxs(S.SpreadSheetData, { children: [_jsx(GlobalStyle, {}), _jsx(Div, __assign({ h: 32 }, { children: showValidationProgress && (_jsx(ValidationProgress, { totalErrors: totalErrors, validationPercentage: validationPercentage })) })), _jsxs(S.SpreadSheetWrapper, __assign({ h: spreadsheetHeight, dflex: true }, { children: [options.showCheckboxColumn && (_jsx(SpreadsheetRowCheckboxes, { gridRef: rowCheckboxesGridRef, spreadsheetHasXScroll: rowWidth > 1, height: spreadsheetHeight, firstRowIsHeader: options.firstRowIsHeader })), _jsx(SpreadsheetRowNumbers, { gridRef: rowNumbersGridRef, spreadsheetHasXScroll: rowWidth > 1, height: spreadsheetHeight }), _jsx(S.TableView, { tableHeadersHeight: spreadsheetHeaderHeightPx, highlightFirstRow: isReadOnly, rowHeight: spreadsheetRowHeightPx, h: spreadsheetHeight, rowWidth: rowWidth, data: data, columns: columns, isLoading: isLoading, onTableScroll: onTableScroll, getItemKey: getItemKey })] }))] }));
73
79
  };
74
80
  export default React.memo(SpreadsheetData, areEqual);
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { DivCSSProps } from "../../../../styled/utils";
3
+ type Props = {
4
+ height?: number;
5
+ spreadsheetHasXScroll?: boolean;
6
+ gridRef: React.MutableRefObject<any>;
7
+ firstRowIsHeader?: boolean;
8
+ } & DivCSSProps;
9
+ export declare const SpreadsheetRowCheckboxes: ({ height, spreadsheetHasXScroll, gridRef, firstRowIsHeader, ...props }: Props) => JSX.Element;
10
+ export {};