fuse-importer 0.0.8-testing → 0.1.1-testing

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/lib/esm/Importer/ImporterWithContext.js +63 -0
  2. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +68 -0
  3. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/tableColumns.js +58 -0
  4. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcherContext.js +21 -0
  5. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +23 -0
  6. package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +61 -0
  7. package/lib/esm/Importer/Matcher/HeaderMatcher/tableColumns.js +55 -0
  8. package/lib/esm/Importer/Matcher/common/icons/index.js +14 -0
  9. package/lib/esm/Importer/Matcher/common/index.js +39 -0
  10. package/lib/esm/Importer/Matcher/common/types.js +9 -0
  11. package/lib/esm/Importer/Matcher/index.js +22 -0
  12. package/lib/esm/Importer/PreviewFirstTime.js +81 -0
  13. package/lib/esm/Importer/PreviewModeBanner.js +19 -0
  14. package/lib/esm/Importer/Review/AppResponseModal.js +35 -0
  15. package/lib/esm/Importer/Review/ReviewContextProvider.js +318 -0
  16. package/lib/esm/Importer/Review/ReviewWithContext.js +33 -0
  17. package/lib/esm/Importer/Review/index.js +4 -0
  18. package/lib/esm/Importer/Stepper/ConfirmCloseModal.js +24 -0
  19. package/lib/esm/Importer/Stepper/Step.js +19 -0
  20. package/lib/esm/Importer/Stepper/StepIndex.js +27 -0
  21. package/lib/esm/Importer/Stepper/StepperSubmitModal.js +24 -0
  22. package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +31 -0
  23. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +33 -0
  24. package/lib/esm/Importer/Stepper/common/icons.js +18 -0
  25. package/lib/esm/Importer/Stepper/index.js +118 -0
  26. package/lib/esm/Importer/TrialModeBanner.js +22 -0
  27. package/lib/esm/Importer/Uploader/DragAndDropImporter/DragAndDropImporter.styles.js +11 -0
  28. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +123 -0
  29. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/ImporterSectionHeader.styles.js +11 -0
  30. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.js +44 -0
  31. package/lib/esm/Importer/Uploader/DragAndDropImporter/backgrounds.js +14 -0
  32. package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +45 -0
  33. package/lib/esm/Importer/Uploader/HeaderButtons.js +28 -0
  34. package/lib/esm/Importer/Uploader/HeadersPreview.js +44 -0
  35. package/lib/esm/Importer/Uploader/UploaderContextProvider.js +27 -0
  36. package/lib/esm/Importer/Uploader/index.js +13 -0
  37. package/lib/esm/Importer/common/AppLoading.js +24 -0
  38. package/lib/esm/Importer/common/Footer.js +17 -0
  39. package/lib/esm/Importer/common/FuseApi.js +48 -0
  40. package/lib/esm/Importer/common/GlobalStyle.js +7 -0
  41. package/lib/esm/Importer/common/ImporterFonts.js +5 -0
  42. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +56 -0
  43. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +176 -0
  44. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.js +45 -0
  45. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +14 -0
  46. package/lib/esm/Importer/common/Spreadsheet/common/index.js +63 -0
  47. package/lib/esm/Importer/common/Spreadsheet/common/types.js +5 -0
  48. package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.js +66 -0
  49. package/lib/esm/Importer/common/Spreadsheet/components/GlobalStyle.js +9 -0
  50. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +110 -0
  51. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +186 -0
  52. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.js +55 -0
  53. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +19 -0
  54. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.js +43 -0
  55. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +74 -0
  56. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.d.ts +2 -1
  57. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +114 -0
  58. package/lib/esm/Importer/common/Spreadsheet/components/fields/utils.d.ts +11 -0
  59. package/lib/esm/Importer/common/Spreadsheet/components/fields/utils.js +29 -0
  60. package/lib/esm/Importer/common/Spreadsheet/components/inputs/Boolean.js +18 -0
  61. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.js +14 -0
  62. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EnumInput.js +30 -0
  63. package/lib/esm/Importer/common/Spreadsheet/components/inputs/FloatInput.js +16 -0
  64. package/lib/esm/Importer/common/Spreadsheet/components/inputs/IntegerInput.js +16 -0
  65. package/lib/esm/Importer/common/Spreadsheet/components/inputs/StringInput.js +14 -0
  66. package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.d.ts +1 -0
  67. package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.js +20 -0
  68. package/lib/esm/Importer/common/Spreadsheet/hooks.js +245 -0
  69. package/lib/esm/Importer/common/Spreadsheet/index.js +119 -0
  70. package/lib/esm/Importer/common/Spreadsheet/styles.js +16 -0
  71. package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +47 -0
  72. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +236 -0
  73. package/lib/esm/Importer/common/Spreadsheet/validation/index.js +202 -0
  74. package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +181 -0
  75. package/lib/esm/Importer/common/icons/index.js +18 -0
  76. package/lib/esm/Importer/common/index.js +13 -0
  77. package/lib/esm/Importer/common/theme.js +19 -0
  78. package/lib/esm/Importer/common/utils.js +100 -0
  79. package/lib/esm/Importer/contexts/ImporterContextProvider.js +247 -0
  80. package/lib/esm/Importer/data/index.js +172 -0
  81. package/lib/esm/Importer/index.js +28 -0
  82. package/lib/esm/api/index.js +93 -0
  83. package/lib/esm/api/responseHandlers.js +49 -0
  84. package/lib/esm/common/AppLoadingContextProvider/AppLoadingUI.js +26 -0
  85. package/lib/esm/common/AppLoadingContextProvider/index.js +25 -0
  86. package/lib/esm/common/ConfirmationModal.js +19 -0
  87. package/lib/esm/common/Modal.js +31 -0
  88. package/lib/esm/common/Spinner.js +41 -0
  89. package/lib/esm/common/Table/Pagination/icons.js +42 -0
  90. package/lib/esm/common/Table/Pagination/index.js +32 -0
  91. package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +50 -0
  92. package/lib/esm/common/Table/TableActions/ExportData.js +23 -0
  93. package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +47 -0
  94. package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.styles.js +24 -0
  95. package/lib/esm/common/Table/TableActions/FilterByErrors/functions.js +35 -0
  96. package/lib/esm/common/Table/TableActions/FilterByErrors/index.js +1 -0
  97. package/lib/esm/common/Table/TableActions/RowFilters.js +42 -0
  98. package/lib/esm/common/Table/TableActions/SearchRows.js +72 -0
  99. package/lib/esm/common/Table/TableActions/TableActions.js +35 -0
  100. package/lib/esm/common/Table/TableActions/TableActions.styles.js +18 -0
  101. package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +83 -0
  102. package/lib/esm/common/Table/TableActions/common.js +1 -0
  103. package/lib/esm/common/Table/TableActions/hooks.js +41 -0
  104. package/lib/esm/common/Table/TableActions/icons.js +17 -0
  105. package/lib/esm/common/Table/TableActions/index.js +1 -0
  106. package/lib/esm/common/Table/TableDataProvider.js +127 -0
  107. package/lib/esm/common/Table/TableView/TableHeaders.js +69 -0
  108. package/lib/esm/common/Table/TableView/TableRows/TableRow.js +57 -0
  109. package/lib/esm/common/Table/TableView/TableRows/index.js +48 -0
  110. package/lib/esm/common/Table/TableView/common/index.js +37 -0
  111. package/lib/esm/common/Table/TableView/index.js +132 -0
  112. package/lib/esm/common/Table/TableView/types.js +1 -0
  113. package/lib/esm/common/Table/icons.js +15 -0
  114. package/lib/esm/common/Table/index.js +140 -0
  115. package/lib/esm/common/Table/useReorderRows.js +83 -0
  116. package/lib/esm/common/Toast.js +69 -0
  117. package/lib/esm/common/TooltipProvider.js +57 -0
  118. package/lib/esm/common/buttons.js +97 -0
  119. package/lib/esm/common/columnsTransformations.js +94 -0
  120. package/lib/esm/common/columnsValidations.d.ts +1 -27
  121. package/lib/esm/common/columnsValidations.js +401 -0
  122. package/lib/esm/common/datePatterns.d.ts +26 -0
  123. package/lib/esm/common/datePatterns.js +327 -0
  124. package/lib/esm/common/icons/index.js +30 -0
  125. package/lib/esm/common/index.d.ts +1 -0
  126. package/lib/esm/common/index.js +46 -0
  127. package/lib/esm/common/inputs/Autocomplete.js +110 -0
  128. package/lib/esm/common/inputs/Checkbox.js +53 -0
  129. package/lib/esm/common/inputs/SelectMenu.js +74 -0
  130. package/lib/esm/common/inputs/TextInput.js +89 -0
  131. package/lib/esm/common/inputs/index.js +5 -0
  132. package/lib/esm/common/inputs/tooltip.js +38 -0
  133. package/lib/esm/common/logo.js +13 -0
  134. package/lib/esm/hooks/index.d.ts +1 -0
  135. package/lib/esm/hooks/index.js +16 -0
  136. package/lib/esm/index.js +218 -0
  137. package/lib/esm/locales/de.js +126 -0
  138. package/lib/esm/locales/en.js +126 -0
  139. package/lib/esm/locales/es.js +126 -0
  140. package/lib/esm/locales/fr.js +126 -0
  141. package/lib/esm/locales/index.js +4 -0
  142. package/lib/esm/styled/fontsURL.js +27 -0
  143. package/lib/esm/styled/index.js +3 -0
  144. package/lib/esm/styled/theme/animations.js +9 -0
  145. package/lib/esm/styled/theme/colorPalette.js +109 -0
  146. package/lib/esm/styled/theme/debugCss.js +16 -0
  147. package/lib/esm/styled/theme/dimensionsCss.js +20 -0
  148. package/lib/esm/styled/theme/fontCss.js +17 -0
  149. package/lib/esm/styled/theme/globalCss.js +26 -0
  150. package/lib/esm/styled/theme/index.js +33 -0
  151. package/lib/esm/styled/theme/layoutCss.js +26 -0
  152. package/lib/esm/styled/theme/mediaQueries.js +4 -0
  153. package/lib/esm/styled/theme/positionCss.js +27 -0
  154. package/lib/esm/styled/theme/textCss.js +18 -0
  155. package/lib/esm/styled/theme/textStyles.js +27 -0
  156. package/lib/esm/styled/themeType.js +6 -0
  157. package/lib/esm/styled/utils.js +17 -0
  158. package/lib/esm/types.d.ts +7 -6
  159. package/lib/esm/types.js +65 -0
  160. package/lib/esm/utils/hooks/useWindowSize.js +23 -0
  161. package/lib/esm/utils/hooks.js +1 -0
  162. package/lib/esm/utils/index.d.ts +1 -0
  163. package/lib/esm/utils/index.js +41 -0
  164. package/lib/main.js +6 -6
  165. package/package.json +1 -1
