@commercetools-frontend-extensions/export-resources-modal 4.8.0 → 4.8.1
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/README.md +7 -6
- package/dist/commercetools-frontend-extensions-export-resources-modal.cjs.dev.js +48 -27
- package/dist/commercetools-frontend-extensions-export-resources-modal.cjs.prod.js +48 -27
- package/dist/commercetools-frontend-extensions-export-resources-modal.esm.js +48 -27
- package/dist/declarations/src/@types/export-api.d.ts +2 -3
- package/dist/declarations/src/@types/export-resources-modal-types.d.ts +9 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -129,12 +129,13 @@ import ExportResourcesModal from '@commercetools-frontend-extensions/export-reso
|
|
|
129
129
|
outputFormat="csv"
|
|
130
130
|
resourceType="category"
|
|
131
131
|
filters={{
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
{
|
|
133
|
+
filters: [ 'key = "category-key"'],
|
|
134
|
+
fullText: {
|
|
135
|
+
text: 'category-text',
|
|
136
|
+
locale: 'en'
|
|
137
|
+
}
|
|
138
|
+
},
|
|
138
139
|
total: 20
|
|
139
140
|
}}
|
|
140
141
|
totalResourcesCount={143}
|
|
@@ -777,22 +777,45 @@ function buildSelectedExportFilters(selectedResourceIds) {
|
|
|
777
777
|
const formattedIds = _mapInstanceProperty__default["default"](selectedResourceIds).call(selectedResourceIds, id => `"${id}"`).join(', ');
|
|
778
778
|
return `id in (${formattedIds})`;
|
|
779
779
|
}
|
|
780
|
-
function
|
|
781
|
-
|
|
782
|
-
const hasFilters = 'filters' in filters;
|
|
783
|
-
const hasFullText = 'fullText' in filters;
|
|
784
|
-
// Ensure only one of `where` or `filters` is applied but not both or none
|
|
785
|
-
const validFilterState = hasWhere && !hasFilters || !hasWhere && hasFilters || hasFullText && filters?.fullText?.text?.trim() !== '';
|
|
786
|
-
return validFilterState;
|
|
780
|
+
function isQueryFilter(filters) {
|
|
781
|
+
return filters?.query !== undefined;
|
|
787
782
|
}
|
|
788
|
-
function
|
|
789
|
-
|
|
783
|
+
function isSearchFilter(filters) {
|
|
784
|
+
return filters?.filters?.length || filters?.fullText !== undefined;
|
|
785
|
+
}
|
|
786
|
+
function validateFilters(filtersObject) {
|
|
787
|
+
var _context2;
|
|
788
|
+
if (filtersObject.where && filtersObject.filters) {
|
|
790
789
|
return false;
|
|
791
790
|
}
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
791
|
+
if (isQueryFilter(filtersObject.filters)) {
|
|
792
|
+
return Boolean(filtersObject.filters?.query);
|
|
793
|
+
}
|
|
794
|
+
if (isSearchFilter(filtersObject.filters)) {
|
|
795
|
+
const searchFilters = filtersObject.filters;
|
|
796
|
+
return Boolean(searchFilters.filters?.length || searchFilters.fullText?.text?.trim());
|
|
797
|
+
}
|
|
798
|
+
if (filtersObject.where && _trimInstanceProperty__default["default"](_context2 = filtersObject.where).call(_context2) !== '') {
|
|
799
|
+
return true;
|
|
800
|
+
}
|
|
801
|
+
return false;
|
|
802
|
+
}
|
|
803
|
+
function areFiltersApplied(filtersObject) {
|
|
804
|
+
var _context3;
|
|
805
|
+
if (!filtersObject) {
|
|
806
|
+
return false;
|
|
807
|
+
}
|
|
808
|
+
if (filtersObject.where && _trimInstanceProperty__default["default"](_context3 = filtersObject.where).call(_context3) !== '') {
|
|
809
|
+
return true;
|
|
810
|
+
}
|
|
811
|
+
if (filtersObject.filters && 'query' in filtersObject.filters) {
|
|
812
|
+
return Boolean(filtersObject.filters.query);
|
|
813
|
+
}
|
|
814
|
+
if (filtersObject.filters && ('filters' in filtersObject.filters || 'fullText' in filtersObject.filters)) {
|
|
815
|
+
const _filters = filtersObject.filters;
|
|
816
|
+
return Boolean(_filters.filters?.length || _filters.fullText?.text?.trim());
|
|
817
|
+
}
|
|
818
|
+
return false;
|
|
796
819
|
}
|
|
797
820
|
function getInitialExportType(args) {
|
|
798
821
|
if (args.selectedResourceIds?.length) {
|
|
@@ -977,8 +1000,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
977
1000
|
locales = _ref.locales,
|
|
978
1001
|
filters = _ref.filters,
|
|
979
1002
|
where = _ref.where,
|
|
980
|
-
fillRows = _ref.fillRows
|
|
981
|
-
fullText = _ref.fullText;
|
|
1003
|
+
fillRows = _ref.fillRows;
|
|
982
1004
|
const uri = `/${projectKey}/export-operations`;
|
|
983
1005
|
const response = await asyncDispatchFn(sdk.actions.post({
|
|
984
1006
|
mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.EXPORT,
|
|
@@ -996,8 +1018,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
996
1018
|
// Query predicate
|
|
997
1019
|
where,
|
|
998
1020
|
// Search API filters or Category API filters
|
|
999
|
-
filters
|
|
1000
|
-
fullText
|
|
1021
|
+
filters
|
|
1001
1022
|
}
|
|
1002
1023
|
}));
|
|
1003
1024
|
if (!response || typeof response !== 'object' || !('state' in response)) {
|
|
@@ -1040,16 +1061,17 @@ const useStartExportOperation = props => {
|
|
|
1040
1061
|
const fields = extractFieldNamesFromGroups(values.groups);
|
|
1041
1062
|
let where = undefined;
|
|
1042
1063
|
let filters = undefined;
|
|
1043
|
-
let fullText = undefined;
|
|
1044
1064
|
if (exportType === EXPORT_TYPES.SELECTED && props.selectedResourceIds?.length) {
|
|
1045
1065
|
where = buildSelectedExportFilters(props.selectedResourceIds);
|
|
1046
|
-
} else if (exportType === EXPORT_TYPES.FILTERED) {
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
filters =
|
|
1051
|
-
|
|
1052
|
-
|
|
1066
|
+
} else if (exportType === EXPORT_TYPES.FILTERED && props.filters) {
|
|
1067
|
+
where = props.filters.where;
|
|
1068
|
+
if (isQueryFilter(props.filters.filters)) {
|
|
1069
|
+
const _filters = props.filters.filters;
|
|
1070
|
+
filters = {
|
|
1071
|
+
query: _filters.query
|
|
1072
|
+
};
|
|
1073
|
+
} else if (isSearchFilter(props.filters.filters)) {
|
|
1074
|
+
filters = props.filters.filters;
|
|
1053
1075
|
}
|
|
1054
1076
|
}
|
|
1055
1077
|
const response = await createExportOperation({
|
|
@@ -1061,8 +1083,7 @@ const useStartExportOperation = props => {
|
|
|
1061
1083
|
fillRows: values.fillRows,
|
|
1062
1084
|
fields,
|
|
1063
1085
|
where,
|
|
1064
|
-
filters
|
|
1065
|
-
fullText
|
|
1086
|
+
filters
|
|
1066
1087
|
}, asyncDispatch);
|
|
1067
1088
|
switch (response.state) {
|
|
1068
1089
|
case EXPORT_OPERATION_STATES.QUEUED:
|
|
@@ -777,22 +777,45 @@ function buildSelectedExportFilters(selectedResourceIds) {
|
|
|
777
777
|
const formattedIds = _mapInstanceProperty__default["default"](selectedResourceIds).call(selectedResourceIds, id => `"${id}"`).join(', ');
|
|
778
778
|
return `id in (${formattedIds})`;
|
|
779
779
|
}
|
|
780
|
-
function
|
|
781
|
-
|
|
782
|
-
const hasFilters = 'filters' in filters;
|
|
783
|
-
const hasFullText = 'fullText' in filters;
|
|
784
|
-
// Ensure only one of `where` or `filters` is applied but not both or none
|
|
785
|
-
const validFilterState = hasWhere && !hasFilters || !hasWhere && hasFilters || hasFullText && filters?.fullText?.text?.trim() !== '';
|
|
786
|
-
return validFilterState;
|
|
780
|
+
function isQueryFilter(filters) {
|
|
781
|
+
return filters?.query !== undefined;
|
|
787
782
|
}
|
|
788
|
-
function
|
|
789
|
-
|
|
783
|
+
function isSearchFilter(filters) {
|
|
784
|
+
return filters?.filters?.length || filters?.fullText !== undefined;
|
|
785
|
+
}
|
|
786
|
+
function validateFilters(filtersObject) {
|
|
787
|
+
var _context2;
|
|
788
|
+
if (filtersObject.where && filtersObject.filters) {
|
|
790
789
|
return false;
|
|
791
790
|
}
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
791
|
+
if (isQueryFilter(filtersObject.filters)) {
|
|
792
|
+
return Boolean(filtersObject.filters?.query);
|
|
793
|
+
}
|
|
794
|
+
if (isSearchFilter(filtersObject.filters)) {
|
|
795
|
+
const searchFilters = filtersObject.filters;
|
|
796
|
+
return Boolean(searchFilters.filters?.length || searchFilters.fullText?.text?.trim());
|
|
797
|
+
}
|
|
798
|
+
if (filtersObject.where && _trimInstanceProperty__default["default"](_context2 = filtersObject.where).call(_context2) !== '') {
|
|
799
|
+
return true;
|
|
800
|
+
}
|
|
801
|
+
return false;
|
|
802
|
+
}
|
|
803
|
+
function areFiltersApplied(filtersObject) {
|
|
804
|
+
var _context3;
|
|
805
|
+
if (!filtersObject) {
|
|
806
|
+
return false;
|
|
807
|
+
}
|
|
808
|
+
if (filtersObject.where && _trimInstanceProperty__default["default"](_context3 = filtersObject.where).call(_context3) !== '') {
|
|
809
|
+
return true;
|
|
810
|
+
}
|
|
811
|
+
if (filtersObject.filters && 'query' in filtersObject.filters) {
|
|
812
|
+
return Boolean(filtersObject.filters.query);
|
|
813
|
+
}
|
|
814
|
+
if (filtersObject.filters && ('filters' in filtersObject.filters || 'fullText' in filtersObject.filters)) {
|
|
815
|
+
const _filters = filtersObject.filters;
|
|
816
|
+
return Boolean(_filters.filters?.length || _filters.fullText?.text?.trim());
|
|
817
|
+
}
|
|
818
|
+
return false;
|
|
796
819
|
}
|
|
797
820
|
function getInitialExportType(args) {
|
|
798
821
|
if (args.selectedResourceIds?.length) {
|
|
@@ -977,8 +1000,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
977
1000
|
locales = _ref.locales,
|
|
978
1001
|
filters = _ref.filters,
|
|
979
1002
|
where = _ref.where,
|
|
980
|
-
fillRows = _ref.fillRows
|
|
981
|
-
fullText = _ref.fullText;
|
|
1003
|
+
fillRows = _ref.fillRows;
|
|
982
1004
|
const uri = `/${projectKey}/export-operations`;
|
|
983
1005
|
const response = await asyncDispatchFn(sdk.actions.post({
|
|
984
1006
|
mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.EXPORT,
|
|
@@ -996,8 +1018,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
996
1018
|
// Query predicate
|
|
997
1019
|
where,
|
|
998
1020
|
// Search API filters or Category API filters
|
|
999
|
-
filters
|
|
1000
|
-
fullText
|
|
1021
|
+
filters
|
|
1001
1022
|
}
|
|
1002
1023
|
}));
|
|
1003
1024
|
if (!response || typeof response !== 'object' || !('state' in response)) {
|
|
@@ -1040,16 +1061,17 @@ const useStartExportOperation = props => {
|
|
|
1040
1061
|
const fields = extractFieldNamesFromGroups(values.groups);
|
|
1041
1062
|
let where = undefined;
|
|
1042
1063
|
let filters = undefined;
|
|
1043
|
-
let fullText = undefined;
|
|
1044
1064
|
if (exportType === EXPORT_TYPES.SELECTED && props.selectedResourceIds?.length) {
|
|
1045
1065
|
where = buildSelectedExportFilters(props.selectedResourceIds);
|
|
1046
|
-
} else if (exportType === EXPORT_TYPES.FILTERED) {
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
filters =
|
|
1051
|
-
|
|
1052
|
-
|
|
1066
|
+
} else if (exportType === EXPORT_TYPES.FILTERED && props.filters) {
|
|
1067
|
+
where = props.filters.where;
|
|
1068
|
+
if (isQueryFilter(props.filters.filters)) {
|
|
1069
|
+
const _filters = props.filters.filters;
|
|
1070
|
+
filters = {
|
|
1071
|
+
query: _filters.query
|
|
1072
|
+
};
|
|
1073
|
+
} else if (isSearchFilter(props.filters.filters)) {
|
|
1074
|
+
filters = props.filters.filters;
|
|
1053
1075
|
}
|
|
1054
1076
|
}
|
|
1055
1077
|
const response = await createExportOperation({
|
|
@@ -1061,8 +1083,7 @@ const useStartExportOperation = props => {
|
|
|
1061
1083
|
fillRows: values.fillRows,
|
|
1062
1084
|
fields,
|
|
1063
1085
|
where,
|
|
1064
|
-
filters
|
|
1065
|
-
fullText
|
|
1086
|
+
filters
|
|
1066
1087
|
}, asyncDispatch);
|
|
1067
1088
|
switch (response.state) {
|
|
1068
1089
|
case EXPORT_OPERATION_STATES.QUEUED:
|
|
@@ -738,22 +738,45 @@ function buildSelectedExportFilters(selectedResourceIds) {
|
|
|
738
738
|
const formattedIds = _mapInstanceProperty(selectedResourceIds).call(selectedResourceIds, id => `"${id}"`).join(', ');
|
|
739
739
|
return `id in (${formattedIds})`;
|
|
740
740
|
}
|
|
741
|
-
function
|
|
742
|
-
|
|
743
|
-
const hasFilters = 'filters' in filters;
|
|
744
|
-
const hasFullText = 'fullText' in filters;
|
|
745
|
-
// Ensure only one of `where` or `filters` is applied but not both or none
|
|
746
|
-
const validFilterState = hasWhere && !hasFilters || !hasWhere && hasFilters || hasFullText && filters?.fullText?.text?.trim() !== '';
|
|
747
|
-
return validFilterState;
|
|
741
|
+
function isQueryFilter(filters) {
|
|
742
|
+
return filters?.query !== undefined;
|
|
748
743
|
}
|
|
749
|
-
function
|
|
750
|
-
|
|
744
|
+
function isSearchFilter(filters) {
|
|
745
|
+
return filters?.filters?.length || filters?.fullText !== undefined;
|
|
746
|
+
}
|
|
747
|
+
function validateFilters(filtersObject) {
|
|
748
|
+
var _context2;
|
|
749
|
+
if (filtersObject.where && filtersObject.filters) {
|
|
751
750
|
return false;
|
|
752
751
|
}
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
752
|
+
if (isQueryFilter(filtersObject.filters)) {
|
|
753
|
+
return Boolean(filtersObject.filters?.query);
|
|
754
|
+
}
|
|
755
|
+
if (isSearchFilter(filtersObject.filters)) {
|
|
756
|
+
const searchFilters = filtersObject.filters;
|
|
757
|
+
return Boolean(searchFilters.filters?.length || searchFilters.fullText?.text?.trim());
|
|
758
|
+
}
|
|
759
|
+
if (filtersObject.where && _trimInstanceProperty(_context2 = filtersObject.where).call(_context2) !== '') {
|
|
760
|
+
return true;
|
|
761
|
+
}
|
|
762
|
+
return false;
|
|
763
|
+
}
|
|
764
|
+
function areFiltersApplied(filtersObject) {
|
|
765
|
+
var _context3;
|
|
766
|
+
if (!filtersObject) {
|
|
767
|
+
return false;
|
|
768
|
+
}
|
|
769
|
+
if (filtersObject.where && _trimInstanceProperty(_context3 = filtersObject.where).call(_context3) !== '') {
|
|
770
|
+
return true;
|
|
771
|
+
}
|
|
772
|
+
if (filtersObject.filters && 'query' in filtersObject.filters) {
|
|
773
|
+
return Boolean(filtersObject.filters.query);
|
|
774
|
+
}
|
|
775
|
+
if (filtersObject.filters && ('filters' in filtersObject.filters || 'fullText' in filtersObject.filters)) {
|
|
776
|
+
const _filters = filtersObject.filters;
|
|
777
|
+
return Boolean(_filters.filters?.length || _filters.fullText?.text?.trim());
|
|
778
|
+
}
|
|
779
|
+
return false;
|
|
757
780
|
}
|
|
758
781
|
function getInitialExportType(args) {
|
|
759
782
|
if (args.selectedResourceIds?.length) {
|
|
@@ -938,8 +961,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
938
961
|
locales = _ref.locales,
|
|
939
962
|
filters = _ref.filters,
|
|
940
963
|
where = _ref.where,
|
|
941
|
-
fillRows = _ref.fillRows
|
|
942
|
-
fullText = _ref.fullText;
|
|
964
|
+
fillRows = _ref.fillRows;
|
|
943
965
|
const uri = `/${projectKey}/export-operations`;
|
|
944
966
|
const response = await asyncDispatchFn(actions.post({
|
|
945
967
|
mcApiProxyTarget: MC_API_PROXY_TARGETS.EXPORT,
|
|
@@ -957,8 +979,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
957
979
|
// Query predicate
|
|
958
980
|
where,
|
|
959
981
|
// Search API filters or Category API filters
|
|
960
|
-
filters
|
|
961
|
-
fullText
|
|
982
|
+
filters
|
|
962
983
|
}
|
|
963
984
|
}));
|
|
964
985
|
if (!response || typeof response !== 'object' || !('state' in response)) {
|
|
@@ -1001,16 +1022,17 @@ const useStartExportOperation = props => {
|
|
|
1001
1022
|
const fields = extractFieldNamesFromGroups(values.groups);
|
|
1002
1023
|
let where = undefined;
|
|
1003
1024
|
let filters = undefined;
|
|
1004
|
-
let fullText = undefined;
|
|
1005
1025
|
if (exportType === EXPORT_TYPES.SELECTED && props.selectedResourceIds?.length) {
|
|
1006
1026
|
where = buildSelectedExportFilters(props.selectedResourceIds);
|
|
1007
|
-
} else if (exportType === EXPORT_TYPES.FILTERED) {
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
filters =
|
|
1012
|
-
|
|
1013
|
-
|
|
1027
|
+
} else if (exportType === EXPORT_TYPES.FILTERED && props.filters) {
|
|
1028
|
+
where = props.filters.where;
|
|
1029
|
+
if (isQueryFilter(props.filters.filters)) {
|
|
1030
|
+
const _filters = props.filters.filters;
|
|
1031
|
+
filters = {
|
|
1032
|
+
query: _filters.query
|
|
1033
|
+
};
|
|
1034
|
+
} else if (isSearchFilter(props.filters.filters)) {
|
|
1035
|
+
filters = props.filters.filters;
|
|
1014
1036
|
}
|
|
1015
1037
|
}
|
|
1016
1038
|
const response = await createExportOperation({
|
|
@@ -1022,8 +1044,7 @@ const useStartExportOperation = props => {
|
|
|
1022
1044
|
fillRows: values.fillRows,
|
|
1023
1045
|
fields,
|
|
1024
1046
|
where,
|
|
1025
|
-
filters
|
|
1026
|
-
fullText
|
|
1047
|
+
filters
|
|
1027
1048
|
}, asyncDispatch);
|
|
1028
1049
|
switch (response.state) {
|
|
1029
1050
|
case EXPORT_OPERATION_STATES.QUEUED:
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { QueryFilter, SearchFilter } from "./export-resources-modal-types.js";
|
|
1
2
|
export interface ExportApiRequest {
|
|
2
3
|
projectKey: string;
|
|
3
4
|
resourceType: string;
|
|
@@ -5,9 +6,7 @@ export interface ExportApiRequest {
|
|
|
5
6
|
fileFormat: string;
|
|
6
7
|
fields: string[];
|
|
7
8
|
locales: string[];
|
|
8
|
-
filters?:
|
|
9
|
-
query: Record<string, unknown>;
|
|
10
|
-
} | Array<string>;
|
|
9
|
+
filters?: QueryFilter | SearchFilter;
|
|
11
10
|
where?: string;
|
|
12
11
|
fillRows?: boolean;
|
|
13
12
|
fullText?: {
|
|
@@ -32,14 +32,18 @@ export interface ExportResourcesModalProps {
|
|
|
32
32
|
onExportSuccess?: () => void;
|
|
33
33
|
}
|
|
34
34
|
export type ExportType = keyof typeof EXPORT_TYPES;
|
|
35
|
-
export type
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
export type QueryFilter = {
|
|
36
|
+
query: Record<string, unknown>;
|
|
37
|
+
};
|
|
38
|
+
export type SearchFilter = {
|
|
39
|
+
filters?: string[];
|
|
40
40
|
fullText?: {
|
|
41
41
|
text: string;
|
|
42
42
|
locale: string;
|
|
43
43
|
};
|
|
44
|
+
};
|
|
45
|
+
export type Filters = {
|
|
46
|
+
filters?: QueryFilter | SearchFilter;
|
|
47
|
+
where?: string;
|
|
44
48
|
total: number;
|
|
45
49
|
};
|
package/package.json
CHANGED