fuse-importer 0.26.7 → 0.26.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/Importer/ImporterWithContext.js +13 -11
- package/lib/esm/Importer/Review/ReviewContextProvider.d.ts +3 -2
- package/lib/esm/Importer/Review/ReviewContextProvider.js +20 -20
- package/lib/esm/Importer/Stepper/index.js +14 -13
- package/lib/esm/Importer/Uploader/HeadersPreview.js +16 -8
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.d.ts +5 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +56 -0
- package/lib/esm/Importer/common/Spreadsheet/{SpreadsheetContextProvider.d.ts → SpreadsheetContextProvider/index.d.ts} +12 -8
- package/lib/esm/Importer/common/Spreadsheet/{SpreadsheetContextProvider.js → SpreadsheetContextProvider/index.js} +28 -18
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.d.ts +14 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.js +45 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.d.ts +2 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +14 -0
- package/lib/esm/Importer/common/Spreadsheet/common/types.d.ts +2 -2
- package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.js +5 -2
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.d.ts +2 -1
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +9 -4
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.d.ts +1 -2
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +18 -13
- package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +1 -3
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +7 -4
- package/lib/esm/Importer/common/Spreadsheet/index.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.d.ts +7 -0
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +25 -0
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.d.ts +8 -0
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +106 -0
- package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +6 -2
- package/lib/esm/Importer/contexts/ImporterContextProvider.js +26 -22
- package/lib/esm/Importer/data/index.d.ts +19 -3
- package/lib/esm/Importer/data/index.js +29 -30
- package/lib/esm/Importer/index.js +1 -1
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +9 -5
- package/lib/esm/common/Table/TableActions/RowFilters.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/RowFilters.js +42 -0
- package/lib/esm/common/Table/TableActions/TableActions.js +2 -1
- package/lib/esm/common/Table/TableActions/hooks.d.ts +0 -2
- package/lib/esm/common/Table/TableActions/hooks.js +0 -39
- package/lib/esm/common/Table/TableView/TableRows/TableRow.d.ts +2 -2
- package/lib/esm/common/Table/TableView/TableRows/TableRow.js +4 -4
- package/lib/esm/common/Table/TableView/TableRows/index.js +7 -4
- package/lib/esm/common/Table/TableView/index.d.ts +1 -1
- package/lib/esm/common/Table/TableView/index.js +1 -2
- package/lib/esm/common/Table/TableView/types.d.ts +0 -1
- package/lib/esm/common/columnsTransformations.d.ts +15 -0
- package/lib/esm/common/columnsTransformations.js +92 -0
- package/lib/esm/common/columnsValidations.js +83 -3
- package/lib/esm/common/index.d.ts +1 -0
- package/lib/esm/common/index.js +1 -0
- package/lib/esm/common/inputs/Autocomplete.js +1 -1
- package/lib/esm/common/inputs/Checkbox.js +1 -1
- package/lib/esm/index.d.ts +3 -2
- package/lib/esm/index.js +15 -24
- package/lib/esm/locales/de.d.ts +5 -0
- package/lib/esm/locales/de.js +6 -1
- package/lib/esm/locales/en.d.ts +5 -0
- package/lib/esm/locales/en.js +6 -1
- package/lib/esm/locales/es.d.ts +5 -0
- package/lib/esm/locales/es.js +6 -1
- package/lib/esm/locales/fr.d.ts +5 -0
- package/lib/esm/locales/fr.js +6 -1
- package/lib/esm/types.d.ts +36 -8
- package/lib/esm/types.js +15 -0
- package/lib/main.js +24 -24
- package/package.json +1 -1
|
@@ -18,6 +18,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
18
18
|
}
|
|
19
19
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
20
|
};
|
|
21
|
+
import { transformRecord } from "../../Importer/common/Spreadsheet/transformation";
|
|
21
22
|
import { FieldTypes, } from "../../types";
|
|
22
23
|
import { parseValue } from "../common/Spreadsheet/common";
|
|
23
24
|
var MINIMUM_ROW_COUNT = 20;
|
|
@@ -54,7 +55,7 @@ export var recordListToDataSet = function (data, fields) {
|
|
|
54
55
|
return dataSet;
|
|
55
56
|
}, {});
|
|
56
57
|
};
|
|
57
|
-
var transformToRecords = function (_a) {
|
|
58
|
+
export var transformToRecords = function (_a) {
|
|
58
59
|
var templateHeaderMatchings = _a.templateHeaderMatchings, enumFieldValueMatchings = _a.enumFieldValueMatchings, templateHeaders = _a.templateHeaders, uploadedDataHeaders = _a.uploadedDataHeaders, uploadedData = _a.uploadedData, formatRecord = _a.formatRecord;
|
|
59
60
|
var matchedColumnsLabels = Object.keys(templateHeaderMatchings)
|
|
60
61
|
.filter(function (label) { return !!templateHeaderMatchings[label]; })
|
|
@@ -84,17 +85,14 @@ var transformToRecords = function (_a) {
|
|
|
84
85
|
});
|
|
85
86
|
return formatRecord ? formatRecord(record) : record;
|
|
86
87
|
};
|
|
87
|
-
return uploadedData.
|
|
88
|
+
return uploadedData.map(getRecord);
|
|
88
89
|
};
|
|
89
90
|
export var getPreviewDataSet = function (_a) {
|
|
90
91
|
var uploadedData = _a.uploadedData;
|
|
91
|
-
var
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return 0;
|
|
96
|
-
};
|
|
97
|
-
var fields = new Array(getFirstRowLen()).fill(null).map(function (_, i) {
|
|
92
|
+
var rowLen = 0;
|
|
93
|
+
for (var i = 0; i < uploadedData.length; i++)
|
|
94
|
+
rowLen = Math.max(rowLen, uploadedData[i].length);
|
|
95
|
+
var fields = new Array(rowLen).fill(null).map(function (_, i) {
|
|
98
96
|
var key = String.fromCharCode(65 + i);
|
|
99
97
|
return {
|
|
100
98
|
label: key,
|
|
@@ -104,9 +102,7 @@ export var getPreviewDataSet = function (_a) {
|
|
|
104
102
|
};
|
|
105
103
|
});
|
|
106
104
|
var getInitialDataSet = function () {
|
|
107
|
-
|
|
108
|
-
//TODO: Check with Mike
|
|
109
|
-
var data = uploadedData.slice(0, 100).map(function (row, index) {
|
|
105
|
+
var data = uploadedData.map(function (row, index) {
|
|
110
106
|
var entry = addMeta({}, index);
|
|
111
107
|
fields.forEach(function (field, index) {
|
|
112
108
|
entry[field.name] = row[index];
|
|
@@ -117,10 +113,9 @@ export var getPreviewDataSet = function (_a) {
|
|
|
117
113
|
};
|
|
118
114
|
return { fields: fields, initialDataSet: getInitialDataSet() };
|
|
119
115
|
};
|
|
120
|
-
export var
|
|
121
|
-
var
|
|
122
|
-
|
|
123
|
-
var fields = templateHeaders.map(function (templateHeader) { return ({
|
|
116
|
+
export var getTemplateFields = function (_a) {
|
|
117
|
+
var templateHeaders = _a.templateHeaders;
|
|
118
|
+
return templateHeaders.map(function (templateHeader) { return ({
|
|
124
119
|
label: templateHeader.label,
|
|
125
120
|
name: templateHeader.internal_key,
|
|
126
121
|
type: FieldTypes[templateHeader.column_type] || FieldTypes.string,
|
|
@@ -128,24 +123,28 @@ export var getReviewDataSet = function (_a) {
|
|
|
128
123
|
options: templateHeader.values,
|
|
129
124
|
pattern: templateHeader.pattern,
|
|
130
125
|
validations: templateHeader.validations,
|
|
126
|
+
transformations: templateHeader.transformations,
|
|
131
127
|
}); });
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
128
|
+
};
|
|
129
|
+
export var getReviewDataSet = function (_a) {
|
|
130
|
+
var _b;
|
|
131
|
+
var records = _a.records, fields = _a.fields;
|
|
132
|
+
for (var _i = 0, records_1 = records; _i < records_1.length; _i++) {
|
|
133
|
+
var record = records_1[_i];
|
|
134
|
+
transformRecord({
|
|
135
|
+
record: record,
|
|
136
|
+
fields: fields,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
140
139
|
var baseInitialDataSet = recordListToDataSet(addEmptyRows(records, fields), fields);
|
|
141
140
|
var highestRowIndex = 0;
|
|
142
|
-
|
|
143
|
-
var
|
|
144
|
-
if (
|
|
145
|
-
highestRowIndex =
|
|
141
|
+
Object.keys(baseInitialDataSet).forEach(function (key) {
|
|
142
|
+
var record = baseInitialDataSet[key];
|
|
143
|
+
if (record._meta.rowIndex > highestRowIndex) {
|
|
144
|
+
highestRowIndex = record._meta.rowIndex;
|
|
146
145
|
}
|
|
147
|
-
}
|
|
146
|
+
});
|
|
148
147
|
var emptyRowAtBottom = addMeta({}, highestRowIndex + 1);
|
|
149
148
|
var initialDataSet = __assign(__assign({}, baseInitialDataSet), (_b = {}, _b[emptyRowAtBottom._meta.id] = emptyRowAtBottom, _b));
|
|
150
|
-
return {
|
|
149
|
+
return { initialDataSet: initialDataSet };
|
|
151
150
|
};
|
|
@@ -20,7 +20,7 @@ var p = function (path) { return "".concat(ACCOUNT_VIEW_PATH).concat(path); };
|
|
|
20
20
|
export var TEMPLATES_ROUTE = p(ACCOUNT_ROUTES.TEMPLATES);
|
|
21
21
|
var Importer = function (_a) {
|
|
22
22
|
var templateSlug = _a.templateSlug, apiToken = _a.apiToken, options = _a.options, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord, onSubmit = _a.onSubmit, onClose = _a.onClose, dynamicColumns = _a.dynamicColumns;
|
|
23
|
-
return (_jsx(ImporterContextProvider, __assign({ options: options, templateSlug: templateSlug, apiToken: apiToken, formatRecord: formatRecord, onValidateRecord: onValidateRecord, onClose: onClose, onSubmit: onSubmit, dynamicColumns: dynamicColumns }, { children: _jsx(ImporterWithContext, {}) })));
|
|
23
|
+
return (_jsx(ImporterContextProvider, __assign({ initialRecords: options.records, options: options, templateSlug: templateSlug, apiToken: apiToken, formatRecord: formatRecord, onValidateRecord: onValidateRecord, onClose: onClose, onSubmit: onSubmit, dynamicColumns: dynamicColumns }, { children: _jsx(ImporterWithContext, {}) })));
|
|
24
24
|
};
|
|
25
25
|
export * from "./common/Spreadsheet";
|
|
26
26
|
export * from "./common/utils";
|
|
@@ -6,12 +6,13 @@ import { useTranslation } from "react-i18next";
|
|
|
6
6
|
import { addToast } from "../../../../common/Toast";
|
|
7
7
|
import { useState } from "react";
|
|
8
8
|
export var FilterByErrors = function () {
|
|
9
|
-
var _a;
|
|
10
|
-
var
|
|
9
|
+
var _a, _b;
|
|
10
|
+
var _c = useSpreadsheetContext(), errors = _c.errors, fields = _c.fields, spreadsheetFilter = _c.spreadsheetFilter, resetSpreadsheetFilter = _c.resetSpreadsheetFilter, filterRecordsByFieldErrors = _c.filterRecordsByFieldErrors;
|
|
11
11
|
var t = useTranslation("review").t;
|
|
12
|
-
var
|
|
12
|
+
var _d = useState(false), isMenuOpened = _d[0], setIsMenuOpened = _d[1];
|
|
13
13
|
var prefix = t("table_actions.filter_by_errors.filter_by_errors");
|
|
14
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;
|
|
15
16
|
var getSelectedErrorLabel = function (selectedFieldName) {
|
|
16
17
|
var _a;
|
|
17
18
|
var selectedField = fields.filter(function (field) { return (field === null || field === void 0 ? void 0 : field.name) === selectedFieldName; });
|
|
@@ -21,15 +22,18 @@ export var FilterByErrors = function () {
|
|
|
21
22
|
var onChange = function (selected) {
|
|
22
23
|
if (selected) {
|
|
23
24
|
var label = getSelectedErrorLabel(selected);
|
|
25
|
+
filterRecordsByFieldErrors(selected);
|
|
24
26
|
addToast("Showing only the rows with error on the ".concat(label, " column"), "success");
|
|
25
27
|
}
|
|
26
|
-
|
|
28
|
+
else {
|
|
29
|
+
resetSpreadsheetFilter();
|
|
30
|
+
}
|
|
27
31
|
};
|
|
28
32
|
var uniqueErrors = getUniqueErrors(fields, errors);
|
|
29
33
|
var errorArray = formatErrors(fields, uniqueErrors);
|
|
30
34
|
// the average size of each character in the input (in px)
|
|
31
35
|
var widthPerCharacter = 5.8;
|
|
32
|
-
var amountOfCharacters = prefix.length + ((
|
|
36
|
+
var amountOfCharacters = prefix.length + ((_b = getSelectedErrorLabel(selectedErrorToFilter)) === null || _b === void 0 ? void 0 : _b.length);
|
|
33
37
|
// 24 -> padding + 64px of the X icon area
|
|
34
38
|
var totalWidth = widthPerCharacter * amountOfCharacters + 24 + 64;
|
|
35
39
|
var inputWidth = selectedErrorToFilter ? "".concat(totalWidth, "px") : "fit-content";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const RowFilters: () => JSX.Element;
|
|
@@ -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;
|
|
@@ -27,7 +27,8 @@ import { SearchRows } from "./SearchRows";
|
|
|
27
27
|
import { ExportData } from "./ExportData";
|
|
28
28
|
import { ButtonActionsContainer, TableActionsContainer, TableActionsContent, } from "./TableActions.styles";
|
|
29
29
|
import { FilterByErrors } from "./FilterByErrors/FilterByErrors";
|
|
30
|
+
import { RowFilters } from "./RowFilters";
|
|
30
31
|
export var TableActions = function (_a) {
|
|
31
32
|
var _b = _a.tableActionsHeight, tableActionsHeight = _b === void 0 ? defaultTableActionsHeightPx : _b, props = __rest(_a, ["tableActionsHeight"]);
|
|
32
|
-
return (_jsx(TableActionsContainer, __assign({ height: tableActionsHeight }, props, { children: _jsxs(TableActionsContent, { children: [_jsx(SearchRows, {}), _jsx(FilterByErrors, {}), _jsxs(ButtonActionsContainer, { children: [_jsx(DeleteSelectedRows, {}), _jsx(ExportData, {})] })] }) })));
|
|
33
|
+
return (_jsx(TableActionsContainer, __assign({ height: tableActionsHeight }, props, { children: _jsxs(TableActionsContent, { children: [_jsx(SearchRows, {}), _jsx(RowFilters, {}), _jsx(FilterByErrors, {}), _jsxs(ButtonActionsContainer, { children: [_jsx(DeleteSelectedRows, {}), _jsx(ExportData, {})] })] }) })));
|
|
33
34
|
};
|
|
@@ -14,7 +14,5 @@ interface UseTableActionsProps {
|
|
|
14
14
|
}
|
|
15
15
|
export declare const useTableActions: ({ setDataSet, setErrors, setWarnings, }: UseTableActionsProps) => {
|
|
16
16
|
deleteRecords: (selectedRecords: string[], errors: BatchValidationErrors, warnings: BatchValidationErrors) => void;
|
|
17
|
-
filterRecordsBySearchValue: (obj: RecordDataSet, value: string) => {};
|
|
18
|
-
filterRecordsByError: (obj: RecordDataSet, keyToFilter: string, errors: BatchValidationErrors, fields: Field[]) => {};
|
|
19
17
|
};
|
|
20
18
|
export {};
|
|
@@ -22,17 +22,6 @@ var removeItemsFromObject = function (obj, idsToRemove) {
|
|
|
22
22
|
}
|
|
23
23
|
return newObj;
|
|
24
24
|
};
|
|
25
|
-
var isObject = function (value) {
|
|
26
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
27
|
-
};
|
|
28
|
-
var includesSearchValue = function (value, searchValue) {
|
|
29
|
-
if (typeof value === "string" || typeof value === "number") {
|
|
30
|
-
var stringValue = String(value).toLowerCase();
|
|
31
|
-
var searchValueLower = searchValue.toLowerCase();
|
|
32
|
-
return stringValue.includes(searchValueLower);
|
|
33
|
-
}
|
|
34
|
-
return false;
|
|
35
|
-
};
|
|
36
25
|
export var useTableActions = function (_a) {
|
|
37
26
|
var setDataSet = _a.setDataSet, setErrors = _a.setErrors, setWarnings = _a.setWarnings;
|
|
38
27
|
// Delete records from dataSet and from validations
|
|
@@ -46,35 +35,7 @@ export var useTableActions = function (_a) {
|
|
|
46
35
|
return newDataSet;
|
|
47
36
|
});
|
|
48
37
|
};
|
|
49
|
-
// Filter records by search value
|
|
50
|
-
var filterRecordsBySearchValue = function (obj, value) {
|
|
51
|
-
var filteredObj = {};
|
|
52
|
-
for (var _i = 0, _a = Object.entries(obj); _i < _a.length; _i++) {
|
|
53
|
-
var _b = _a[_i], key = _b[0], currentObj = _b[1];
|
|
54
|
-
if (!isObject(currentObj)) {
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
var matches = Object.values(currentObj).some(function (propertyValue) {
|
|
58
|
-
return includesSearchValue(propertyValue, value);
|
|
59
|
-
});
|
|
60
|
-
if (matches) {
|
|
61
|
-
filteredObj[key] = currentObj;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return filteredObj;
|
|
65
|
-
};
|
|
66
|
-
// Filter records by selected column error
|
|
67
|
-
var filterRecordsByError = function (obj, keyToFilter, errors, fields) {
|
|
68
|
-
var filteredObj = {};
|
|
69
|
-
var filteredKeys = Object.keys(errors).filter(function (key) { var _a, _b; return ((_b = (_a = obj[key]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.isInvalid) && errors[key][keyToFilter]; });
|
|
70
|
-
for (var i = 0; i < filteredKeys.length; i++) {
|
|
71
|
-
filteredObj[filteredKeys[i]] = obj[filteredKeys[i]];
|
|
72
|
-
}
|
|
73
|
-
return filteredObj;
|
|
74
|
-
};
|
|
75
38
|
return {
|
|
76
39
|
deleteRecords: deleteRecords,
|
|
77
|
-
filterRecordsBySearchValue: filterRecordsBySearchValue,
|
|
78
|
-
filterRecordsByError: filterRecordsByError,
|
|
79
40
|
};
|
|
80
41
|
};
|
|
@@ -7,7 +7,7 @@ type TableViewRowProps = {
|
|
|
7
7
|
isLast: boolean;
|
|
8
8
|
};
|
|
9
9
|
export declare const TableViewRow: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../../styled/utils").CSSProps & TableViewRowProps, never>;
|
|
10
|
-
type Props = Pick<TableViewProps, "columns" | "onRowClick"
|
|
10
|
+
type Props = Pick<TableViewProps, "columns" | "onRowClick"> & {
|
|
11
11
|
row: any;
|
|
12
12
|
rowWidth: number;
|
|
13
13
|
indexI: number;
|
|
@@ -15,5 +15,5 @@ type Props = Pick<TableViewProps, "columns" | "onRowClick" | "highlightFirstRow"
|
|
|
15
15
|
getItemKey?: (row: any) => string;
|
|
16
16
|
isRowSelected?: boolean;
|
|
17
17
|
} & DivCSSProps;
|
|
18
|
-
export declare const TableRow: ({ row, indexI, columns, isLast,
|
|
18
|
+
export declare const TableRow: ({ row, indexI, columns, isLast, onRowClick, getItemKey, rowWidth, isRowSelected, ...props }: Props) => JSX.Element;
|
|
19
19
|
export {};
|
|
@@ -40,11 +40,11 @@ export var TableViewRow = styled(Div)(templateObject_3 || (templateObject_3 = __
|
|
|
40
40
|
return p.isHighlighted && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background: ", ";\n box-shadow: inset 0 0 0 3px ", ";\n\n .input-content {\n background: transparent;\n border: none;\n box-shadow: none;\n\n &,\n input {\n color: ", ";\n }\n }\n "], ["\n background: ", ";\n box-shadow: inset 0 0 0 3px ", ";\n\n .input-content {\n background: transparent;\n border: none;\n box-shadow: none;\n\n &,\n input {\n color: ", ";\n }\n }\n "])), p.theme.colors.blue100, p.theme.colors.blue500, p.theme.colors.gray1000);
|
|
41
41
|
});
|
|
42
42
|
export var TableRow = function (_a) {
|
|
43
|
-
var row = _a.row, indexI = _a.indexI, columns = _a.columns, isLast = _a.isLast,
|
|
44
|
-
var isHighlighted =
|
|
45
|
-
|
|
43
|
+
var row = _a.row, indexI = _a.indexI, columns = _a.columns, isLast = _a.isLast, onRowClick = _a.onRowClick, getItemKey = _a.getItemKey, rowWidth = _a.rowWidth, _b = _a.isRowSelected, isRowSelected = _b === void 0 ? false : _b, props = __rest(_a, ["row", "indexI", "columns", "isLast", "onRowClick", "getItemKey", "rowWidth", "isRowSelected"]);
|
|
44
|
+
var isHighlighted = isRowSelected;
|
|
45
|
+
var key = getItemKey ? getItemKey(row) : "".concat(indexI);
|
|
46
|
+
return (_jsx(TableViewRow, __assign({ "data-test-id": "row-".concat(indexI), id: "row-id-".concat(key), dflex: true }, { isHighlighted: isHighlighted, isLast: isLast }, props, { children: columns.map(function (column, indexJ) {
|
|
46
47
|
var Content = column.Content;
|
|
47
|
-
var key = getItemKey ? getItemKey(row) : "".concat(indexI);
|
|
48
48
|
var resolvedKey = "column-".concat(indexJ, "-row-").concat(key);
|
|
49
49
|
var columnWidthPercentages = getColumnWidthsPx(columns, rowWidth);
|
|
50
50
|
var columnWidthPercentage = columnWidthPercentages[indexJ];
|
|
@@ -10,17 +10,17 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
-
import { CSS } from "@dnd-kit/utilities";
|
|
14
13
|
import { useSortable } from "@dnd-kit/sortable";
|
|
14
|
+
import { CSS } from "@dnd-kit/utilities";
|
|
15
15
|
import { Div } from "../../../../styled/utils";
|
|
16
|
-
import { TableRow } from "./TableRow";
|
|
17
16
|
import React from "react";
|
|
18
17
|
import { areEqual } from "react-window";
|
|
19
18
|
import { useSpreadsheetContext } from "../../../../Importer";
|
|
19
|
+
import { TableRow } from "./TableRow";
|
|
20
20
|
var Row = React.memo(function (_a) {
|
|
21
21
|
var _b;
|
|
22
22
|
var data = _a.data, rowIndex = _a.rowIndex, style = _a.style;
|
|
23
|
-
var items = data.items, rowWidth = data.rowWidth, isDraggable = data.isDraggable, onRowClick = data.onRowClick, columns = data.columns,
|
|
23
|
+
var items = data.items, rowWidth = data.rowWidth, isDraggable = data.isDraggable, onRowClick = data.onRowClick, columns = data.columns, rowHeight = data.rowHeight, getItemKey = data.getItemKey;
|
|
24
24
|
var item = items[rowIndex];
|
|
25
25
|
var selectedRows = useSpreadsheetContext().selectedRows;
|
|
26
26
|
var isRowSelected = selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.includes((_b = item === null || item === void 0 ? void 0 : item._meta) === null || _b === void 0 ? void 0 : _b.id);
|
|
@@ -28,7 +28,10 @@ var Row = React.memo(function (_a) {
|
|
|
28
28
|
var containerProps = { style: style };
|
|
29
29
|
if (isDraggable)
|
|
30
30
|
containerProps = __assign(__assign({}, containerProps), { item: item });
|
|
31
|
-
return (_jsx(Container, __assign({}, containerProps, { children: _jsx(TableRow, { rowWidth: rowWidth, columns: columns, onRowClick: onRowClick,
|
|
31
|
+
return (_jsx(Container, __assign({}, containerProps, { children: _jsx(TableRow, { rowWidth: rowWidth, columns: columns, onRowClick: onRowClick, h: rowHeight, row: item, indexI: rowIndex, isLast: rowIndex === items.length - 1, pRelative: true, getItemKey: getItemKey, isRowSelected: isRowSelected || false, className: rowIndex <
|
|
32
|
+
items.findIndex(function (item) { var _a; return ((_a = item === null || item === void 0 ? void 0 : item._meta) === null || _a === void 0 ? void 0 : _a.id) === (selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows[0]); })
|
|
33
|
+
? "before-selected-row"
|
|
34
|
+
: "" }) })));
|
|
32
35
|
}, areEqual);
|
|
33
36
|
var DraggableRow = React.memo(function (_a) {
|
|
34
37
|
var item = _a.item, baseStyle = _a.style, children = _a.children;
|
|
@@ -8,4 +8,4 @@ type TableViewWrapperProps = {
|
|
|
8
8
|
checkboxColumnWidth?: number;
|
|
9
9
|
};
|
|
10
10
|
export declare const TableViewWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps & TableViewWrapperProps, never>;
|
|
11
|
-
export declare const TableView: React.MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading,
|
|
11
|
+
export declare const TableView: React.MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, setSortBy, rowWidthScalingFactor, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, isDraggable, checkboxColumnWidth, isFiltering, ...props }: TableViewProps) => JSX.Element>;
|
|
@@ -66,7 +66,7 @@ var buildGridStyles = function (rowWidthScalingFactor) {
|
|
|
66
66
|
return gridStyles;
|
|
67
67
|
};
|
|
68
68
|
export var TableView = React.memo(function (_a) {
|
|
69
|
-
var data = _a.data, columns = _a.columns, pageSize = _a.pageSize, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.sortBy, sortBy = _c === void 0 ? { field: null, direction: null } : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.
|
|
69
|
+
var data = _a.data, columns = _a.columns, pageSize = _a.pageSize, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.sortBy, sortBy = _c === void 0 ? { field: null, direction: null } : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.setSortBy, setSortBy = _e === void 0 ? null : _e, _f = _a.rowWidthScalingFactor, rowWidthScalingFactor = _f === void 0 ? 1 : _f, onSectionRendered = _a.onSectionRendered, _g = _a.tableHeadersHeight, tableHeadersHeight = _g === void 0 ? defaultTableHeaderHeightPx : _g, _h = _a.rowHeight, rowHeight = _h === void 0 ? defaultTableRowHeightPx : _h, _j = _a.h, h = _j === void 0 ? 500 : _j, _k = _a.onTableScroll, onTableScroll = _k === void 0 ? null : _k, _l = _a.getItemKey, getItemKey = _l === void 0 ? null : _l, _m = _a.isDraggable, isDraggable = _m === void 0 ? false : _m, checkboxColumnWidth = _a.checkboxColumnWidth, _o = _a.isFiltering, isFiltering = _o === void 0 ? false : _o, props = __rest(_a, ["data", "columns", "pageSize", "onRowClick", "sortBy", "isLoading", "setSortBy", "rowWidthScalingFactor", "onSectionRendered", "tableHeadersHeight", "rowHeight", "h", "onTableScroll", "getItemKey", "isDraggable", "checkboxColumnWidth", "isFiltering"]);
|
|
70
70
|
var headerContainerRef = useRef();
|
|
71
71
|
var onScroll = function (_a) {
|
|
72
72
|
var scrollTop = _a.scrollTop, scrollLeft = _a.scrollLeft;
|
|
@@ -107,7 +107,6 @@ export var TableView = React.memo(function (_a) {
|
|
|
107
107
|
rowWidth: rowWidth,
|
|
108
108
|
onRowClick: onRowClick,
|
|
109
109
|
columns: columns,
|
|
110
|
-
highlightFirstRow: highlightFirstRow,
|
|
111
110
|
rowHeight: rowHeight,
|
|
112
111
|
getItemKey: getItemKey,
|
|
113
112
|
},
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TransformationOptionKeys, TransformationTypes } from "../types";
|
|
2
|
+
export type TransformationOption = {
|
|
3
|
+
type: "text" | "number";
|
|
4
|
+
key: TransformationOptionKeys;
|
|
5
|
+
tooltip: string;
|
|
6
|
+
};
|
|
7
|
+
export type Transformation = {
|
|
8
|
+
value: TransformationTypes;
|
|
9
|
+
label: string;
|
|
10
|
+
options?: TransformationOption[];
|
|
11
|
+
};
|
|
12
|
+
export declare const transformationsByColumnType: {
|
|
13
|
+
[key: string]: Transformation[];
|
|
14
|
+
};
|
|
15
|
+
export declare const transformationsByType: {};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
var commonDateAndTimeTransformations = [
|
|
2
|
+
{
|
|
3
|
+
value: "autoformat",
|
|
4
|
+
label: "Autoformat",
|
|
5
|
+
},
|
|
6
|
+
];
|
|
7
|
+
var stringTransformations = [
|
|
8
|
+
{
|
|
9
|
+
value: "sentence_case",
|
|
10
|
+
label: "Sentence Case",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
value: "capitalize",
|
|
14
|
+
label: "Capitalize",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
value: "uppercase",
|
|
18
|
+
label: "Uppercase",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
value: "lowercase",
|
|
22
|
+
label: "Lowercase",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
value: "trim_whitespace",
|
|
26
|
+
label: "Trim Whitespace",
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
var urlTransformations = [
|
|
30
|
+
{
|
|
31
|
+
value: "prefix",
|
|
32
|
+
label: "Prefix",
|
|
33
|
+
options: [
|
|
34
|
+
{
|
|
35
|
+
key: "prefix",
|
|
36
|
+
type: "text",
|
|
37
|
+
tooltip: "Add Prefix (e.g., 'example.com' becomes 'https://example.com')",
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
var floatTransformations = [
|
|
43
|
+
{
|
|
44
|
+
value: "number_of_decimals",
|
|
45
|
+
label: "Number of Decimals",
|
|
46
|
+
options: [
|
|
47
|
+
{
|
|
48
|
+
key: "number_of_decimals",
|
|
49
|
+
type: "number",
|
|
50
|
+
tooltip: "Set Number of Decimals (e.g., '10.567' becomes '10.57' with 2 decimals)",
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
var integerTransformations = [
|
|
56
|
+
{
|
|
57
|
+
value: "round",
|
|
58
|
+
label: "Round",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
value: "floor",
|
|
62
|
+
label: "Floor",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
value: "ceiling",
|
|
66
|
+
label: "Ceiling",
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
var enumTransformations = [
|
|
70
|
+
{
|
|
71
|
+
value: "autodetect",
|
|
72
|
+
label: "Autodetect",
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
export var transformationsByColumnType = {
|
|
76
|
+
string: stringTransformations,
|
|
77
|
+
integer: integerTransformations,
|
|
78
|
+
float: floatTransformations,
|
|
79
|
+
enum: enumTransformations,
|
|
80
|
+
url: urlTransformations,
|
|
81
|
+
date: commonDateAndTimeTransformations,
|
|
82
|
+
datetime: commonDateAndTimeTransformations,
|
|
83
|
+
time: commonDateAndTimeTransformations,
|
|
84
|
+
};
|
|
85
|
+
// the final object will look like this:
|
|
86
|
+
// { autodetect: { value: "autodetect", label: "Autodetect" }, ... }
|
|
87
|
+
export var transformationsByType = Object.values(transformationsByColumnType)
|
|
88
|
+
.reduce(function (acc, arr) { return acc.concat(arr); }, [])
|
|
89
|
+
.reduce(function (result, p) {
|
|
90
|
+
result[p.value] = p;
|
|
91
|
+
return result;
|
|
92
|
+
}, {});
|
|
@@ -44,7 +44,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
44
44
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
45
45
|
};
|
|
46
46
|
import * as yup from "yup";
|
|
47
|
-
import { FieldTypes, mutableValidationTypes, } from "../types";
|
|
47
|
+
import { FieldTypes, mutableValidationTypes, mutableTransformationTypes, } from "../types";
|
|
48
48
|
var commonValidations = [
|
|
49
49
|
{
|
|
50
50
|
value: "regex",
|
|
@@ -252,7 +252,7 @@ export var allowedPatterns = {
|
|
|
252
252
|
};
|
|
253
253
|
export var patternsColumnTypes = Object.keys(allowedPatterns);
|
|
254
254
|
var iso8601Regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
|
|
255
|
-
var
|
|
255
|
+
var validationsSchema = yup
|
|
256
256
|
.mixed()
|
|
257
257
|
.test("validations", "Invalid validations", function (value) {
|
|
258
258
|
var isAnArray = Array.isArray(value);
|
|
@@ -263,6 +263,13 @@ var schema = yup
|
|
|
263
263
|
var optionsPropertyIsNotRequiredFor = [
|
|
264
264
|
"unique_case_insensitive",
|
|
265
265
|
"unique_case_sensitive",
|
|
266
|
+
"integer",
|
|
267
|
+
"boolean",
|
|
268
|
+
"odd",
|
|
269
|
+
"even",
|
|
270
|
+
"email",
|
|
271
|
+
"url",
|
|
272
|
+
"float",
|
|
266
273
|
];
|
|
267
274
|
if (mutableValidationTypes.includes(validation_type)) {
|
|
268
275
|
if (optionsPropertyIsNotRequiredFor.includes(validation_type)) {
|
|
@@ -302,12 +309,85 @@ var schema = yup
|
|
|
302
309
|
}
|
|
303
310
|
return true;
|
|
304
311
|
});
|
|
312
|
+
var transformationsOptionsPropIsRequiredFor = [
|
|
313
|
+
"prefix",
|
|
314
|
+
"number_of_decimals",
|
|
315
|
+
];
|
|
316
|
+
var transformationsSchema = yup
|
|
317
|
+
.array()
|
|
318
|
+
.of(yup.object().shape({
|
|
319
|
+
transformation_type: yup
|
|
320
|
+
.string()
|
|
321
|
+
.oneOf(mutableTransformationTypes)
|
|
322
|
+
.required(),
|
|
323
|
+
options: yup.mixed().when("transformation_type", {
|
|
324
|
+
is: function (type) {
|
|
325
|
+
return transformationsOptionsPropIsRequiredFor.includes(type);
|
|
326
|
+
},
|
|
327
|
+
then: yup
|
|
328
|
+
.object()
|
|
329
|
+
.required("Options is required for this transformation type"),
|
|
330
|
+
}),
|
|
331
|
+
}))
|
|
332
|
+
.test("transformations", "Invalid transformations", function (value, context) {
|
|
333
|
+
var isAnArray = Array.isArray(value);
|
|
334
|
+
if (isAnArray) {
|
|
335
|
+
for (var _i = 0, value_2 = value; _i < value_2.length; _i++) {
|
|
336
|
+
var transformation = value_2[_i];
|
|
337
|
+
var transformation_type = transformation.transformation_type;
|
|
338
|
+
// if user is selecting autoformat (for date, datetime and time) but has not
|
|
339
|
+
// defined pattern, it should throw an error
|
|
340
|
+
if (transformation_type === "autoformat") {
|
|
341
|
+
var parentRecord = context.parent;
|
|
342
|
+
if (!(parentRecord === null || parentRecord === void 0 ? void 0 : parentRecord.pattern)) {
|
|
343
|
+
var columnType = parentRecord.column_type;
|
|
344
|
+
var availablePatternsForColumnType = null;
|
|
345
|
+
var getAvailablePatterns = function (patterns) {
|
|
346
|
+
var patternValues = patterns.map(function (pattern) { return pattern.value; });
|
|
347
|
+
return patternValues.join(", ");
|
|
348
|
+
};
|
|
349
|
+
switch (columnType) {
|
|
350
|
+
case "date":
|
|
351
|
+
availablePatternsForColumnType = getAvailablePatterns(datePatterns);
|
|
352
|
+
break;
|
|
353
|
+
case "datetime":
|
|
354
|
+
availablePatternsForColumnType = getAvailablePatterns(dateTimePatterns);
|
|
355
|
+
break;
|
|
356
|
+
case "time":
|
|
357
|
+
availablePatternsForColumnType = getAvailablePatterns(timePatterns);
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
return this.createError({
|
|
361
|
+
path: "transformations",
|
|
362
|
+
message: "The selected transformation type requires you to specify a pattern to your column. Available patterns for your column_type: ".concat(availablePatternsForColumnType),
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
if (!mutableTransformationTypes.includes(transformation_type)) {
|
|
367
|
+
return this.createError({
|
|
368
|
+
path: "transformations",
|
|
369
|
+
message: "".concat(transformation_type, " is not a valid transformation type. Please check the values you inserted."),
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return true;
|
|
374
|
+
}
|
|
375
|
+
var arrayIsNotDefined = !["undefined", "null"].includes(typeof value);
|
|
376
|
+
if (arrayIsNotDefined && !isAnArray) {
|
|
377
|
+
return this.createError({
|
|
378
|
+
path: "validations",
|
|
379
|
+
message: "Validations must be an array",
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
return true;
|
|
383
|
+
});
|
|
305
384
|
var columnSchema = yup.object().shape({
|
|
306
385
|
column_type: yup.string().oneOf(availableColumnTypes).required(),
|
|
307
386
|
internal_key: yup.string().required(),
|
|
308
387
|
label: yup.string().required(),
|
|
309
388
|
required: yup.boolean().required(),
|
|
310
|
-
validations:
|
|
389
|
+
validations: validationsSchema,
|
|
390
|
+
transformations: transformationsSchema,
|
|
311
391
|
});
|
|
312
392
|
var dateColumnSchema = columnSchema.shape({
|
|
313
393
|
pattern: yup.string().oneOf(datePatterns.map(function (p) { return p.value; })),
|
package/lib/esm/common/index.js
CHANGED
|
@@ -41,4 +41,5 @@ export * from "./Spinner";
|
|
|
41
41
|
export * from "./TooltipProvider";
|
|
42
42
|
export * from "./ConfirmationModal";
|
|
43
43
|
export * from "./columnsValidations";
|
|
44
|
+
export * from "./columnsTransformations";
|
|
44
45
|
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
|