@@ -0,0 +1,93 @@
1
+ import axios from "axios";
2
+ import { handleError, handleSuccess } from "./responseHandlers";
3
+ import Qs from "qs";
4
+ import { isString } from "../utils";
5
+ var api = axios.create({
6
+ timeout: 20000,
7
+ headers: {
8
+ Accept: "application/json",
9
+ "Content-Type": "application/json",
10
+ "X-Requested-With": "XmlHttpRequest",
11
+ },
12
+ });
13
+ var ls = typeof window !== "undefined" ? localStorage : null;
14
+ var ttlIsExpired = function (ttl) { return new Date().getTime() > parseInt(ttl); };
15
+ var getCacheKeys = function (config) {
16
+ var key = "".concat(config.method, ":").concat(config.url);
17
+ var ttlKey = "".concat(key, ":TTL");
18
+ return { key: key, ttlKey: ttlKey };
19
+ };
20
+ var getTTL = function (ttl) {
21
+ var currentTime = new Date().getTime();
22
+ if (ttl)
23
+ return currentTime + ttl;
24
+ var anHour = 1000 * 60 * 60;
25
+ return currentTime + anHour * 24;
26
+ };
27
+ var requestInterceptor = {
28
+ onFulFilled: function (_config) {
29
+ var _a, _b;
30
+ _config.paramsSerializer = function (params) {
31
+ return Qs.stringify(params, {
32
+ arrayFormat: config.arrayFormat ? config.arrayFormat : "brackets",
33
+ });
34
+ };
35
+ var authToken = (_a = _config.authToken) !== null && _a !== void 0 ? _a : (_b = JSON.parse(ls === null || ls === void 0 ? void 0 : ls.getItem("user"))) === null || _b === void 0 ? void 0 : _b.token;
36
+ var config = Object.assign(_config);
37
+ if (authToken)
38
+ config.headers.Authorization = "Bearer ".concat(authToken);
39
+ if (!config.toPublicApi)
40
+ config.url = "".concat(process.env.REACT_APP_API_BASE_URL || "").concat(config.url);
41
+ if (config.cache) {
42
+ var _c = getCacheKeys(config), key = _c.key, ttlKey = _c.ttlKey;
43
+ var ttl = ls === null || ls === void 0 ? void 0 : ls.getItem(ttlKey);
44
+ if (config.refresh || (ttl && ttlIsExpired(ttl))) {
45
+ ls === null || ls === void 0 ? void 0 : ls.removeItem(key);
46
+ ls === null || ls === void 0 ? void 0 : ls.removeItem(ttlKey);
47
+ }
48
+ var data = ls === null || ls === void 0 ? void 0 : ls.getItem(key);
49
+ if (data) {
50
+ return {
51
+ headers: {},
52
+ method: config.method,
53
+ url: "ls-cache:".concat(config.url),
54
+ cachedData: JSON.parse(data),
55
+ };
56
+ }
57
+ }
58
+ return config;
59
+ },
60
+ onRejected: function (err) {
61
+ return Promise.reject(err);
62
+ },
63
+ };
64
+ var responseInterceptor = {
65
+ onFulFilled: function (res) {
66
+ var _config = res.config;
67
+ var config = Object.assign(_config);
68
+ if (config.cache) {
69
+ var _a = getCacheKeys(config), key = _a.key, ttlKey = _a.ttlKey;
70
+ ls === null || ls === void 0 ? void 0 : ls.setItem(ttlKey, JSON.stringify(getTTL(config.ttl)));
71
+ ls === null || ls === void 0 ? void 0 : ls.setItem(key, JSON.stringify(res.data));
72
+ }
73
+ if (_config.successMsg && [200, 201].includes(res.status)) {
74
+ handleSuccess(isString(_config.successMsg)
75
+ ? _config.successMsg.toString()
76
+ : _config.successMsg(res.data));
77
+ }
78
+ if (config.withReq)
79
+ return res;
80
+ return res;
81
+ },
82
+ onRejected: function (err) {
83
+ var _a, _b, _c;
84
+ if ((_a = err === null || err === void 0 ? void 0 : err.config) === null || _a === void 0 ? void 0 : _a.cachedData) {
85
+ return Promise.resolve((_b = err === null || err === void 0 ? void 0 : err.config) === null || _b === void 0 ? void 0 : _b.cachedData);
86
+ }
87
+ handleError(err, (_c = err === null || err === void 0 ? void 0 : err.config) === null || _c === void 0 ? void 0 : _c.errorMsg);
88
+ return Promise.reject(err);
89
+ },
90
+ };
91
+ api.interceptors.request.use(requestInterceptor.onFulFilled, requestInterceptor.onRejected);
92
+ api.interceptors.response.use(responseInterceptor.onFulFilled, responseInterceptor.onRejected);
93
+ export { api };
@@ -0,0 +1,49 @@
1
+ import { addToast } from "../common/Toast";
2
+ import { isString } from "../utils";
3
+ var getErrorMessage = function (response) {
4
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
5
+ if ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.errors)
6
+ return (_b = response === null || response === void 0 ? void 0 : response.data) === null || _b === void 0 ? void 0 : _b.errors;
7
+ else if ((_c = response === null || response === void 0 ? void 0 : response.data) === null || _c === void 0 ? void 0 : _c.error_message)
8
+ return (_d = response === null || response === void 0 ? void 0 : response.data) === null || _d === void 0 ? void 0 : _d.error_message;
9
+ else if ((_e = response === null || response === void 0 ? void 0 : response.data) === null || _e === void 0 ? void 0 : _e.message)
10
+ return (_f = response === null || response === void 0 ? void 0 : response.data) === null || _f === void 0 ? void 0 : _f.message;
11
+ else if (isString((_h = (_g = response === null || response === void 0 ? void 0 : response.data) === null || _g === void 0 ? void 0 : _g.error) === null || _h === void 0 ? void 0 : _h.message)) {
12
+ return (_k = (_j = response === null || response === void 0 ? void 0 : response.data) === null || _j === void 0 ? void 0 : _j.error) === null || _k === void 0 ? void 0 : _k.message;
13
+ }
14
+ else if (isString((_l = response === null || response === void 0 ? void 0 : response.data) === null || _l === void 0 ? void 0 : _l.error))
15
+ return (_m = response === null || response === void 0 ? void 0 : response.data) === null || _m === void 0 ? void 0 : _m.error;
16
+ return "An error ocurred, please try again later";
17
+ };
18
+ export var handleSuccess = function (msg) {
19
+ addToast(msg, "success");
20
+ };
21
+ export var handleError = function (err, errMsg) {
22
+ if (errMsg === void 0) { errMsg = null; }
23
+ var msg = "Connection Error";
24
+ var errorType = "";
25
+ if (errMsg)
26
+ msg = errMsg;
27
+ else if (err.response) {
28
+ switch (err.response.status) {
29
+ case 500:
30
+ msg = "An error has occurred on our server. Please try again later";
31
+ errorType = "error";
32
+ break;
33
+ case 422:
34
+ errorType = "error";
35
+ msg = getErrorMessage(err.response);
36
+ break;
37
+ default:
38
+ msg = getErrorMessage(err.response);
39
+ break;
40
+ }
41
+ }
42
+ // handle error message
43
+ if (errorType) {
44
+ addToast(msg, "error");
45
+ }
46
+ else {
47
+ addToast(msg);
48
+ }
49
+ };
@@ -0,0 +1,26 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
17
+ import styled from "styled-components";
18
+ import { Div } from "../../styled/utils";
19
+ import { Spinner } from "../Spinner";
20
+ var LoadingBackdrop = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: fixed;\n top: 0px;\n left: 0px;\n margin: 0px;\n width: 100vw;\n height: 100vh;\n z-index: 99999999;\n background: ", ";\n opacity: 0.2;\n"], ["\n position: fixed;\n top: 0px;\n left: 0px;\n margin: 0px;\n width: 100vw;\n height: 100vh;\n z-index: 99999999;\n background: ", ";\n opacity: 0.2;\n"])), function (props) { return props.theme.colors.gray200; });
21
+ var ModalContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n top: 0px;\n left: 0px;\n margin: 0px;\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000000000;\n width: 100vw;\n height: 100vh;\n pointer-events: none;\n div {\n pointer-events: auto;\n }\n"], ["\n top: 0px;\n left: 0px;\n margin: 0px;\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000000000;\n width: 100vw;\n height: 100vh;\n pointer-events: none;\n div {\n pointer-events: auto;\n }\n"])));
22
+ var LoaderContainer = styled(ModalContainer)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n pointer-events: none;\n"], ["\n pointer-events: none;\n"])));
23
+ export var AppLoadingUI = function () {
24
+ return (_jsxs(_Fragment, { children: [_jsx(LoadingBackdrop, {}), _jsx(LoaderContainer, { children: _jsx(Div, __assign({ w: 300 }, { children: _jsx(Div, __assign({ pRelative: true }, { children: _jsx(Spinner, {}) })) })) })] }));
25
+ };
26
+ var templateObject_1, templateObject_2, templateObject_3;
@@ -0,0 +1,25 @@
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 { createContext, useContext, useState } from "react";
14
+ import { AppLoadingUI } from "./AppLoadingUI";
15
+ export var AppLoadingContext = createContext({});
16
+ export var AppLoadingContextProvider = function (_a) {
17
+ var children = _a.children;
18
+ var _b = useState(false), isLoadingApp = _b[0], setIsLoadingApp = _b[1];
19
+ var value = {
20
+ isLoadingApp: isLoadingApp,
21
+ setIsLoadingApp: setIsLoadingApp,
22
+ };
23
+ return (_jsxs(AppLoadingContext.Provider, __assign({ value: value }, { children: [isLoadingApp && _jsx(AppLoadingUI, {}), children] })));
24
+ };
25
+ export var useAppLoadingContext = function () { return useContext(AppLoadingContext); };
@@ -0,0 +1,19 @@
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, Fragment as _Fragment } from "react/jsx-runtime";
13
+ import { colors, Div, Modal, Button } from "../";
14
+ export var ConfirmationModal = function (_a) {
15
+ var isOpen = _a.isOpen, handleClose = _a.handleClose, onSubmit = _a.onSubmit, title = _a.title, description = _a.description, buttonText = _a.buttonText, _b = _a.icon, icon = _b === void 0 ? null : _b, _c = _a.hasCancelButton, hasCancelButton = _c === void 0 ? true : _c;
16
+ var headerUI = (_jsxs(Div, { children: [icon && (_jsx(Div, __assign({ centered: true, mb: 20 }, { children: icon }))), _jsx(Div, __assign({ mb: 12 }, { children: _jsx(Div, __assign({ h5: true, dflex: true, centered: true }, { children: title })) }))] }));
17
+ var bodyUI = (_jsxs(_Fragment, { children: [_jsx(Div, __assign({ c: colors.gray800, body1: true, flexColumn: true, centered: true }, { children: description })), _jsxs(Div, __assign({ mt: 40, dflex: true, centered: true }, { children: [hasCancelButton && (_jsx(Button, __assign({ variant: "secondary", mr: 16, w: 104, onClick: handleClose }, { children: "Cancel" }))), _jsx(Button, __assign({ w: 135, onClick: onSubmit }, { children: buttonText }))] }))] }));
18
+ return (_jsx(_Fragment, { children: _jsx(Modal, __assign({ isOpen: isOpen, onClose: handleClose }, { children: _jsxs(Div, __assign({ p: "48px 56px" }, { children: [headerUI, bodyUI] })) })) }));
19
+ };
@@ -0,0 +1,31 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
+ import styled from "styled-components";
18
+ import { Div } from "../styled/utils";
19
+ import { closeIcon } from "./icons";
20
+ export var ModalContainer = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n top: 0px;\n left: 0px;\n margin: 0px;\n position: fixed;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 10000000000;\n width: 100vw;\n height: 100vh;\n pointer-events: none;\n div {\n pointer-events: auto;\n }\n"], ["\n top: 0px;\n left: 0px;\n margin: 0px;\n position: fixed;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 10000000000;\n width: 100vw;\n height: 100vh;\n pointer-events: none;\n div {\n pointer-events: auto;\n }\n"])));
21
+ export var ModalBackdrop = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n position: fixed;\n top: 0px;\n left: 0px;\n margin: 0px;\n width: 100vw;\n height: 100vh;\n z-index: 99999999;\n background: black;\n opacity: 0.38;\n"], ["\n position: fixed;\n top: 0px;\n left: 0px;\n margin: 0px;\n width: 100vw;\n height: 100vh;\n z-index: 99999999;\n background: black;\n opacity: 0.38;\n"])));
22
+ export var ModalWrapper = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background: ", ";\n padding: 32px 36px;\n border-radius: 8px;\n box-shadow: 0 8px 8px 0 rgba(0, 0, 0, 0.24), 0 0 8px 0 rgba(0, 0, 0, 0.32);\n"], ["\n background: ", ";\n padding: 32px 36px;\n border-radius: 8px;\n box-shadow: 0 8px 8px 0 rgba(0, 0, 0, 0.24), 0 0 8px 0 rgba(0, 0, 0, 0.32);\n"])), function (props) { return props.theme.colors.white; });
23
+ export var ModalCloseIcon = styled(Div)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n height: 0;\n display: flex;\n flex-direction: row-reverse;\n z-index: 10;\n"], ["\n height: 0;\n display: flex;\n flex-direction: row-reverse;\n z-index: 10;\n"])));
24
+ export var Modal = function (_a) {
25
+ var _b = _a.isOpen, isOpen = _b === void 0 ? false : _b, _c = _a.onClose, onClose = _c === void 0 ? null : _c, children = _a.children, _d = _a.withCloseIcon, withCloseIcon = _d === void 0 ? true : _d, _e = _a.withBackdropClose, withBackdropClose = _e === void 0 ? true : _e, _f = _a.className, className = _f === void 0 ? "" : _f, testId = _a.testId;
26
+ function renderModal() {
27
+ return (_jsxs(Div, __assign({ className: className, "data-testid": testId }, { children: [_jsx(ModalBackdrop, { onClick: withBackdropClose ? onClose : null }), _jsx(ModalContainer, { children: _jsxs(ModalWrapper, { children: [withCloseIcon && (_jsx(ModalCloseIcon, { children: _jsx(Div, __assign({ clickable: true, mt: -5, mr: -5, w: "25px", h: "25px", onClick: onClose }, { children: closeIcon })) })), children] }) })] })));
28
+ }
29
+ return _jsx(_Fragment, { children: isOpen && renderModal() });
30
+ };
31
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
@@ -0,0 +1,41 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ 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
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
28
+ import styled from "styled-components";
29
+ import { theme } from "../styled/theme";
30
+ import { Div } from "../styled/utils";
31
+ var Wrapper = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n"], ["\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n"])));
32
+ var Bounce = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n width: 12px;\n height: 12px;\n margin: 0 5px 0 5px;\n background: ", ";\n @-webkit-keyframes sk-bouncedelay {\n 0%,\n 80%,\n 100% {\n -webkit-transform: scale(0);\n }\n 40% {\n -webkit-transform: scale(1);\n }\n }\n @keyframes sk-bouncedelay {\n 0%,\n 80%,\n 100% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 40% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n }\n border-radius: 100%;\n display: inline-block;\n -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;\n animation: sk-bouncedelay 1.4s infinite ease-in-out both;\n"], ["\n width: 12px;\n height: 12px;\n margin: 0 5px 0 5px;\n background: ", ";\n @-webkit-keyframes sk-bouncedelay {\n 0%,\n 80%,\n 100% {\n -webkit-transform: scale(0);\n }\n 40% {\n -webkit-transform: scale(1);\n }\n }\n @keyframes sk-bouncedelay {\n 0%,\n 80%,\n 100% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 40% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n }\n border-radius: 100%;\n display: inline-block;\n -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;\n animation: sk-bouncedelay 1.4s infinite ease-in-out both;\n"])), function (props) { return props.color; });
33
+ var Bounce1 = styled(Bounce)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n -webkit-animation-delay: -0.32s;\n animation-delay: -0.32s;\n"], ["\n -webkit-animation-delay: -0.32s;\n animation-delay: -0.32s;\n"])));
34
+ var Bounce2 = styled(Bounce)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n -webkit-animation-delay: -0.16s;\n animation-delay: -0.16s;\n"], ["\n -webkit-animation-delay: -0.16s;\n animation-delay: -0.16s;\n"])));
35
+ var SpinnerContainer = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n width: 70px;\n text-align: center;\n"], ["\n width: 70px;\n text-align: center;\n"])));
36
+ var Spinner = function (_a) {
37
+ var _b = _a.color, color = _b === void 0 ? theme.colors.gray300 : _b, props = __rest(_a, ["color"]);
38
+ return (_jsx(Wrapper, __assign({}, props, { children: _jsxs(SpinnerContainer, { children: [_jsx(Bounce1, { color: color }), _jsx(Bounce2, { color: color }), _jsx(Bounce, { color: color })] }) })));
39
+ };
40
+ export { Spinner };
41
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
@@ -0,0 +1,42 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ 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
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
28
+ import styled, { css } from "styled-components";
29
+ import { Div } from "../../../styled/utils";
30
+ var IconContainer = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n ", ";\n color: ", ";\n border-radius: 4px;\n height: 24px;\n width: 24px;\n ", "\n"], ["\n ", ";\n color: ", ";\n border-radius: 4px;\n height: 24px;\n width: 24px;\n ", "\n"])), function (p) { return p.theme.css.centered; }, function (p) { return p.theme.colors.gray900; }, function (p) {
31
+ return p.isDisabled
32
+ ? css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.disabled3; }) : css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n :hover {\n cursor: pointer;\n\n background-color: ", ";\n }\n "], ["\n :hover {\n cursor: pointer;\n\n background-color: ", ";\n }\n "])), function (p) { return p.theme.colors.gray100; });
33
+ });
34
+ export var PaginationIcon = function (_a) {
35
+ var _b = _a.isDisabled, isDisabled = _b === void 0 ? false : _b, children = _a.children, props = __rest(_a, ["isDisabled", "children"]);
36
+ return (_jsx(IconContainer, __assign({ ml: 10, isDisabled: isDisabled }, props, { children: children })));
37
+ };
38
+ export var previousPage = (_jsx("svg", __assign({ width: "8", height: "13", viewBox: "0 0 8 13", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: _jsx("path", { d: "M7.00623 0.90802L1.26688 6.3505L7.00623 11.793", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) })));
39
+ export var nextPage = (_jsx("svg", __assign({ width: "8", height: "13", viewBox: "0 0 8 13", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: _jsx("path", { d: "M1.24243 0.90802L6.98177 6.3505L1.24243 11.793", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) })));
40
+ export var jumpToFirst = (_jsxs("svg", __assign({ width: "24", height: "19", viewBox: "0 0 24 19", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: [_jsx("path", { d: "M16.4547 3.90802L10.7154 9.3505L16.4547 14.793", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M6.59399 14.069L6.59399 4.68966", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" })] })));
41
+ export var jumpToLast = (_jsxs("svg", __assign({ width: "25", height: "19", viewBox: "0 0 25 19", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: [_jsx("path", { d: "M8.23022 14.8506L13.9696 9.40811L8.23023 3.96563", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M18.0909 4.68964L18.0909 14.0689", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" })] })));
42
+ var templateObject_1, templateObject_2, templateObject_3;
@@ -0,0 +1,32 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
+ import { useTableContext } from "../TableDataProvider";
18
+ import { jumpToFirst, jumpToLast, nextPage, PaginationIcon, previousPage, } from "./icons";
19
+ import styled from "styled-components";
20
+ import { colors } from "../../../styled/theme/colorPalette";
21
+ import { Div } from "../../../styled/utils";
22
+ var Container = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n border: solid 1px ", ";\n border-top: none;\n overflow: hidden;\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n"], ["\n border: solid 1px ", ";\n border-top: none;\n overflow: hidden;\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n"])), function (p) { return p.theme.colors.gray300; });
23
+ var Pagination = function () {
24
+ var _a = useTableContext(), totalPages = _a.totalPages, totalCount = _a.totalCount, pageSize = _a.pageSize, currentPage = _a.currentPage, setCurrentPage = _a.setCurrentPage;
25
+ var isFirstPage = currentPage === 1;
26
+ var isLastPage = currentPage === totalPages;
27
+ var cursor = (currentPage - 1) * pageSize;
28
+ var buttonsUI = (_jsxs(Div, __assign({ mr: 25, dflex: true }, { children: [_jsx(PaginationIcon, __assign({ isDisabled: isFirstPage, onClick: function () { return setCurrentPage(1); } }, { children: jumpToFirst })), _jsx(PaginationIcon, __assign({ isDisabled: isFirstPage, onClick: function () { return setCurrentPage(Math.max(currentPage - 1, 1)); } }, { children: previousPage })), _jsxs(Div, __assign({ centered: true, ml: 10 }, { children: [cursor + 1, "-", Math.min(cursor + pageSize, totalCount), " of ", totalCount] })), _jsx(PaginationIcon, __assign({ isDisabled: isLastPage, onClick: function () { return setCurrentPage(Math.min(currentPage + 1, totalPages)); } }, { children: nextPage })), _jsx(PaginationIcon, __assign({ isDisabled: isLastPage, onClick: function () { return setCurrentPage(totalPages); } }, { children: jumpToLast }))] })));
29
+ return (_jsx(Container, __assign({ w100: true }, { children: _jsx(Div, __assign({ h: 38, bg: colors.tableHeader, justifyEnd: true }, { children: _jsx(Div, __assign({ dflex: true, alignCenter: true, body2: true, c: colors.text }, { children: buttonsUI })) })) })));
30
+ };
31
+ export { Pagination };
32
+ var templateObject_1;
@@ -0,0 +1,50 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ import { jsxs as _jsxs, Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
17
+ import { useState } from "react";
18
+ import styled from "styled-components";
19
+ import { TooltipProvider } from "../../../common/TooltipProvider";
20
+ import { ConfirmationModal } from "../../../common/ConfirmationModal";
21
+ import { useSpreadsheetContext } from "../../../Importer";
22
+ import { DeleteIcon, ConfirmationDeleteIcon } from "./icons";
23
+ import { Div } from "../../../styled/utils";
24
+ import { ActionButton } from "./TableActions.styles";
25
+ import { useTranslation } from "react-i18next";
26
+ var StyledTooltipProvider = styled(TooltipProvider)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n width: fit-content;\n"], ["\n width: fit-content;\n"])));
27
+ export var DeleteSelectedRows = function (_a) {
28
+ var _b = _a.testId, testId = _b === void 0 ? "ta-delete-rows" : _b;
29
+ var _c = useState(false), isConfirmationModalOpen = _c[0], setIsConfirmationModalOpen = _c[1];
30
+ var _d = useSpreadsheetContext(), deleteRecords = _d.deleteRecords, selectedRows = _d.selectedRows, setSelectedRows = _d.setSelectedRows, setFilteredInputValue = _d.setFilteredInputValue;
31
+ var t = useTranslation("review").t;
32
+ var toggleModalVisibility = function () {
33
+ setIsConfirmationModalOpen(function (oldValue) { return !oldValue; });
34
+ };
35
+ var handleDeleteRecord = function () {
36
+ setSelectedRows([]);
37
+ toggleModalVisibility();
38
+ setFilteredInputValue("");
39
+ deleteRecords(selectedRows);
40
+ };
41
+ var DescriptionUI = function () { return (_jsx(_Fragment, { children: _jsxs(Div, { children: [t("table_actions.delete_rows.confirmation_modal", {
42
+ length: selectedRows.length,
43
+ }), selectedRows.length > 1 ? "s" : "", "?"] }) })); };
44
+ var confirmationModalUI = (_jsx(ConfirmationModal, { isOpen: isConfirmationModalOpen, handleClose: toggleModalVisibility, title: "".concat(t("table_actions.delete_rows.modal_title")).concat(selectedRows.length > 1 ? "s" : ""), description: _jsx(DescriptionUI, {}), onSubmit: handleDeleteRecord, buttonText: t("table_actions.delete_rows.yes_delete"), icon: ConfirmationDeleteIcon }));
45
+ var isDeleteButtonDisabled = selectedRows.length <= 0;
46
+ return (_jsxs(_Fragment, { children: [confirmationModalUI, _jsx(StyledTooltipProvider, __assign({ tooltip: isDeleteButtonDisabled
47
+ ? t("table_actions.delete_rows.select_rows")
48
+ : t("table_actions.delete_rows.delete_row"), placement: "right", flip: false, centered: true, "data-testid": testId }, { children: _jsx(ActionButton, __assign({ onClick: toggleModalVisibility, disabled: isDeleteButtonDisabled }, { children: _jsx(DeleteIcon, {}) })) }))] }));
49
+ };
50
+ var templateObject_1;
@@ -0,0 +1,23 @@
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 } from "react/jsx-runtime";
13
+ import { DownloadIcon } from "./icons";
14
+ import { useReviewContext } from "../../../Importer";
15
+ import { TooltipProvider } from "../../../common/TooltipProvider";
16
+ import { ActionButton } from "./TableActions.styles";
17
+ import { useTranslation } from "react-i18next";
18
+ export var ExportData = function (_a) {
19
+ var _b = _a.testId, testId = _b === void 0 ? "ta-export-data" : _b;
20
+ var onExport = useReviewContext().onExport;
21
+ var t = useTranslation("review").t;
22
+ return (_jsx(TooltipProvider, __assign({ tooltip: t("table_actions.export_your_data.tooltip"), placement: "right", flip: false, centered: true, "data-testid": testId }, { children: _jsx(ActionButton, __assign({ onClick: function () { return onExport("csv"); } }, { children: _jsx(DownloadIcon, {}) })) })));
23
+ };
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as S from "./FilterByErrors.styles";
3
+ import { useSpreadsheetContext } from "../../../../Importer";
4
+ import { formatErrors, getUniqueErrors } from "./functions";
5
+ import { useTranslation } from "react-i18next";
6
+ import { addToast } from "../../../../common/Toast";
7
+ import { useState } from "react";
8
+ export var FilterByErrors = function () {
9
+ var _a, _b;
10
+ var _c = useSpreadsheetContext(), errors = _c.errors, fields = _c.fields, spreadsheetFilter = _c.spreadsheetFilter, resetSpreadsheetFilter = _c.resetSpreadsheetFilter, filterRecordsByFieldErrors = _c.filterRecordsByFieldErrors;
11
+ var t = useTranslation("review").t;
12
+ var _d = useState(false), isMenuOpened = _d[0], setIsMenuOpened = _d[1];
13
+ var prefix = t("table_actions.filter_by_errors.filter_by_errors");
14
+ var search_or_select = t("table_actions.filter_by_errors.search_or_select");
15
+ var selectedErrorToFilter = ((_a = spreadsheetFilter === null || spreadsheetFilter === void 0 ? void 0 : spreadsheetFilter.byColumn) === null || _a === void 0 ? void 0 : _a.field) || null;
16
+ var getSelectedErrorLabel = function (selectedFieldName) {
17
+ var _a;
18
+ var selectedField = fields.filter(function (field) { return (field === null || field === void 0 ? void 0 : field.name) === selectedFieldName; });
19
+ var label = ((_a = selectedField === null || selectedField === void 0 ? void 0 : selectedField[0]) === null || _a === void 0 ? void 0 : _a.label) || selectedFieldName;
20
+ return label;
21
+ };
22
+ var onChange = function (selected) {
23
+ if (selected) {
24
+ var label = getSelectedErrorLabel(selected);
25
+ filterRecordsByFieldErrors(selected);
26
+ addToast("Showing only the rows with error on the ".concat(label, " column"), "success");
27
+ }
28
+ else {
29
+ resetSpreadsheetFilter();
30
+ }
31
+ };
32
+ var uniqueErrors = getUniqueErrors(fields, errors);
33
+ var errorArray = formatErrors(fields, uniqueErrors);
34
+ // the average size of each character in the input (in px)
35
+ var widthPerCharacter = 5.8;
36
+ var amountOfCharacters = prefix.length + ((_b = getSelectedErrorLabel(selectedErrorToFilter)) === null || _b === void 0 ? void 0 : _b.length);
37
+ // 24 -> padding + 64px of the X icon area
38
+ var totalWidth = widthPerCharacter * amountOfCharacters + 24 + 64;
39
+ var inputWidth = selectedErrorToFilter ? "".concat(totalWidth, "px") : "fit-content";
40
+ var inputText = selectedErrorToFilter
41
+ ? "".concat(prefix, ": ")
42
+ : isMenuOpened
43
+ ? search_or_select
44
+ : prefix;
45
+ var isDisabled = errorArray.length === 0;
46
+ return (_jsx(S.StyledAutocomplete, { placement: "bottom", placeholder: inputText, onToggle: function (v) { return !isDisabled && setIsMenuOpened(v); }, onChange: onChange, value: selectedErrorToFilter, options: errorArray, isDisabled: isDisabled, isInputDisabled: isDisabled, inputWidth: inputWidth, "data-testid": "ta-filter-by-errors", prefix: inputText }));
47
+ };
@@ -0,0 +1,24 @@
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, { css } from "styled-components";
6
+ import { Autocomplete } from "../../../../common/inputs/Autocomplete";
7
+ import { textStyles } from "../../../../styled/theme/textStyles";
8
+ export var StyledAutocomplete = styled(Autocomplete)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n &,\n * {\n box-sizing: border-box !important;\n\n ", "\n }\n\n div[data-popper-placement=\"bottom\"] > div {\n display: flex;\n flex-direction: column;\n gap: 8px;\n outline: 1px solid red;\n padding: 8px;\n\n > div div {\n padding: 6px 12px;\n }\n\n ", "\n }\n\n input {\n ", ";\n background-color: ", ";\n border: 1px solid transparent;\n font-family: \"DM Sans\";\n font-size: 14px;\n font-weight: 400;\n height: 32px;\n padding: 6px 12px;\n width: ", ";\n\n ::placeholder {\n color: ", ";\n }\n\n :focus {\n border: none;\n box-shadow: none;\n }\n }\n"], ["\n &,\n * {\n box-sizing: border-box !important;\n\n ", "\n }\n\n div[data-popper-placement=\"bottom\"] > div {\n display: flex;\n flex-direction: column;\n gap: 8px;\n outline: 1px solid red;\n padding: 8px;\n\n > div div {\n padding: 6px 12px;\n }\n\n ", "\n }\n\n input {\n ", ";\n background-color: ", ";\n border: 1px solid transparent;\n font-family: \"DM Sans\";\n font-size: 14px;\n font-weight: 400;\n height: 32px;\n padding: 6px 12px;\n width: ", ";\n\n ::placeholder {\n color: ", ";\n }\n\n :focus {\n border: none;\n box-shadow: none;\n }\n }\n"])), function (_a) {
9
+ var isDisabled = _a.isDisabled;
10
+ return isDisabled && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n cursor: not-allowed !important;\n "], ["\n cursor: not-allowed !important;\n "])));
11
+ }, function (_a) {
12
+ var isDisabled = _a.isDisabled;
13
+ return isDisabled && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n cursor: not-allowed;\n "], ["\n cursor: not-allowed;\n "])));
14
+ }, textStyles.body3, function (_a) {
15
+ var theme = _a.theme;
16
+ return theme.colors.orange50;
17
+ }, function (_a) {
18
+ var inputWidth = _a.inputWidth;
19
+ return inputWidth;
20
+ }, function (_a) {
21
+ var theme = _a.theme;
22
+ return theme.colors.black;
23
+ });
24
+ var templateObject_1, templateObject_2, templateObject_3;
@@ -0,0 +1,35 @@
1
+ export var getUniqueErrors = function (fields, errors) {
2
+ var fieldKeys = new Set(fields.map(function (field) { return field.name; }));
3
+ var uniqueErrors = [];
4
+ for (var _i = 0, _a = Object.entries(errors); _i < _a.length; _i++) {
5
+ var _b = _a[_i], _1 = _b[0], errorObj = _b[1];
6
+ for (var _c = 0, _d = Object.entries(errorObj); _c < _d.length; _c++) {
7
+ var fieldName = _d[_c][0];
8
+ if (fieldKeys.has(fieldName)) {
9
+ uniqueErrors.push({ fieldName: fieldName });
10
+ }
11
+ }
12
+ }
13
+ return uniqueErrors;
14
+ };
15
+ export var formatErrors = function (fields, uniqueErrors) {
16
+ var errorMap = new Map();
17
+ var orderedErrorArray = [];
18
+ fields.forEach(function (field) {
19
+ errorMap.set(field.name, field);
20
+ });
21
+ fields.forEach(function (field) {
22
+ var name = field.name, label = field.label;
23
+ if (uniqueErrors.some(function (_a) {
24
+ var fieldName = _a.fieldName;
25
+ return fieldName === name;
26
+ }) &&
27
+ !orderedErrorArray.some(function (error) { return error.value === name; })) {
28
+ orderedErrorArray.push({
29
+ value: name,
30
+ label: label,
31
+ });
32
+ }
33
+ });
34
+ return orderedErrorArray;
35
+ };
@@ -0,0 +1 @@
1
+ export * from "./FilterByErrors";
@@ -0,0 +1,42 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ import { Fragment as _Fragment, jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
17
+ import styled, { css } from "styled-components";
18
+ import { useSpreadsheetContext } from "../../../Importer";
19
+ import { Div } from "../../../styled";
20
+ import { useTranslation } from "react-i18next";
21
+ var FilterContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 6px 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n ", ";\n ", "\n"], ["\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 6px 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n ", ";\n ", "\n"])), function (p) { return p.theme.css.body3; }, function (p) {
22
+ return p.isSelected && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n border-radius: 4px;\n "], ["\n background: ", ";\n color: ", ";\n border-radius: 4px;\n "])), function (p) { return p.theme.colors.black; }, function (p) { return p.theme.colors.white; });
23
+ });
24
+ var Container = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: flex;\n border-radius: 4px;\n background-color: ", ";\n"], ["\n display: flex;\n border-radius: 4px;\n background-color: ", ";\n"])), function (p) { return p.theme.colors.backgroundInterface; });
25
+ var FilteredDataCount = styled(Div)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px 8px;\n margin-left: -3px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n"], ["\n background: ", ";\n color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px 8px;\n margin-left: -3px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n"])), function (p) { return p.theme.colors.highlight01; }, function (p) { return p.theme.colors.black; });
26
+ var Filter = function (_a) {
27
+ var label = _a.label, count = _a.count, isSelected = _a.isSelected, onClick = _a.onClick;
28
+ var _b = useSpreadsheetContext(), filteredInputValue = _b.filteredInputValue, filteredDataCount = _b.filteredDataCount;
29
+ var labelToId = function (label) {
30
+ return label.toLowerCase().replace(/\s/g, "_") + "_filter";
31
+ };
32
+ return (_jsxs(Div, __assign({ dflex: true, clickable: true, onClick: onClick, "data-test-id": labelToId(label) }, { children: [_jsxs(FilterContainer, __assign({ isSelected: isSelected }, { children: [label, count >= 0 && _jsxs(_Fragment, { children: ["\u00A0(", count, ")"] })] })), isSelected && filteredInputValue !== "" && (_jsx(FilteredDataCount, { children: _jsx(Div, __assign({ minw: 14, centered: true }, { children: filteredDataCount })) }))] })));
33
+ };
34
+ export var RowFilters = function () {
35
+ var _a = useSpreadsheetContext(), spreadsheetFilter = _a.spreadsheetFilter, errors = _a.errors, filterRecordsByRowType = _a.filterRecordsByRowType, recordsWithValuesCount = _a.recordsWithValuesCount;
36
+ var t = useTranslation("review").t;
37
+ var all_rows = t("table_actions.filters_by_rows.all_rows");
38
+ var valid_rows = t("table_actions.filters_by_rows.valid_rows");
39
+ var invalid_rows = t("table_actions.filters_by_rows.invalid_rows");
40
+ return (_jsxs(Container, { children: [_jsx(Filter, { isSelected: spreadsheetFilter.byRow === "all", label: all_rows, count: recordsWithValuesCount, onClick: function () { return filterRecordsByRowType("all"); } }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "valid", label: valid_rows, onClick: function () { return filterRecordsByRowType("valid"); } }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "invalid", label: invalid_rows, count: Object.values(errors).length, onClick: function () { return filterRecordsByRowType("invalid"); } })] }));
41
+ };
42
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4;