@commercetools-frontend-extensions/export-resources-modal 1.3.8 → 1.4.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.
@@ -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,11 @@ 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
+ locales = _ref.locales,
690
+ projectKey = _ref.projectKey,
664
691
  graphQuery = _ref.graphQuery,
665
692
  asyncDispatchFn = _ref.asyncDispatchFn;
666
693
  const uri = "/proxy/export/".concat(projectKey, "/export-operations");
@@ -672,6 +699,10 @@ async function createExportOperation(_ref) {
672
699
  accept: 'application/json'
673
700
  },
674
701
  payload: {
702
+ fileName,
703
+ fileFormat,
704
+ columns,
705
+ locales,
675
706
  query: graphQuery
676
707
  }
677
708
  }));
@@ -679,7 +710,7 @@ async function createExportOperation(_ref) {
679
710
  }
680
711
 
681
712
  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; }
713
+ 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
714
  const getExportLogsLink = (projectKey, msg) => jsxRuntime.jsx(uiKit.Link, {
684
715
  to: "/".concat(projectKey, "/operations/export/logs"),
685
716
  children: msg
@@ -741,7 +772,12 @@ function ExportConfirmationModal(props) {
741
772
  });
742
773
  props.closeModal();
743
774
  try {
775
+ var _context;
744
776
  const response = await createExportOperation({
777
+ fileName: appendCsvOrJsonExtensionIfAbsent(_valuesInstanceProperty__default["default"](formik).fileName, _valuesInstanceProperty__default["default"](formik).outputFormat),
778
+ fileFormat: _valuesInstanceProperty__default["default"](formik).outputFormat,
779
+ locales: _valuesInstanceProperty__default["default"](formik).languages,
780
+ columns: _mapInstanceProperty__default["default"](_context = flattenNestedFields(_valuesInstanceProperty__default["default"](formik).fields)).call(_context, field => field.key),
745
781
  projectKey,
746
782
  graphQuery,
747
783
  asyncDispatchFn: asyncDispatch
@@ -793,25 +829,10 @@ ExportConfirmationModal.propTypes = process.env.NODE_ENV !== "production" ? {
793
829
  } : {};
794
830
 
795
831
  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
- }
832
+ 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
833
  function FieldsRenderer(_ref) {
813
834
  let fields = _ref.fields;
814
- const allFields = normalizeFields(fields);
835
+ const allFields = flattenNestedFields(fields);
815
836
  return jsxRuntime.jsx(TagList, {
816
837
  children: _mapInstanceProperty__default["default"](allFields).call(allFields, field => jsxRuntime.jsx("div", {
817
838
  "data-testid": "test-field-".concat(field.key),
@@ -1115,9 +1136,7 @@ function ExportFileSettings(props) {
1115
1136
  children: [jsxRuntime.jsx(applicationComponents.PageContentNarrow, {
1116
1137
  children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1117
1138
  scale: "xl",
1118
- children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$2(_objectSpread$2({
1119
- isDisabled: true
1120
- }, formik.getFieldProps('outputFormat')), {}, {
1139
+ children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$2(_objectSpread$2({}, formik.getFieldProps('outputFormat')), {}, {
1121
1140
  title: intl.formatMessage(messages.outputFormat),
1122
1141
  options: outputFormatOptions
1123
1142
  })), jsxRuntime.jsx(uiKit.TextField, _objectSpread$2(_objectSpread$2({
@@ -1165,9 +1184,7 @@ function ExportFileSettings(props) {
1165
1184
  scale: "l",
1166
1185
  children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1167
1186
  scale: "l",
1168
- children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$2(_objectSpread$2({
1169
- isDisabled: true
1170
- }, formik.getFieldProps('outputFormat')), {}, {
1187
+ children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$2(_objectSpread$2({}, formik.getFieldProps('outputFormat')), {}, {
1171
1188
  title: intl.formatMessage(messages.outputFormat),
1172
1189
  options: outputFormatOptions,
1173
1190
  horizontalConstraint: 7
@@ -1341,7 +1358,7 @@ ExportResourcesModal.defaultProps = {
1341
1358
  appliedFilters: [],
1342
1359
  matchingResourcesCount: 0,
1343
1360
  exportSelectionType: EXPORT_SELECTION_TYPES.ALL_RESOURCES,
1344
- outputFormat: OUTPUT_FORMATS.JSON
1361
+ outputFormat: OUTPUT_FORMATS.CSV
1345
1362
  };
1346
1363
 
1347
1364
  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,11 @@ 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
+ locales = _ref.locales,
673
+ projectKey = _ref.projectKey,
647
674
  graphQuery = _ref.graphQuery,
648
675
  asyncDispatchFn = _ref.asyncDispatchFn;
649
676
  const uri = "/proxy/export/".concat(projectKey, "/export-operations");
@@ -655,6 +682,10 @@ async function createExportOperation(_ref) {
655
682
  accept: 'application/json'
656
683
  },
657
684
  payload: {
685
+ fileName,
686
+ fileFormat,
687
+ columns,
688
+ locales,
658
689
  query: graphQuery
659
690
  }
660
691
  }));
@@ -662,7 +693,7 @@ async function createExportOperation(_ref) {
662
693
  }
663
694
 
664
695
  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; }
696
+ 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
697
  const getExportLogsLink = (projectKey, msg) => jsxRuntime.jsx(uiKit.Link, {
667
698
  to: "/".concat(projectKey, "/operations/export/logs"),
668
699
  children: msg
@@ -724,7 +755,12 @@ function ExportConfirmationModal(props) {
724
755
  });
725
756
  props.closeModal();
726
757
  try {
758
+ var _context;
727
759
  const response = await createExportOperation({
760
+ fileName: appendCsvOrJsonExtensionIfAbsent(_valuesInstanceProperty__default["default"](formik).fileName, _valuesInstanceProperty__default["default"](formik).outputFormat),
761
+ fileFormat: _valuesInstanceProperty__default["default"](formik).outputFormat,
762
+ locales: _valuesInstanceProperty__default["default"](formik).languages,
763
+ columns: _mapInstanceProperty__default["default"](_context = flattenNestedFields(_valuesInstanceProperty__default["default"](formik).fields)).call(_context, field => field.key),
728
764
  projectKey,
729
765
  graphQuery,
730
766
  asyncDispatchFn: asyncDispatch
@@ -771,25 +807,10 @@ function ExportConfirmationModal(props) {
771
807
  ExportConfirmationModal.propTypes = {};
772
808
 
773
809
  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
- }
810
+ 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
811
  function FieldsRenderer(_ref) {
791
812
  let fields = _ref.fields;
792
- const allFields = normalizeFields(fields);
813
+ const allFields = flattenNestedFields(fields);
793
814
  return jsxRuntime.jsx(TagList, {
794
815
  children: _mapInstanceProperty__default["default"](allFields).call(allFields, field => jsxRuntime.jsx("div", {
795
816
  "data-testid": "test-field-".concat(field.key),
@@ -1079,9 +1100,7 @@ function ExportFileSettings(props) {
1079
1100
  children: [jsxRuntime.jsx(applicationComponents.PageContentNarrow, {
1080
1101
  children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1081
1102
  scale: "xl",
1082
- children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$1(_objectSpread$1({
1083
- isDisabled: true
1084
- }, formik.getFieldProps('outputFormat')), {}, {
1103
+ children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$1(_objectSpread$1({}, formik.getFieldProps('outputFormat')), {}, {
1085
1104
  title: intl.formatMessage(messages.outputFormat),
1086
1105
  options: outputFormatOptions
1087
1106
  })), jsxRuntime.jsx(uiKit.TextField, _objectSpread$1(_objectSpread$1({
@@ -1129,9 +1148,7 @@ function ExportFileSettings(props) {
1129
1148
  scale: "l",
1130
1149
  children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1131
1150
  scale: "l",
1132
- children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$1(_objectSpread$1({
1133
- isDisabled: true
1134
- }, formik.getFieldProps('outputFormat')), {}, {
1151
+ children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$1(_objectSpread$1({}, formik.getFieldProps('outputFormat')), {}, {
1135
1152
  title: intl.formatMessage(messages.outputFormat),
1136
1153
  options: outputFormatOptions,
1137
1154
  horizontalConstraint: 7
@@ -1299,7 +1316,7 @@ ExportResourcesModal.defaultProps = {
1299
1316
  appliedFilters: [],
1300
1317
  matchingResourcesCount: 0,
1301
1318
  exportSelectionType: EXPORT_SELECTION_TYPES.ALL_RESOURCES,
1302
- outputFormat: OUTPUT_FORMATS.JSON
1319
+ outputFormat: OUTPUT_FORMATS.CSV
1303
1320
  };
1304
1321
 
1305
1322
  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,11 @@ 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
+ locales = _ref.locales,
665
+ projectKey = _ref.projectKey,
639
666
  graphQuery = _ref.graphQuery,
640
667
  asyncDispatchFn = _ref.asyncDispatchFn;
641
668
  const uri = "/proxy/export/".concat(projectKey, "/export-operations");
@@ -647,6 +674,10 @@ async function createExportOperation(_ref) {
647
674
  accept: 'application/json'
648
675
  },
649
676
  payload: {
677
+ fileName,
678
+ fileFormat,
679
+ columns,
680
+ locales,
650
681
  query: graphQuery
651
682
  }
652
683
  }));
@@ -654,7 +685,7 @@ async function createExportOperation(_ref) {
654
685
  }
655
686
 
656
687
  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; }
688
+ 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
689
  const getExportLogsLink = (projectKey, msg) => jsx(Link, {
659
690
  to: "/".concat(projectKey, "/operations/export/logs"),
660
691
  children: msg
@@ -716,7 +747,12 @@ function ExportConfirmationModal(props) {
716
747
  });
717
748
  props.closeModal();
718
749
  try {
750
+ var _context;
719
751
  const response = await createExportOperation({
752
+ fileName: appendCsvOrJsonExtensionIfAbsent(_valuesInstanceProperty(formik).fileName, _valuesInstanceProperty(formik).outputFormat),
753
+ fileFormat: _valuesInstanceProperty(formik).outputFormat,
754
+ locales: _valuesInstanceProperty(formik).languages,
755
+ columns: _mapInstanceProperty(_context = flattenNestedFields(_valuesInstanceProperty(formik).fields)).call(_context, field => field.key),
720
756
  projectKey,
721
757
  graphQuery,
722
758
  asyncDispatchFn: asyncDispatch
@@ -768,25 +804,10 @@ ExportConfirmationModal.propTypes = process.env.NODE_ENV !== "production" ? {
768
804
  } : {};
769
805
 
770
806
  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
- }
807
+ 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
808
  function FieldsRenderer(_ref) {
788
809
  let fields = _ref.fields;
789
- const allFields = normalizeFields(fields);
810
+ const allFields = flattenNestedFields(fields);
790
811
  return jsx(TagList, {
791
812
  children: _mapInstanceProperty(allFields).call(allFields, field => jsx("div", {
792
813
  "data-testid": "test-field-".concat(field.key),
@@ -1090,9 +1111,7 @@ function ExportFileSettings(props) {
1090
1111
  children: [jsx(PageContentNarrow, {
1091
1112
  children: jsxs(Spacings.Stack, {
1092
1113
  scale: "xl",
1093
- children: [jsx(SelectField, _objectSpread$2(_objectSpread$2({
1094
- isDisabled: true
1095
- }, formik.getFieldProps('outputFormat')), {}, {
1114
+ children: [jsx(SelectField, _objectSpread$2(_objectSpread$2({}, formik.getFieldProps('outputFormat')), {}, {
1096
1115
  title: intl.formatMessage(messages.outputFormat),
1097
1116
  options: outputFormatOptions
1098
1117
  })), jsx(TextField, _objectSpread$2(_objectSpread$2({
@@ -1140,9 +1159,7 @@ function ExportFileSettings(props) {
1140
1159
  scale: "l",
1141
1160
  children: [jsxs(Spacings.Inline, {
1142
1161
  scale: "l",
1143
- children: [jsx(SelectField, _objectSpread$2(_objectSpread$2({
1144
- isDisabled: true
1145
- }, formik.getFieldProps('outputFormat')), {}, {
1162
+ children: [jsx(SelectField, _objectSpread$2(_objectSpread$2({}, formik.getFieldProps('outputFormat')), {}, {
1146
1163
  title: intl.formatMessage(messages.outputFormat),
1147
1164
  options: outputFormatOptions,
1148
1165
  horizontalConstraint: 7
@@ -1316,7 +1333,7 @@ ExportResourcesModal.defaultProps = {
1316
1333
  appliedFilters: [],
1317
1334
  matchingResourcesCount: 0,
1318
1335
  exportSelectionType: EXPORT_SELECTION_TYPES.ALL_RESOURCES,
1319
- outputFormat: OUTPUT_FORMATS.JSON
1336
+ outputFormat: OUTPUT_FORMATS.CSV
1320
1337
  };
1321
1338
 
1322
1339
  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.1",
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": {