@commercetools-frontend-extensions/export-resources-modal 1.3.8 → 1.4.0

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.
@@ -146,6 +146,8 @@ let UnexpectedResourceTypeError = /*#__PURE__*/function (_Error) {
146
146
  return _createClass(UnexpectedResourceTypeError);
147
147
  }( /*#__PURE__*/_wrapNativeSuper(Error));
148
148
 
149
+ function ownKeys$b(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
150
+ function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var _context4, _context5; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context4 = ownKeys$b(Object(t), !0)).call(_context4, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context5 = ownKeys$b(Object(t))).call(_context5, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
149
151
  function resourceTypeToPlural(_ref) {
150
152
  let resourceType = _ref.resourceType,
151
153
  _ref$isUpperCase = _ref.isUpperCase,
@@ -179,6 +181,27 @@ function replaceSpecialCharsWithUnderscore(string) {
179
181
  function isFilledArray(maybeArray) {
180
182
  return _Array$isArray__default["default"](maybeArray) && maybeArray.length;
181
183
  }
184
+ function appendCsvOrJsonExtensionIfAbsent(fileName, fileFormat) {
185
+ var _context;
186
+ const extensionRegex = /\.(csv|json)$/i;
187
+ if (!extensionRegex.test(fileName)) return _concatInstanceProperty__default["default"](_context = "".concat(fileName, ".")).call(_context, fileFormat);
188
+ return fileName;
189
+ }
190
+ function flattenNestedFields(fields) {
191
+ const result = _mapInstanceProperty__default["default"](fields).call(fields, field => {
192
+ if (isFilledArray(field.fields)) {
193
+ var _context2;
194
+ return _mapInstanceProperty__default["default"](_context2 = flattenNestedFields(field.fields)).call(_context2, nestedField => {
195
+ var _context3;
196
+ return _objectSpread$b(_objectSpread$b({}, nestedField), {}, {
197
+ key: _concatInstanceProperty__default["default"](_context3 = "".concat(field.key, ".")).call(_context3, nestedField.key)
198
+ });
199
+ });
200
+ }
201
+ return field;
202
+ });
203
+ return _flatInstanceProperty__default["default"](result).call(result);
204
+ }
182
205
 
183
206
  /*
184
207
  * This function is responsible for constructing the GraphQL query based on the export settings
@@ -268,7 +291,7 @@ function validate(values) {
268
291
  };
269
292
  if (uiKit.TextInput.isEmpty(values.fileName)) {
270
293
  errors.fileName.missing = true;
271
- } else if (!/^[a-zA-Z0-9-_]+$/.test(values.fileName)) {
294
+ } else if (!/^[a-zA-Z0-9-_.]+$/.test(values.fileName)) {
272
295
  errors.fileName.invalidInput = true;
273
296
  }
274
297
  if (values.languages.length < 1) {
@@ -660,7 +683,10 @@ function useExportResourcesContext() {
660
683
  }
661
684
 
662
685
  async function createExportOperation(_ref) {
663
- let projectKey = _ref.projectKey,
686
+ let fileName = _ref.fileName,
687
+ fileFormat = _ref.fileFormat,
688
+ columns = _ref.columns,
689
+ projectKey = _ref.projectKey,
664
690
  graphQuery = _ref.graphQuery,
665
691
  asyncDispatchFn = _ref.asyncDispatchFn;
666
692
  const uri = "/proxy/export/".concat(projectKey, "/export-operations");
@@ -672,6 +698,9 @@ async function createExportOperation(_ref) {
672
698
  accept: 'application/json'
673
699
  },
674
700
  payload: {
701
+ fileName,
702
+ fileFormat,
703
+ columns,
675
704
  query: graphQuery
676
705
  }
677
706
  }));
@@ -679,7 +708,7 @@ async function createExportOperation(_ref) {
679
708
  }
680
709
 
681
710
  function ownKeys$7(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
682
- function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$7(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$7(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
711
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$7(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$7(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
683
712
  const getExportLogsLink = (projectKey, msg) => jsxRuntime.jsx(uiKit.Link, {
684
713
  to: "/".concat(projectKey, "/operations/export/logs"),
685
714
  children: msg
@@ -741,7 +770,12 @@ function ExportConfirmationModal(props) {
741
770
  });
742
771
  props.closeModal();
743
772
  try {
773
+ var _context;
744
774
  const response = await createExportOperation({
775
+ fileName: appendCsvOrJsonExtensionIfAbsent(_valuesInstanceProperty__default["default"](formik).fileName, _valuesInstanceProperty__default["default"](formik).outputFormat),
776
+ fileFormat: _valuesInstanceProperty__default["default"](formik).outputFormat,
777
+ locales: _valuesInstanceProperty__default["default"](formik).languages,
778
+ columns: _mapInstanceProperty__default["default"](_context = flattenNestedFields(_valuesInstanceProperty__default["default"](formik).fields)).call(_context, field => field.key),
745
779
  projectKey,
746
780
  graphQuery,
747
781
  asyncDispatchFn: asyncDispatch
@@ -793,25 +827,10 @@ ExportConfirmationModal.propTypes = process.env.NODE_ENV !== "production" ? {
793
827
  } : {};
794
828
 
795
829
  function ownKeys$6(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
796
- function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys$6(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$6(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
797
- function normalizeFields(fields) {
798
- const result = _mapInstanceProperty__default["default"](fields).call(fields, field => {
799
- if (isFilledArray(field.fields)) {
800
- var _context;
801
- return _mapInstanceProperty__default["default"](_context = normalizeFields(field.fields)).call(_context, nestedField => {
802
- var _context2;
803
- return _objectSpread$6(_objectSpread$6({}, nestedField), {}, {
804
- key: _concatInstanceProperty__default["default"](_context2 = "".concat(field.key, ".")).call(_context2, nestedField.key)
805
- });
806
- });
807
- }
808
- return field;
809
- });
810
- return _flatInstanceProperty__default["default"](result).call(result);
811
- }
830
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$6(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$6(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
812
831
  function FieldsRenderer(_ref) {
813
832
  let fields = _ref.fields;
814
- const allFields = normalizeFields(fields);
833
+ const allFields = flattenNestedFields(fields);
815
834
  return jsxRuntime.jsx(TagList, {
816
835
  children: _mapInstanceProperty__default["default"](allFields).call(allFields, field => jsxRuntime.jsx("div", {
817
836
  "data-testid": "test-field-".concat(field.key),
@@ -1115,9 +1134,7 @@ function ExportFileSettings(props) {
1115
1134
  children: [jsxRuntime.jsx(applicationComponents.PageContentNarrow, {
1116
1135
  children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1117
1136
  scale: "xl",
1118
- children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$2(_objectSpread$2({
1119
- isDisabled: true
1120
- }, formik.getFieldProps('outputFormat')), {}, {
1137
+ children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$2(_objectSpread$2({}, formik.getFieldProps('outputFormat')), {}, {
1121
1138
  title: intl.formatMessage(messages.outputFormat),
1122
1139
  options: outputFormatOptions
1123
1140
  })), jsxRuntime.jsx(uiKit.TextField, _objectSpread$2(_objectSpread$2({
@@ -1165,9 +1182,7 @@ function ExportFileSettings(props) {
1165
1182
  scale: "l",
1166
1183
  children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1167
1184
  scale: "l",
1168
- children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$2(_objectSpread$2({
1169
- isDisabled: true
1170
- }, formik.getFieldProps('outputFormat')), {}, {
1185
+ children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$2(_objectSpread$2({}, formik.getFieldProps('outputFormat')), {}, {
1171
1186
  title: intl.formatMessage(messages.outputFormat),
1172
1187
  options: outputFormatOptions,
1173
1188
  horizontalConstraint: 7
@@ -1341,7 +1356,7 @@ ExportResourcesModal.defaultProps = {
1341
1356
  appliedFilters: [],
1342
1357
  matchingResourcesCount: 0,
1343
1358
  exportSelectionType: EXPORT_SELECTION_TYPES.ALL_RESOURCES,
1344
- outputFormat: OUTPUT_FORMATS.JSON
1359
+ outputFormat: OUTPUT_FORMATS.CSV
1345
1360
  };
1346
1361
 
1347
1362
  exports.EXPORTABLE_RESOURCES = EXPORTABLE_RESOURCES;
@@ -146,6 +146,8 @@ let UnexpectedResourceTypeError = /*#__PURE__*/function (_Error) {
146
146
  return _createClass(UnexpectedResourceTypeError);
147
147
  }( /*#__PURE__*/_wrapNativeSuper(Error));
148
148
 
149
+ function ownKeys$a(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
150
+ function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var _context4, _context5; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context4 = ownKeys$a(Object(t), !0)).call(_context4, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context5 = ownKeys$a(Object(t))).call(_context5, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
149
151
  function resourceTypeToPlural(_ref) {
150
152
  let resourceType = _ref.resourceType,
151
153
  _ref$isUpperCase = _ref.isUpperCase,
@@ -179,6 +181,27 @@ function replaceSpecialCharsWithUnderscore(string) {
179
181
  function isFilledArray(maybeArray) {
180
182
  return _Array$isArray__default["default"](maybeArray) && maybeArray.length;
181
183
  }
184
+ function appendCsvOrJsonExtensionIfAbsent(fileName, fileFormat) {
185
+ var _context;
186
+ const extensionRegex = /\.(csv|json)$/i;
187
+ if (!extensionRegex.test(fileName)) return _concatInstanceProperty__default["default"](_context = "".concat(fileName, ".")).call(_context, fileFormat);
188
+ return fileName;
189
+ }
190
+ function flattenNestedFields(fields) {
191
+ const result = _mapInstanceProperty__default["default"](fields).call(fields, field => {
192
+ if (isFilledArray(field.fields)) {
193
+ var _context2;
194
+ return _mapInstanceProperty__default["default"](_context2 = flattenNestedFields(field.fields)).call(_context2, nestedField => {
195
+ var _context3;
196
+ return _objectSpread$a(_objectSpread$a({}, nestedField), {}, {
197
+ key: _concatInstanceProperty__default["default"](_context3 = "".concat(field.key, ".")).call(_context3, nestedField.key)
198
+ });
199
+ });
200
+ }
201
+ return field;
202
+ });
203
+ return _flatInstanceProperty__default["default"](result).call(result);
204
+ }
182
205
 
183
206
  /*
184
207
  * This function is responsible for constructing the GraphQL query based on the export settings
@@ -268,7 +291,7 @@ function validate(values) {
268
291
  };
269
292
  if (uiKit.TextInput.isEmpty(values.fileName)) {
270
293
  errors.fileName.missing = true;
271
- } else if (!/^[a-zA-Z0-9-_]+$/.test(values.fileName)) {
294
+ } else if (!/^[a-zA-Z0-9-_.]+$/.test(values.fileName)) {
272
295
  errors.fileName.invalidInput = true;
273
296
  }
274
297
  if (values.languages.length < 1) {
@@ -643,7 +666,10 @@ function useExportResourcesContext() {
643
666
  }
644
667
 
645
668
  async function createExportOperation(_ref) {
646
- let projectKey = _ref.projectKey,
669
+ let fileName = _ref.fileName,
670
+ fileFormat = _ref.fileFormat,
671
+ columns = _ref.columns,
672
+ projectKey = _ref.projectKey,
647
673
  graphQuery = _ref.graphQuery,
648
674
  asyncDispatchFn = _ref.asyncDispatchFn;
649
675
  const uri = "/proxy/export/".concat(projectKey, "/export-operations");
@@ -655,6 +681,9 @@ async function createExportOperation(_ref) {
655
681
  accept: 'application/json'
656
682
  },
657
683
  payload: {
684
+ fileName,
685
+ fileFormat,
686
+ columns,
658
687
  query: graphQuery
659
688
  }
660
689
  }));
@@ -662,7 +691,7 @@ async function createExportOperation(_ref) {
662
691
  }
663
692
 
664
693
  function ownKeys$6(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
665
- function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$6(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$6(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
694
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$6(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$6(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
666
695
  const getExportLogsLink = (projectKey, msg) => jsxRuntime.jsx(uiKit.Link, {
667
696
  to: "/".concat(projectKey, "/operations/export/logs"),
668
697
  children: msg
@@ -724,7 +753,12 @@ function ExportConfirmationModal(props) {
724
753
  });
725
754
  props.closeModal();
726
755
  try {
756
+ var _context;
727
757
  const response = await createExportOperation({
758
+ fileName: appendCsvOrJsonExtensionIfAbsent(_valuesInstanceProperty__default["default"](formik).fileName, _valuesInstanceProperty__default["default"](formik).outputFormat),
759
+ fileFormat: _valuesInstanceProperty__default["default"](formik).outputFormat,
760
+ locales: _valuesInstanceProperty__default["default"](formik).languages,
761
+ columns: _mapInstanceProperty__default["default"](_context = flattenNestedFields(_valuesInstanceProperty__default["default"](formik).fields)).call(_context, field => field.key),
728
762
  projectKey,
729
763
  graphQuery,
730
764
  asyncDispatchFn: asyncDispatch
@@ -771,25 +805,10 @@ function ExportConfirmationModal(props) {
771
805
  ExportConfirmationModal.propTypes = {};
772
806
 
773
807
  function ownKeys$5(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
774
- function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys$5(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$5(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
775
- function normalizeFields(fields) {
776
- const result = _mapInstanceProperty__default["default"](fields).call(fields, field => {
777
- if (isFilledArray(field.fields)) {
778
- var _context;
779
- return _mapInstanceProperty__default["default"](_context = normalizeFields(field.fields)).call(_context, nestedField => {
780
- var _context2;
781
- return _objectSpread$5(_objectSpread$5({}, nestedField), {}, {
782
- key: _concatInstanceProperty__default["default"](_context2 = "".concat(field.key, ".")).call(_context2, nestedField.key)
783
- });
784
- });
785
- }
786
- return field;
787
- });
788
- return _flatInstanceProperty__default["default"](result).call(result);
789
- }
808
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$5(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$5(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
790
809
  function FieldsRenderer(_ref) {
791
810
  let fields = _ref.fields;
792
- const allFields = normalizeFields(fields);
811
+ const allFields = flattenNestedFields(fields);
793
812
  return jsxRuntime.jsx(TagList, {
794
813
  children: _mapInstanceProperty__default["default"](allFields).call(allFields, field => jsxRuntime.jsx("div", {
795
814
  "data-testid": "test-field-".concat(field.key),
@@ -1079,9 +1098,7 @@ function ExportFileSettings(props) {
1079
1098
  children: [jsxRuntime.jsx(applicationComponents.PageContentNarrow, {
1080
1099
  children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1081
1100
  scale: "xl",
1082
- children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$1(_objectSpread$1({
1083
- isDisabled: true
1084
- }, formik.getFieldProps('outputFormat')), {}, {
1101
+ children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$1(_objectSpread$1({}, formik.getFieldProps('outputFormat')), {}, {
1085
1102
  title: intl.formatMessage(messages.outputFormat),
1086
1103
  options: outputFormatOptions
1087
1104
  })), jsxRuntime.jsx(uiKit.TextField, _objectSpread$1(_objectSpread$1({
@@ -1129,9 +1146,7 @@ function ExportFileSettings(props) {
1129
1146
  scale: "l",
1130
1147
  children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1131
1148
  scale: "l",
1132
- children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$1(_objectSpread$1({
1133
- isDisabled: true
1134
- }, formik.getFieldProps('outputFormat')), {}, {
1149
+ children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$1(_objectSpread$1({}, formik.getFieldProps('outputFormat')), {}, {
1135
1150
  title: intl.formatMessage(messages.outputFormat),
1136
1151
  options: outputFormatOptions,
1137
1152
  horizontalConstraint: 7
@@ -1299,7 +1314,7 @@ ExportResourcesModal.defaultProps = {
1299
1314
  appliedFilters: [],
1300
1315
  matchingResourcesCount: 0,
1301
1316
  exportSelectionType: EXPORT_SELECTION_TYPES.ALL_RESOURCES,
1302
- outputFormat: OUTPUT_FORMATS.JSON
1317
+ outputFormat: OUTPUT_FORMATS.CSV
1303
1318
  };
1304
1319
 
1305
1320
  exports.EXPORTABLE_RESOURCES = EXPORTABLE_RESOURCES;
@@ -121,6 +121,8 @@ let UnexpectedResourceTypeError = /*#__PURE__*/function (_Error) {
121
121
  return _createClass(UnexpectedResourceTypeError);
122
122
  }( /*#__PURE__*/_wrapNativeSuper(Error));
123
123
 
124
+ function ownKeys$b(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
125
+ function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var _context4, _context5; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context4 = ownKeys$b(Object(t), !0)).call(_context4, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context5 = ownKeys$b(Object(t))).call(_context5, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
124
126
  function resourceTypeToPlural(_ref) {
125
127
  let resourceType = _ref.resourceType,
126
128
  _ref$isUpperCase = _ref.isUpperCase,
@@ -154,6 +156,27 @@ function replaceSpecialCharsWithUnderscore(string) {
154
156
  function isFilledArray(maybeArray) {
155
157
  return _Array$isArray(maybeArray) && maybeArray.length;
156
158
  }
159
+ function appendCsvOrJsonExtensionIfAbsent(fileName, fileFormat) {
160
+ var _context;
161
+ const extensionRegex = /\.(csv|json)$/i;
162
+ if (!extensionRegex.test(fileName)) return _concatInstanceProperty(_context = "".concat(fileName, ".")).call(_context, fileFormat);
163
+ return fileName;
164
+ }
165
+ function flattenNestedFields(fields) {
166
+ const result = _mapInstanceProperty(fields).call(fields, field => {
167
+ if (isFilledArray(field.fields)) {
168
+ var _context2;
169
+ return _mapInstanceProperty(_context2 = flattenNestedFields(field.fields)).call(_context2, nestedField => {
170
+ var _context3;
171
+ return _objectSpread$b(_objectSpread$b({}, nestedField), {}, {
172
+ key: _concatInstanceProperty(_context3 = "".concat(field.key, ".")).call(_context3, nestedField.key)
173
+ });
174
+ });
175
+ }
176
+ return field;
177
+ });
178
+ return _flatInstanceProperty(result).call(result);
179
+ }
157
180
 
158
181
  /*
159
182
  * This function is responsible for constructing the GraphQL query based on the export settings
@@ -243,7 +266,7 @@ function validate(values) {
243
266
  };
244
267
  if (TextInput.isEmpty(values.fileName)) {
245
268
  errors.fileName.missing = true;
246
- } else if (!/^[a-zA-Z0-9-_]+$/.test(values.fileName)) {
269
+ } else if (!/^[a-zA-Z0-9-_.]+$/.test(values.fileName)) {
247
270
  errors.fileName.invalidInput = true;
248
271
  }
249
272
  if (values.languages.length < 1) {
@@ -635,7 +658,10 @@ function useExportResourcesContext() {
635
658
  }
636
659
 
637
660
  async function createExportOperation(_ref) {
638
- let projectKey = _ref.projectKey,
661
+ let fileName = _ref.fileName,
662
+ fileFormat = _ref.fileFormat,
663
+ columns = _ref.columns,
664
+ projectKey = _ref.projectKey,
639
665
  graphQuery = _ref.graphQuery,
640
666
  asyncDispatchFn = _ref.asyncDispatchFn;
641
667
  const uri = "/proxy/export/".concat(projectKey, "/export-operations");
@@ -647,6 +673,9 @@ async function createExportOperation(_ref) {
647
673
  accept: 'application/json'
648
674
  },
649
675
  payload: {
676
+ fileName,
677
+ fileFormat,
678
+ columns,
650
679
  query: graphQuery
651
680
  }
652
681
  }));
@@ -654,7 +683,7 @@ async function createExportOperation(_ref) {
654
683
  }
655
684
 
656
685
  function ownKeys$7(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
657
- function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys$7(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys$7(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
686
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context2 = ownKeys$7(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context3 = ownKeys$7(Object(t))).call(_context3, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
658
687
  const getExportLogsLink = (projectKey, msg) => jsx(Link, {
659
688
  to: "/".concat(projectKey, "/operations/export/logs"),
660
689
  children: msg
@@ -716,7 +745,12 @@ function ExportConfirmationModal(props) {
716
745
  });
717
746
  props.closeModal();
718
747
  try {
748
+ var _context;
719
749
  const response = await createExportOperation({
750
+ fileName: appendCsvOrJsonExtensionIfAbsent(_valuesInstanceProperty(formik).fileName, _valuesInstanceProperty(formik).outputFormat),
751
+ fileFormat: _valuesInstanceProperty(formik).outputFormat,
752
+ locales: _valuesInstanceProperty(formik).languages,
753
+ columns: _mapInstanceProperty(_context = flattenNestedFields(_valuesInstanceProperty(formik).fields)).call(_context, field => field.key),
720
754
  projectKey,
721
755
  graphQuery,
722
756
  asyncDispatchFn: asyncDispatch
@@ -768,25 +802,10 @@ ExportConfirmationModal.propTypes = process.env.NODE_ENV !== "production" ? {
768
802
  } : {};
769
803
 
770
804
  function ownKeys$6(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
771
- function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context3 = ownKeys$6(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context4 = ownKeys$6(Object(t))).call(_context4, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
772
- function normalizeFields(fields) {
773
- const result = _mapInstanceProperty(fields).call(fields, field => {
774
- if (isFilledArray(field.fields)) {
775
- var _context;
776
- return _mapInstanceProperty(_context = normalizeFields(field.fields)).call(_context, nestedField => {
777
- var _context2;
778
- return _objectSpread$6(_objectSpread$6({}, nestedField), {}, {
779
- key: _concatInstanceProperty(_context2 = "".concat(field.key, ".")).call(_context2, nestedField.key)
780
- });
781
- });
782
- }
783
- return field;
784
- });
785
- return _flatInstanceProperty(result).call(result);
786
- }
805
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys$6(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys$6(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
787
806
  function FieldsRenderer(_ref) {
788
807
  let fields = _ref.fields;
789
- const allFields = normalizeFields(fields);
808
+ const allFields = flattenNestedFields(fields);
790
809
  return jsx(TagList, {
791
810
  children: _mapInstanceProperty(allFields).call(allFields, field => jsx("div", {
792
811
  "data-testid": "test-field-".concat(field.key),
@@ -1090,9 +1109,7 @@ function ExportFileSettings(props) {
1090
1109
  children: [jsx(PageContentNarrow, {
1091
1110
  children: jsxs(Spacings.Stack, {
1092
1111
  scale: "xl",
1093
- children: [jsx(SelectField, _objectSpread$2(_objectSpread$2({
1094
- isDisabled: true
1095
- }, formik.getFieldProps('outputFormat')), {}, {
1112
+ children: [jsx(SelectField, _objectSpread$2(_objectSpread$2({}, formik.getFieldProps('outputFormat')), {}, {
1096
1113
  title: intl.formatMessage(messages.outputFormat),
1097
1114
  options: outputFormatOptions
1098
1115
  })), jsx(TextField, _objectSpread$2(_objectSpread$2({
@@ -1140,9 +1157,7 @@ function ExportFileSettings(props) {
1140
1157
  scale: "l",
1141
1158
  children: [jsxs(Spacings.Inline, {
1142
1159
  scale: "l",
1143
- children: [jsx(SelectField, _objectSpread$2(_objectSpread$2({
1144
- isDisabled: true
1145
- }, formik.getFieldProps('outputFormat')), {}, {
1160
+ children: [jsx(SelectField, _objectSpread$2(_objectSpread$2({}, formik.getFieldProps('outputFormat')), {}, {
1146
1161
  title: intl.formatMessage(messages.outputFormat),
1147
1162
  options: outputFormatOptions,
1148
1163
  horizontalConstraint: 7
@@ -1316,7 +1331,7 @@ ExportResourcesModal.defaultProps = {
1316
1331
  appliedFilters: [],
1317
1332
  matchingResourcesCount: 0,
1318
1333
  exportSelectionType: EXPORT_SELECTION_TYPES.ALL_RESOURCES,
1319
- outputFormat: OUTPUT_FORMATS.JSON
1334
+ outputFormat: OUTPUT_FORMATS.CSV
1320
1335
  };
1321
1336
 
1322
1337
  export { EXPORTABLE_RESOURCES, EXPORT_SELECTION_TYPES, ExportResourcesModal as default };
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": "1.3.8",
4
+ "version": "1.4.0",
5
5
  "license": "BSD-3-Clause",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -15,11 +15,11 @@
15
15
  "README.md"
16
16
  ],
17
17
  "dependencies": {
18
- "@babel/runtime": "7.23.2",
19
- "@babel/runtime-corejs3": "7.23.2",
18
+ "@babel/runtime": "7.23.6",
19
+ "@babel/runtime-corejs3": "7.23.6",
20
20
  "@emotion/react": "11.11.1",
21
21
  "@emotion/styled": "11.11.0",
22
- "@formatjs/cli": "6.2.1",
22
+ "@formatjs/cli": "6.2.4",
23
23
  "formik": "^2.2.9",
24
24
  "gql-query-builder": "^3.8.0",
25
25
  "jest": "29.7.0",
@@ -27,20 +27,20 @@
27
27
  "omit-empty-es": "^1.1.3",
28
28
  "prop-types": "15.8.1",
29
29
  "react": "17.0.2",
30
- "react-intl": "6.5.0"
30
+ "react-intl": "6.5.5"
31
31
  },
32
32
  "devDependencies": {
33
- "@commercetools-frontend/actions-global": "22.10.0",
34
- "@commercetools-frontend/application-components": "22.10.0",
35
- "@commercetools-frontend/application-shell": "22.10.0",
36
- "@commercetools-frontend/application-shell-connectors": "22.10.0",
37
- "@commercetools-frontend/constants": "22.10.0",
38
- "@commercetools-frontend/jest-preset-mc-app": "22.10.0",
39
- "@commercetools-frontend/sdk": "22.10.0",
40
- "@commercetools-frontend/sentry": "22.10.0",
41
- "@commercetools-frontend/ui-kit": "16.7.5",
42
- "@commercetools-uikit/design-system": "16.7.5",
43
- "@preconstruct/cli": "2.2.1",
33
+ "@commercetools-frontend/actions-global": "22.14.3",
34
+ "@commercetools-frontend/application-components": "22.14.3",
35
+ "@commercetools-frontend/application-shell": "22.14.3",
36
+ "@commercetools-frontend/application-shell-connectors": "22.14.3",
37
+ "@commercetools-frontend/constants": "22.14.3",
38
+ "@commercetools-frontend/jest-preset-mc-app": "22.14.3",
39
+ "@commercetools-frontend/sdk": "22.14.3",
40
+ "@commercetools-frontend/sentry": "22.14.3",
41
+ "@commercetools-frontend/ui-kit": "16.12.1",
42
+ "@commercetools-uikit/design-system": "16.12.1",
43
+ "@preconstruct/cli": "2.8.2",
44
44
  "rimraf": "5.0.5"
45
45
  },
46
46
  "peerDependencies": {