@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 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
- where: 'key = "category-key"',
133
- filters: { query: 'key = "category-key"' } | [ 'key = "category-key"']
134
- fullText: {
135
- text: 'category-text',
136
- locale: 'en'
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 validateFilters(filters) {
781
- const hasWhere = 'where' in filters;
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 areFiltersApplied(filterObject) {
789
- if (!filterObject) {
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
- let filters = filterObject.filters,
793
- where = filterObject.where;
794
- let hasFilters = where && _trimInstanceProperty__default["default"](where).call(where) !== '' || Boolean(_Array$isArray__default["default"](filters) && filters.length > 0 || typeof filters === 'object' && _Object$keys__default["default"](filters).length > 0);
795
- return hasFilters;
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
- if (props.filters) {
1048
- ;
1049
- var _props$filters = props.filters;
1050
- filters = _props$filters.filters;
1051
- where = _props$filters.where;
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 validateFilters(filters) {
781
- const hasWhere = 'where' in filters;
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 areFiltersApplied(filterObject) {
789
- if (!filterObject) {
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
- let filters = filterObject.filters,
793
- where = filterObject.where;
794
- let hasFilters = where && _trimInstanceProperty__default["default"](where).call(where) !== '' || Boolean(_Array$isArray__default["default"](filters) && filters.length > 0 || typeof filters === 'object' && _Object$keys__default["default"](filters).length > 0);
795
- return hasFilters;
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
- if (props.filters) {
1048
- ;
1049
- var _props$filters = props.filters;
1050
- filters = _props$filters.filters;
1051
- where = _props$filters.where;
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 validateFilters(filters) {
742
- const hasWhere = 'where' in filters;
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 areFiltersApplied(filterObject) {
750
- if (!filterObject) {
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
- let filters = filterObject.filters,
754
- where = filterObject.where;
755
- let hasFilters = where && _trimInstanceProperty(where).call(where) !== '' || Boolean(_Array$isArray(filters) && filters.length > 0 || typeof filters === 'object' && _Object$keys(filters).length > 0);
756
- return hasFilters;
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
- if (props.filters) {
1009
- ;
1010
- var _props$filters = props.filters;
1011
- filters = _props$filters.filters;
1012
- where = _props$filters.where;
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 Filters = {
36
- filters?: {
37
- query: Record<string, unknown>;
38
- } | Array<string>;
39
- where?: string;
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@commercetools-frontend-extensions/export-resources-modal",
3
3
  "description": "Shared export modal for exporting resources",
4
- "version": "4.8.0",
4
+ "version": "4.8.2",
5
5
  "license": "BSD-3-Clause",
6
6
  "publishConfig": {
7
7
  "access": "public"