@commercetools-frontend-extensions/export-resources-modal 4.8.0 → 4.8.2
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 +35 -27
- package/dist/commercetools-frontend-extensions-export-resources-modal.cjs.prod.js +35 -27
- package/dist/commercetools-frontend-extensions-export-resources-modal.esm.js +35 -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,35 @@ 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 !== undefined || 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
|
+
return Boolean(isQueryFilter(filtersObject.filters) || isSearchFilter(filtersObject.filters) || filtersObject.where && _trimInstanceProperty__default["default"](_context2 = filtersObject.where).call(_context2) !== '');
|
|
792
|
+
}
|
|
793
|
+
function areFiltersApplied(filtersObject) {
|
|
794
|
+
var _context3;
|
|
795
|
+
if (!filtersObject) {
|
|
796
|
+
return false;
|
|
797
|
+
}
|
|
798
|
+
if (filtersObject.where && _trimInstanceProperty__default["default"](_context3 = filtersObject.where).call(_context3) !== '') {
|
|
799
|
+
return true;
|
|
800
|
+
}
|
|
801
|
+
if (isQueryFilter(filtersObject.filters)) {
|
|
802
|
+
return Boolean(filtersObject.filters.query);
|
|
803
|
+
}
|
|
804
|
+
if (isSearchFilter(filtersObject.filters)) {
|
|
805
|
+
const _filters = filtersObject.filters;
|
|
806
|
+
return Boolean(_filters.filters?.length || _filters.fullText?.text?.trim());
|
|
807
|
+
}
|
|
808
|
+
return false;
|
|
796
809
|
}
|
|
797
810
|
function getInitialExportType(args) {
|
|
798
811
|
if (args.selectedResourceIds?.length) {
|
|
@@ -977,8 +990,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
977
990
|
locales = _ref.locales,
|
|
978
991
|
filters = _ref.filters,
|
|
979
992
|
where = _ref.where,
|
|
980
|
-
fillRows = _ref.fillRows
|
|
981
|
-
fullText = _ref.fullText;
|
|
993
|
+
fillRows = _ref.fillRows;
|
|
982
994
|
const uri = `/${projectKey}/export-operations`;
|
|
983
995
|
const response = await asyncDispatchFn(sdk.actions.post({
|
|
984
996
|
mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.EXPORT,
|
|
@@ -996,8 +1008,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
996
1008
|
// Query predicate
|
|
997
1009
|
where,
|
|
998
1010
|
// Search API filters or Category API filters
|
|
999
|
-
filters
|
|
1000
|
-
fullText
|
|
1011
|
+
filters
|
|
1001
1012
|
}
|
|
1002
1013
|
}));
|
|
1003
1014
|
if (!response || typeof response !== 'object' || !('state' in response)) {
|
|
@@ -1040,16 +1051,14 @@ const useStartExportOperation = props => {
|
|
|
1040
1051
|
const fields = extractFieldNamesFromGroups(values.groups);
|
|
1041
1052
|
let where = undefined;
|
|
1042
1053
|
let filters = undefined;
|
|
1043
|
-
let fullText = undefined;
|
|
1044
1054
|
if (exportType === EXPORT_TYPES.SELECTED && props.selectedResourceIds?.length) {
|
|
1045
1055
|
where = buildSelectedExportFilters(props.selectedResourceIds);
|
|
1046
|
-
} else if (exportType === EXPORT_TYPES.FILTERED) {
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
fullText = _props$filters.fullText;
|
|
1056
|
+
} else if (exportType === EXPORT_TYPES.FILTERED && props.filters) {
|
|
1057
|
+
where = props.filters.where;
|
|
1058
|
+
if (isQueryFilter(props.filters.filters)) {
|
|
1059
|
+
filters = props.filters.filters;
|
|
1060
|
+
} else if (isSearchFilter(props.filters.filters)) {
|
|
1061
|
+
filters = props.filters.filters;
|
|
1053
1062
|
}
|
|
1054
1063
|
}
|
|
1055
1064
|
const response = await createExportOperation({
|
|
@@ -1061,8 +1070,7 @@ const useStartExportOperation = props => {
|
|
|
1061
1070
|
fillRows: values.fillRows,
|
|
1062
1071
|
fields,
|
|
1063
1072
|
where,
|
|
1064
|
-
filters
|
|
1065
|
-
fullText
|
|
1073
|
+
filters
|
|
1066
1074
|
}, asyncDispatch);
|
|
1067
1075
|
switch (response.state) {
|
|
1068
1076
|
case EXPORT_OPERATION_STATES.QUEUED:
|
|
@@ -777,22 +777,35 @@ 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 !== undefined || 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
|
+
return Boolean(isQueryFilter(filtersObject.filters) || isSearchFilter(filtersObject.filters) || filtersObject.where && _trimInstanceProperty__default["default"](_context2 = filtersObject.where).call(_context2) !== '');
|
|
792
|
+
}
|
|
793
|
+
function areFiltersApplied(filtersObject) {
|
|
794
|
+
var _context3;
|
|
795
|
+
if (!filtersObject) {
|
|
796
|
+
return false;
|
|
797
|
+
}
|
|
798
|
+
if (filtersObject.where && _trimInstanceProperty__default["default"](_context3 = filtersObject.where).call(_context3) !== '') {
|
|
799
|
+
return true;
|
|
800
|
+
}
|
|
801
|
+
if (isQueryFilter(filtersObject.filters)) {
|
|
802
|
+
return Boolean(filtersObject.filters.query);
|
|
803
|
+
}
|
|
804
|
+
if (isSearchFilter(filtersObject.filters)) {
|
|
805
|
+
const _filters = filtersObject.filters;
|
|
806
|
+
return Boolean(_filters.filters?.length || _filters.fullText?.text?.trim());
|
|
807
|
+
}
|
|
808
|
+
return false;
|
|
796
809
|
}
|
|
797
810
|
function getInitialExportType(args) {
|
|
798
811
|
if (args.selectedResourceIds?.length) {
|
|
@@ -977,8 +990,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
977
990
|
locales = _ref.locales,
|
|
978
991
|
filters = _ref.filters,
|
|
979
992
|
where = _ref.where,
|
|
980
|
-
fillRows = _ref.fillRows
|
|
981
|
-
fullText = _ref.fullText;
|
|
993
|
+
fillRows = _ref.fillRows;
|
|
982
994
|
const uri = `/${projectKey}/export-operations`;
|
|
983
995
|
const response = await asyncDispatchFn(sdk.actions.post({
|
|
984
996
|
mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.EXPORT,
|
|
@@ -996,8 +1008,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
996
1008
|
// Query predicate
|
|
997
1009
|
where,
|
|
998
1010
|
// Search API filters or Category API filters
|
|
999
|
-
filters
|
|
1000
|
-
fullText
|
|
1011
|
+
filters
|
|
1001
1012
|
}
|
|
1002
1013
|
}));
|
|
1003
1014
|
if (!response || typeof response !== 'object' || !('state' in response)) {
|
|
@@ -1040,16 +1051,14 @@ const useStartExportOperation = props => {
|
|
|
1040
1051
|
const fields = extractFieldNamesFromGroups(values.groups);
|
|
1041
1052
|
let where = undefined;
|
|
1042
1053
|
let filters = undefined;
|
|
1043
|
-
let fullText = undefined;
|
|
1044
1054
|
if (exportType === EXPORT_TYPES.SELECTED && props.selectedResourceIds?.length) {
|
|
1045
1055
|
where = buildSelectedExportFilters(props.selectedResourceIds);
|
|
1046
|
-
} else if (exportType === EXPORT_TYPES.FILTERED) {
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
fullText = _props$filters.fullText;
|
|
1056
|
+
} else if (exportType === EXPORT_TYPES.FILTERED && props.filters) {
|
|
1057
|
+
where = props.filters.where;
|
|
1058
|
+
if (isQueryFilter(props.filters.filters)) {
|
|
1059
|
+
filters = props.filters.filters;
|
|
1060
|
+
} else if (isSearchFilter(props.filters.filters)) {
|
|
1061
|
+
filters = props.filters.filters;
|
|
1053
1062
|
}
|
|
1054
1063
|
}
|
|
1055
1064
|
const response = await createExportOperation({
|
|
@@ -1061,8 +1070,7 @@ const useStartExportOperation = props => {
|
|
|
1061
1070
|
fillRows: values.fillRows,
|
|
1062
1071
|
fields,
|
|
1063
1072
|
where,
|
|
1064
|
-
filters
|
|
1065
|
-
fullText
|
|
1073
|
+
filters
|
|
1066
1074
|
}, asyncDispatch);
|
|
1067
1075
|
switch (response.state) {
|
|
1068
1076
|
case EXPORT_OPERATION_STATES.QUEUED:
|
|
@@ -738,22 +738,35 @@ 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 !== undefined || 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
|
+
return Boolean(isQueryFilter(filtersObject.filters) || isSearchFilter(filtersObject.filters) || filtersObject.where && _trimInstanceProperty(_context2 = filtersObject.where).call(_context2) !== '');
|
|
753
|
+
}
|
|
754
|
+
function areFiltersApplied(filtersObject) {
|
|
755
|
+
var _context3;
|
|
756
|
+
if (!filtersObject) {
|
|
757
|
+
return false;
|
|
758
|
+
}
|
|
759
|
+
if (filtersObject.where && _trimInstanceProperty(_context3 = filtersObject.where).call(_context3) !== '') {
|
|
760
|
+
return true;
|
|
761
|
+
}
|
|
762
|
+
if (isQueryFilter(filtersObject.filters)) {
|
|
763
|
+
return Boolean(filtersObject.filters.query);
|
|
764
|
+
}
|
|
765
|
+
if (isSearchFilter(filtersObject.filters)) {
|
|
766
|
+
const _filters = filtersObject.filters;
|
|
767
|
+
return Boolean(_filters.filters?.length || _filters.fullText?.text?.trim());
|
|
768
|
+
}
|
|
769
|
+
return false;
|
|
757
770
|
}
|
|
758
771
|
function getInitialExportType(args) {
|
|
759
772
|
if (args.selectedResourceIds?.length) {
|
|
@@ -938,8 +951,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
938
951
|
locales = _ref.locales,
|
|
939
952
|
filters = _ref.filters,
|
|
940
953
|
where = _ref.where,
|
|
941
|
-
fillRows = _ref.fillRows
|
|
942
|
-
fullText = _ref.fullText;
|
|
954
|
+
fillRows = _ref.fillRows;
|
|
943
955
|
const uri = `/${projectKey}/export-operations`;
|
|
944
956
|
const response = await asyncDispatchFn(actions.post({
|
|
945
957
|
mcApiProxyTarget: MC_API_PROXY_TARGETS.EXPORT,
|
|
@@ -957,8 +969,7 @@ async function createExportOperation(_ref, asyncDispatchFn) {
|
|
|
957
969
|
// Query predicate
|
|
958
970
|
where,
|
|
959
971
|
// Search API filters or Category API filters
|
|
960
|
-
filters
|
|
961
|
-
fullText
|
|
972
|
+
filters
|
|
962
973
|
}
|
|
963
974
|
}));
|
|
964
975
|
if (!response || typeof response !== 'object' || !('state' in response)) {
|
|
@@ -1001,16 +1012,14 @@ const useStartExportOperation = props => {
|
|
|
1001
1012
|
const fields = extractFieldNamesFromGroups(values.groups);
|
|
1002
1013
|
let where = undefined;
|
|
1003
1014
|
let filters = undefined;
|
|
1004
|
-
let fullText = undefined;
|
|
1005
1015
|
if (exportType === EXPORT_TYPES.SELECTED && props.selectedResourceIds?.length) {
|
|
1006
1016
|
where = buildSelectedExportFilters(props.selectedResourceIds);
|
|
1007
|
-
} else if (exportType === EXPORT_TYPES.FILTERED) {
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
fullText = _props$filters.fullText;
|
|
1017
|
+
} else if (exportType === EXPORT_TYPES.FILTERED && props.filters) {
|
|
1018
|
+
where = props.filters.where;
|
|
1019
|
+
if (isQueryFilter(props.filters.filters)) {
|
|
1020
|
+
filters = props.filters.filters;
|
|
1021
|
+
} else if (isSearchFilter(props.filters.filters)) {
|
|
1022
|
+
filters = props.filters.filters;
|
|
1014
1023
|
}
|
|
1015
1024
|
}
|
|
1016
1025
|
const response = await createExportOperation({
|
|
@@ -1022,8 +1031,7 @@ const useStartExportOperation = props => {
|
|
|
1022
1031
|
fillRows: values.fillRows,
|
|
1023
1032
|
fields,
|
|
1024
1033
|
where,
|
|
1025
|
-
filters
|
|
1026
|
-
fullText
|
|
1034
|
+
filters
|
|
1027
1035
|
}, asyncDispatch);
|
|
1028
1036
|
switch (response.state) {
|
|
1029
1037
|
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