@commercetools-frontend-extensions/export-resources-modal 2.0.0 → 3.0.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.
@@ -11,7 +11,7 @@ var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-
11
11
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
12
12
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
13
13
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
14
- var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
14
+ var React = require('react');
15
15
  var reactIntl = require('react-intl');
16
16
  var applicationComponents = require('@commercetools-frontend/application-components');
17
17
  var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
@@ -25,24 +25,28 @@ var _inherits = require('@babel/runtime-corejs3/helpers/inherits');
25
25
  var _possibleConstructorReturn = require('@babel/runtime-corejs3/helpers/possibleConstructorReturn');
26
26
  var _getPrototypeOf = require('@babel/runtime-corejs3/helpers/getPrototypeOf');
27
27
  var _wrapNativeSuper = require('@babel/runtime-corejs3/helpers/wrapNativeSuper');
28
- var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
29
- var PropTypes = require('prop-types');
30
- var formik = require('formik');
31
- var moment = require('moment');
32
- var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
33
- var react = require('react');
28
+ var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
29
+ var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
30
+ var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
31
+ var _Object$assign = require('@babel/runtime-corejs3/core-js-stable/object/assign');
34
32
  var uiKit = require('@commercetools-frontend/ui-kit');
35
- var omitEmpty = require('omit-empty-es');
36
33
  var jsxRuntime = require('@emotion/react/jsx-runtime');
37
34
  var _valuesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/values');
38
- var react$1 = require('@emotion/react');
39
- var designSystem = require('@commercetools-uikit/design-system');
40
- var _styled = require('@emotion/styled/base');
41
- var _asyncToGenerator = require('@babel/runtime-corejs3/helpers/asyncToGenerator');
42
- var _regeneratorRuntime = require('@babel/runtime-corejs3/regenerator');
35
+ var omitEmpty = require('omit-empty-es');
36
+ var _findIndexInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find-index');
37
+ var _spliceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/splice');
38
+ require('@commercetools-uikit/design-system');
39
+ var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
40
+ var moment = require('moment');
43
41
  var sdk = require('@commercetools-frontend/sdk');
44
42
  var actionsGlobal = require('@commercetools-frontend/actions-global');
45
43
  var constants = require('@commercetools-frontend/constants');
44
+ var _styled = require('@emotion/styled/base');
45
+ var _everyInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/every');
46
+ var _someInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/some');
47
+ var PropTypes = require('prop-types');
48
+ var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
49
+ var formik = require('formik');
46
50
 
47
51
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
48
52
 
@@ -54,197 +58,358 @@ var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachIns
54
58
  var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
55
59
  var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
56
60
  var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
61
+ var React__default = /*#__PURE__*/_interopDefault(React);
57
62
  var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
58
63
  var _flatInstanceProperty__default = /*#__PURE__*/_interopDefault(_flatInstanceProperty);
59
64
  var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
60
65
  var _Reflect$construct__default = /*#__PURE__*/_interopDefault(_Reflect$construct);
61
- var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
62
- var moment__default = /*#__PURE__*/_interopDefault(moment);
63
- var omitEmpty__default = /*#__PURE__*/_interopDefault(omitEmpty);
66
+ var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
67
+ var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
68
+ var _Object$assign__default = /*#__PURE__*/_interopDefault(_Object$assign);
64
69
  var _valuesInstanceProperty__default = /*#__PURE__*/_interopDefault(_valuesInstanceProperty);
70
+ var omitEmpty__default = /*#__PURE__*/_interopDefault(omitEmpty);
71
+ var _findIndexInstanceProperty__default = /*#__PURE__*/_interopDefault(_findIndexInstanceProperty);
72
+ var _spliceInstanceProperty__default = /*#__PURE__*/_interopDefault(_spliceInstanceProperty);
73
+ var moment__default = /*#__PURE__*/_interopDefault(moment);
65
74
  var _styled__default = /*#__PURE__*/_interopDefault(_styled);
66
- var _regeneratorRuntime__default = /*#__PURE__*/_interopDefault(_regeneratorRuntime);
75
+ var _everyInstanceProperty__default = /*#__PURE__*/_interopDefault(_everyInstanceProperty);
76
+ var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
77
+ var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
67
78
 
68
- var EXPORTABLE_RESOURCES = {
69
- CATEGORY: 'category',
70
- PRODUCT: 'product'
71
- };
72
- var EXPORT_SELECTION_TYPES = {
73
- ALL_RESOURCES: 'allResources',
74
- ONLY_MATCHING: 'onlyMatching',
75
- ONLY_SELECTED: 'onlySelected'
76
- };
77
- var OUTPUT_FORMATS = {
78
- JSON: 'json',
79
- CSV: 'csv'
80
- };
81
- var EXPORT_OPERATION_STATES = {
79
+ const EXPORT_OPERATION_STATES = {
82
80
  PROCESSING: 'processing',
83
81
  COMPLETED: 'completed',
84
82
  FAILED: 'failed'
85
83
  };
86
84
 
87
- function _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
85
+ const EXPORT_TYPES = {
86
+ ALL: 'all',
87
+ FILTERED: 'filtered',
88
+ SELECTED: 'selected'
89
+ };
88
90
 
89
- function _isNativeReflectConstruct$2() { if (typeof Reflect === "undefined" || !_Reflect$construct__default["default"]) return false; if (_Reflect$construct__default["default"].sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); return true; } catch (e) { return false; } }
91
+ const EXPORTABLE_RESOURCES = {
92
+ CATEGORY: 'category',
93
+ PRODUCT: 'product',
94
+ DISCOUNT_CODE: 'discountCode'
95
+ };
90
96
 
91
- var UnexpectedSelectionTypeError = /*#__PURE__*/function (_Error) {
92
- _inherits(UnexpectedSelectionTypeError, _Error);
97
+ const OUTPUT_FORMATS = {
98
+ JSON: 'json',
99
+ CSV: 'csv'
100
+ };
101
+ const OUTPUT_FORMAT_OPTIONS = [{
102
+ value: OUTPUT_FORMATS.CSV,
103
+ label: 'CSV'
104
+ }, {
105
+ value: OUTPUT_FORMATS.JSON,
106
+ label: 'JSON'
107
+ }];
93
108
 
94
- var _super = _createSuper$2(UnexpectedSelectionTypeError);
109
+ const COLUMN_DEFINITIONS_URLS = {
110
+ category: 'https://docs-proxy-sarm-product-import-csv.commercetools.vercel.app/merchant-center/import-categories#supported-headers-and-values'
111
+ };
95
112
 
96
- function UnexpectedSelectionTypeError(exportSelectionType) {
113
+ function _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
114
+ function _isNativeReflectConstruct$3() { if (typeof Reflect === "undefined" || !_Reflect$construct__default["default"]) return false; if (_Reflect$construct__default["default"].sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); return true; } catch (e) { return false; } }
115
+ let UnexpectedExportTypeError = /*#__PURE__*/function (_Error) {
116
+ _inherits(UnexpectedExportTypeError, _Error);
117
+ var _super = _createSuper$3(UnexpectedExportTypeError);
118
+ function UnexpectedExportTypeError(exportType) {
97
119
  var _this;
98
-
99
- _classCallCheck(this, UnexpectedSelectionTypeError);
100
-
101
- _this = _super.call(this, "Unexpected column: ".concat(exportSelectionType));
102
- _this.name = 'UnexpectedSelectionTypeError';
120
+ _classCallCheck(this, UnexpectedExportTypeError);
121
+ _this = _super.call(this, "Unexpected export type: ".concat(exportType));
122
+ _this.name = 'UnexpectedExportTypeError';
103
123
  return _this;
104
124
  }
105
-
106
- return _createClass(UnexpectedSelectionTypeError);
125
+ return _createClass(UnexpectedExportTypeError);
107
126
  }( /*#__PURE__*/_wrapNativeSuper(Error));
108
127
 
109
- function _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
110
-
111
- function _isNativeReflectConstruct$1() { if (typeof Reflect === "undefined" || !_Reflect$construct__default["default"]) return false; if (_Reflect$construct__default["default"].sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); return true; } catch (e) { return false; } }
112
-
113
- var MissingExportResourceProviderError = /*#__PURE__*/function (_Error) {
128
+ function _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
129
+ function _isNativeReflectConstruct$2() { if (typeof Reflect === "undefined" || !_Reflect$construct__default["default"]) return false; if (_Reflect$construct__default["default"].sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); return true; } catch (e) { return false; } }
130
+ let MissingExportResourceProviderError = /*#__PURE__*/function (_Error) {
114
131
  _inherits(MissingExportResourceProviderError, _Error);
115
-
116
- var _super = _createSuper$1(MissingExportResourceProviderError);
117
-
132
+ var _super = _createSuper$2(MissingExportResourceProviderError);
118
133
  function MissingExportResourceProviderError() {
119
134
  var _this;
120
-
121
135
  _classCallCheck(this, MissingExportResourceProviderError);
122
-
123
- _this = _super.call(this, 'useExportResourcesContext must be used within ExportResourcesContextProvider');
136
+ _this = _super.call(this, 'useExportResourcesContext must be used within ExportResourcesProvider');
124
137
  _this.name = 'MissingExportResourceProviderError';
125
138
  return _this;
126
139
  }
127
-
128
140
  return _createClass(MissingExportResourceProviderError);
129
141
  }( /*#__PURE__*/_wrapNativeSuper(Error));
130
142
 
131
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
132
-
133
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct__default["default"]) return false; if (_Reflect$construct__default["default"].sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); return true; } catch (e) { return false; } }
134
-
135
- var UnexpectedExportOperationStateError = /*#__PURE__*/function (_Error) {
143
+ function _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
144
+ function _isNativeReflectConstruct$1() { if (typeof Reflect === "undefined" || !_Reflect$construct__default["default"]) return false; if (_Reflect$construct__default["default"].sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); return true; } catch (e) { return false; } }
145
+ let UnexpectedExportOperationStateError = /*#__PURE__*/function (_Error) {
136
146
  _inherits(UnexpectedExportOperationStateError, _Error);
137
-
138
- var _super = _createSuper(UnexpectedExportOperationStateError);
139
-
147
+ var _super = _createSuper$1(UnexpectedExportOperationStateError);
140
148
  function UnexpectedExportOperationStateError(state) {
141
149
  var _this;
142
-
143
150
  _classCallCheck(this, UnexpectedExportOperationStateError);
144
-
145
151
  _this = _super.call(this, "Unexpected export operation state \"".concat(state, "\""));
146
152
  _this.name = 'UnexpectedExportOperationStateError';
147
153
  return _this;
148
154
  }
149
-
150
155
  return _createClass(UnexpectedExportOperationStateError);
151
156
  }( /*#__PURE__*/_wrapNativeSuper(Error));
152
157
 
153
- function resourceTypeToPlural(_ref) {
154
- var resourceType = _ref.resourceType,
155
- _ref$isUpperCase = _ref.isUpperCase,
156
- isUpperCase = _ref$isUpperCase === void 0 ? false : _ref$isUpperCase;
158
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
159
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct__default["default"]) return false; if (_Reflect$construct__default["default"].sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); return true; } catch (e) { return false; } }
160
+ let UnexpectedResourceTypeError = /*#__PURE__*/function (_Error) {
161
+ _inherits(UnexpectedResourceTypeError, _Error);
162
+ var _super = _createSuper(UnexpectedResourceTypeError);
163
+ function UnexpectedResourceTypeError(resourceType) {
164
+ var _this;
165
+ _classCallCheck(this, UnexpectedResourceTypeError);
166
+ _this = _super.call(this, "Unexpected resource type: ".concat(resourceType));
167
+ _this.name = 'UnexpectedResourceTypeError';
168
+ return _this;
169
+ }
170
+ return _createClass(UnexpectedResourceTypeError);
171
+ }( /*#__PURE__*/_wrapNativeSuper(Error));
157
172
 
173
+ const _excluded$1 = ["name"];
174
+ 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; }
175
+ function _objectSpread$5(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$5(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$5(Object(t))).call(_context5, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
176
+ function resourceTypeToPlural(_ref) {
177
+ let resourceType = _ref.resourceType,
178
+ _ref$isUpperCase = _ref.isUpperCase,
179
+ isUpperCase = _ref$isUpperCase === void 0 ? false : _ref$isUpperCase;
158
180
  switch (resourceType) {
159
181
  case EXPORTABLE_RESOURCES.CATEGORY:
160
182
  return isUpperCase ? 'Categories' : 'categories';
161
-
162
183
  case EXPORTABLE_RESOURCES.PRODUCT:
163
184
  return isUpperCase ? 'Products' : 'products';
164
-
185
+ case EXPORTABLE_RESOURCES.DISCOUNT_CODE:
186
+ return isUpperCase ? 'Discount codes' : 'discount codes';
187
+ default:
188
+ throw UnexpectedResourceTypeError(resourceType);
189
+ }
190
+ }
191
+ function resourceTypeToOperationName(resourceType) {
192
+ switch (resourceType) {
193
+ case EXPORTABLE_RESOURCES.CATEGORY:
194
+ return 'categories';
195
+ case EXPORTABLE_RESOURCES.PRODUCT:
196
+ return 'products';
197
+ case EXPORTABLE_RESOURCES.DISCOUNT_CODE:
198
+ return 'discountCodes';
165
199
  default:
166
- // eslint-disable-next-line no-console
167
- console.warn("Unexpected resource type: \"".concat(resourceType, "\""));
168
- return resourceType;
200
+ throw UnexpectedResourceTypeError(resourceType);
169
201
  }
170
202
  }
203
+ function mapLocalesToOptions(locales) {
204
+ return _mapInstanceProperty__default["default"](locales).call(locales, locale => ({
205
+ value: locale,
206
+ label: locale
207
+ }));
208
+ }
171
209
  function replaceSpecialCharsWithUnderscore(string) {
172
210
  return string.replace(/[^a-zA-Z0-9]/g, '_');
173
211
  }
174
-
175
- function buildGraphQuery(exportSettings) {
212
+ function isFilledArray(maybeArray) {
213
+ return _Array$isArray__default["default"](maybeArray) && maybeArray.length;
214
+ }
215
+ function appendCsvOrJsonExtensionIfAbsent(fileName, fileFormat) {
176
216
  var _context;
177
-
178
- var resourceType = resourceTypeToPlural({
179
- resourceType: exportSettings.resourceType
217
+ const extensionRegex = /\.(csv|json)$/i;
218
+ if (!extensionRegex.test(fileName)) return _concatInstanceProperty__default["default"](_context = "".concat(fileName, ".")).call(_context, fileFormat);
219
+ return fileName;
220
+ }
221
+ function flattenNestedFields(fields) {
222
+ const result = (fields === null || fields === void 0 ? void 0 : _mapInstanceProperty__default["default"](fields).call(fields, field => {
223
+ if (isFilledArray(field.fields)) {
224
+ var _context2;
225
+ return _mapInstanceProperty__default["default"](_context2 = flattenNestedFields(field.fields)).call(_context2, nestedField => {
226
+ var _context3;
227
+ return _objectSpread$5(_objectSpread$5({}, nestedField), {}, {
228
+ name: _concatInstanceProperty__default["default"](_context3 = "".concat(field.name, ".")).call(_context3, nestedField.name)
229
+ });
230
+ });
231
+ }
232
+ return field;
233
+ })) || [];
234
+ return _flatInstanceProperty__default["default"](result).call(result);
235
+ }
236
+ function unflattenNestedFields(flattenedFields) {
237
+ const reconstructed = [];
238
+ _forEachInstanceProperty__default["default"](flattenedFields).call(flattenedFields, field => {
239
+ const fieldNames = field.name.split('.');
240
+ let currentLevel = reconstructed;
241
+ _forEachInstanceProperty__default["default"](fieldNames).call(fieldNames, (name, index) => {
242
+ let existingField = _findInstanceProperty__default["default"](currentLevel).call(currentLevel, f => f.name === name);
243
+ if (!existingField) {
244
+ existingField = {
245
+ name,
246
+ fields: []
247
+ };
248
+ currentLevel.push(existingField);
249
+ }
250
+ if (index === fieldNames.length - 1) {
251
+ field.name;
252
+ const otherProps = _objectWithoutProperties(field, _excluded$1);
253
+ _Object$assign__default["default"](existingField, otherProps);
254
+ } else {
255
+ currentLevel = existingField.fields;
256
+ }
257
+ });
180
258
  });
259
+ return reconstructed;
260
+ }
261
+ function getSelectedFields(fields) {
262
+ return _filterInstanceProperty__default["default"](fields).call(fields, field => field.isChecked);
263
+ }
264
+ function getFieldNames(fields) {
265
+ return _mapInstanceProperty__default["default"](fields).call(fields, field => field.name);
266
+ }
267
+ function checkRequiredFields(fields) {
268
+ return _mapInstanceProperty__default["default"](fields).call(fields, field => field.isRequired ? _objectSpread$5(_objectSpread$5({}, field), {}, {
269
+ isChecked: true
270
+ }) : field);
271
+ }
272
+ const getExportLogsLink = (projectKey, msg) => jsxRuntime.jsx(uiKit.Link, {
273
+ to: "/".concat(projectKey, "/operations/export/logs"),
274
+ children: msg
275
+ });
181
276
 
182
- switch (exportSettings.exportSelectionType) {
183
- case EXPORT_SELECTION_TYPES.ALL_RESOURCES:
277
+ /*
278
+ * This function is responsible for constructing the GraphQL query based on the export settings
279
+ *
280
+ * Depending on the type of export selection (all, selected, or filtered) it constructs different types of queries:
281
+ * - For 'all', it generates a query that fetches all fields and locales specified in the export settings.
282
+ * - For 'selected', it creates a query that fetches only the fields and locales of the selected resources. The ids of the selected resources are included in the query.
283
+ * - The 'filtered' case is a placeholder for future development where a query will be constructed based on certain filtering criteria using the `where` parameter.
284
+ */
285
+ function buildGraphQuery(exportSettings) {
286
+ var _context;
287
+ const operation = resourceTypeToOperationName(exportSettings.resourceType);
288
+ switch (exportSettings.exportType) {
289
+ case EXPORT_TYPES.ALL:
184
290
  return gqlQueryBuilder.query({
185
- operation: resourceType,
291
+ operation,
186
292
  fields: [{
187
- results: buildColumns(exportSettings.columns, exportSettings.languages)
293
+ results: buildFields({
294
+ fields: exportSettings.fields,
295
+ locales: exportSettings.locales
296
+ })
188
297
  }],
189
298
  variables: {}
190
299
  });
191
-
192
- case EXPORT_SELECTION_TYPES.ONLY_SELECTED:
300
+ case EXPORT_TYPES.SELECTED:
193
301
  return gqlQueryBuilder.query({
194
- operation: resourceType,
302
+ operation,
195
303
  fields: [{
196
- results: buildColumns(exportSettings.columns, exportSettings.languages)
304
+ results: buildFields({
305
+ fields: exportSettings.fields,
306
+ locales: exportSettings.locales
307
+ })
197
308
  }],
198
309
  variables: {
199
- where: "id in (".concat(_mapInstanceProperty__default["default"](_context = exportSettings.selectedResourceIds).call(_context, function (id) {
200
- return "\\\"".concat(id, "\\\"");
201
- }).join(', '), ")")
310
+ where: "id in (".concat(_mapInstanceProperty__default["default"](_context = exportSettings.selectedResourceIds).call(_context, id => "\"".concat(id, "\"")).join(', '), ")")
202
311
  }
203
312
  });
204
-
205
- case EXPORT_SELECTION_TYPES.ONLY_MATCHING:
313
+ case EXPORT_TYPES.FILTERED:
206
314
  // TODO: gql query for exporting filtered resources.
207
- throw new UnexpectedSelectionTypeError(exportSettings.exportSelectionType);
208
-
315
+ throw new UnexpectedExportTypeError(exportSettings.exportType);
209
316
  default:
210
- throw new UnexpectedSelectionTypeError(exportSettings.exportSelectionType);
317
+ throw new UnexpectedExportTypeError(exportSettings.exportType);
211
318
  }
212
319
  }
213
320
 
214
- function buildColumns(columns, languages) {
321
+ /*
322
+ * This function builds the necessary field structure for our GraphQL queries, tt is specifically designed to handle different types of fields
323
+ *
324
+ * For fields whose values change depending on the locale aka localised fields, a unique request format is used
325
+ * This format combines the field and the locale, separated by '______'. This approach is adopted as our system disallows the use of hyphens `-` in these situations
326
+ *
327
+ * Fields that don't vary by locale but contain additional subfields (known as 'nested fields') are also addressed
328
+ * In these cases the function is used recursively on these subfields to generate the appropriate request.
329
+ *
330
+ * Overall, this function enables us to accurately request different types of data, including those varying by locale or containing subfields.
331
+ *
332
+ * More details can be found in the related PR: https://github.com/commercetools/commercetools-exporter/pull/103
333
+ */
334
+
335
+ function buildFields(_ref) {
215
336
  var _context2;
216
-
217
- return _flatInstanceProperty__default["default"](_context2 = _mapInstanceProperty__default["default"](columns).call(columns, function (column) {
218
- if (column.isLocalised) return _mapInstanceProperty__default["default"](languages).call(languages, function (language) {
337
+ let fields = _ref.fields,
338
+ locales = _ref.locales;
339
+ return _flatInstanceProperty__default["default"](_context2 = _mapInstanceProperty__default["default"](fields).call(fields, field => {
340
+ if (field.isLocalized) return _mapInstanceProperty__default["default"](locales).call(locales, locale => {
219
341
  var _context3, _context4, _context5;
220
-
221
- var alias = replaceSpecialCharsWithUnderscore(_concatInstanceProperty__default["default"](_context3 = "".concat(column.key, "_")).call(_context3, language));
222
- return _concatInstanceProperty__default["default"](_context4 = _concatInstanceProperty__default["default"](_context5 = "".concat(alias, ": ")).call(_context5, column.key, "(locale: \"")).call(_context4, language, "\")");
223
- });else return column.key;
342
+ const alias = replaceSpecialCharsWithUnderscore(_concatInstanceProperty__default["default"](_context3 = "".concat(field.name, "______")).call(_context3, locale));
343
+ return _concatInstanceProperty__default["default"](_context4 = _concatInstanceProperty__default["default"](_context5 = "".concat(alias, ": ")).call(_context5, field.name, "(locale: \"")).call(_context4, locale, "\")");
344
+ });else {
345
+ if (isFilledArray(field.fields)) {
346
+ return {
347
+ [field.name]: buildFields({
348
+ fields: field.fields,
349
+ locales
350
+ })
351
+ };
352
+ }
353
+ return field.name;
354
+ }
224
355
  })).call(_context2);
225
356
  }
226
357
 
358
+ function validate(_ref) {
359
+ let values = _valuesInstanceProperty__default["default"](_ref),
360
+ step = _ref.step;
361
+ const errors = {
362
+ fileName: {},
363
+ locales: {},
364
+ fields: {}
365
+ };
366
+ // Always validate these fields (first and second steps)
367
+ if (uiKit.TextInput.isEmpty(values.fileName)) {
368
+ errors.fileName.missing = true;
369
+ } else if (!/^[a-zA-Z0-9-_.]+$/.test(values.fileName)) {
370
+ errors.fileName.invalidInput = true;
371
+ }
372
+ if (values.locales.length < 1) {
373
+ errors.locales.missing = true;
374
+ }
375
+ //
376
+
377
+ // Only validate these fields on the 2nd step
378
+ if (step === 2) {
379
+ var _context;
380
+ const checkedFields = _filterInstanceProperty__default["default"](_context = values.fields).call(_context, field => field.isChecked);
381
+ if (checkedFields.length < 2) {
382
+ errors.fields.missing = true;
383
+ }
384
+ }
385
+ return omitEmpty__default["default"](errors);
386
+ }
387
+
388
+ const categoryColumnExtension = columns => {
389
+ const extendedColumns = [...columns];
390
+ const parentKeyIndex = _findIndexInstanceProperty__default["default"](columns).call(columns, column => column === 'parent.key');
391
+ if (parentKeyIndex !== -1) {
392
+ _spliceInstanceProperty__default["default"](extendedColumns).call(extendedColumns, parentKeyIndex + 1, 0, 'parent.typeId');
393
+ }
394
+ return extendedColumns;
395
+ };
396
+ const defaultColumnExtension = columns => columns;
397
+ const columnExtensionByResourceType = {
398
+ default: defaultColumnExtension,
399
+ category: categoryColumnExtension
400
+ };
401
+
402
+ const extendColumns = (columns, resourceType) => {
403
+ const extensionFunction = columnExtensionByResourceType[resourceType] || columnExtensionByResourceType.default;
404
+ return extensionFunction(columns);
405
+ };
406
+
227
407
  var messages = reactIntl.defineMessages({
228
408
  modalTitle: {
229
409
  id: 'ExportResourcesModal.modalTitle',
230
410
  description: 'Label for the modal title',
231
411
  defaultMessage: 'Export {resourceType}'
232
412
  },
233
- modalSubTitle: {
234
- id: 'ExportResourcesModal.modalSubTitle',
235
- description: 'Label for the modal subtitle',
236
- defaultMessage: 'Define export settings'
237
- },
238
- topBarPreviousPathLabel: {
239
- id: 'ExportResourcesModal.topBarPreviousPathLabel',
240
- description: 'Label for the topBar previous label',
241
- defaultMessage: 'To {resourceType} List'
242
- },
243
- exportButton: {
244
- id: 'ExportResourcesModal.exportButton',
245
- description: 'Export primary button',
246
- defaultMessage: 'Export {resourceType}'
247
- },
248
413
  outputFormat: {
249
414
  id: 'ExportResourcesModal.outputFormat',
250
415
  description: 'File format like (csv, xls, ...etc)',
@@ -255,10 +420,10 @@ var messages = reactIntl.defineMessages({
255
420
  description: 'exported file name',
256
421
  defaultMessage: 'File name'
257
422
  },
258
- localLanguage: {
259
- id: 'ExportResourcesModal.localLanguage',
260
- description: 'Local language',
261
- defaultMessage: 'Local language'
423
+ locale: {
424
+ id: 'ExportResourcesModal.locale',
425
+ description: 'Locale',
426
+ defaultMessage: 'Locale'
262
427
  },
263
428
  exportSelection: {
264
429
  id: 'ExportResourcesModal.exportSelection',
@@ -270,11 +435,6 @@ var messages = reactIntl.defineMessages({
270
435
  description: 'Export All selection',
271
436
  defaultMessage: 'Export all {resourceType} ({count})'
272
437
  },
273
- exportOnlyMatchingResources: {
274
- id: 'ExportResourcesModal.exportOnlyMatchingResources',
275
- description: 'Export resources only matching search/filter',
276
- defaultMessage: 'Export list matching search/filter ({count})'
277
- },
278
438
  exportOnlySelectedResources: {
279
439
  id: 'ExportResourcesModal.exportOnlySelectedResources',
280
440
  description: 'Export only selected resources',
@@ -297,63 +457,33 @@ var messages = reactIntl.defineMessages({
297
457
  },
298
458
  columnsMessage: {
299
459
  id: 'ExportResourcesModal.columnsMessage',
300
- description: 'Exported columns based on table settings',
301
- defaultMessage: '<b>Exported columns based on table settings:</b> {columnsCount}'
302
- },
303
- appliedSearchTermsMessage: {
304
- id: 'ExportResourcesModal.appliedSearchTermsMessage',
305
- description: 'Applied Search Term(s)',
306
- defaultMessage: '<b>Applied search term(s):</b> {searchTermsCount}'
307
- },
308
- appliedFiltersMessage: {
309
- id: 'ExportResourcesModal.appliedFiltersMessage',
310
- description: 'Applied Filter(s)',
311
- defaultMessage: '<b>Applied Filter(s):</b> {filtersCount}'
460
+ description: 'Exported columns and attributes based on table settings',
461
+ defaultMessage: 'Exported columns/attributes based on table settings: {columnsCount}'
312
462
  },
313
463
  exportBasedOnMyViewsMessage: {
314
464
  id: 'ExportResourcesModal.exportBasedOnMyViewsMessage',
315
465
  description: 'Select Export setttings based on my views',
316
- defaultMessage: 'Select export settings based on <b>My views:</b>'
466
+ defaultMessage: 'Select export settings based on:'
317
467
  },
318
468
  propertiesPanelLabel: {
319
469
  id: 'ExportResourcesModal.propertiesPanelLabel',
320
470
  description: 'properties panel label',
321
471
  defaultMessage: 'Properties'
322
472
  },
323
- confirmationTitle: {
324
- id: 'ExportResourcesModal.confirmationTitle',
325
- description: 'Title for the confirmation dialog',
326
- defaultMessage: 'Export {resourceType} data'
327
- },
328
- confirmationBodyPlan: {
329
- id: 'ExportResourcesModal.confirmationBodyPlan',
330
- description: 'Confirmation dialog action plan',
331
- defaultMessage: 'You are about to export <bold>{count}</bold> {resourceType} from the project: <bold>{projectName}</bold>.'
332
- },
333
- confirmationBodyQuestion: {
334
- id: 'ExportResourcesModal.confirmationBodyQuestion',
335
- description: 'Confirmation question',
336
- defaultMessage: 'Are you sure you want to continue?'
337
- },
338
473
  exportOperationSuccessMessage: {
339
474
  id: 'ExportResourcesModal.exportOperationSuccessMessage',
340
475
  description: 'Success message',
341
- defaultMessage: 'Your export has started. Go to <logsLink>Export logs</logsLink> to view the progress of your export and download it.'
342
- },
343
- exportConfirmationLabel: {
344
- id: 'ExportResourcesModal.exportConfirmationLabel',
345
- description: 'Label for the export button in confirmation dialog',
346
- defaultMessage: 'Export {resourceType}'
476
+ defaultMessage: '<b>Your export has started.</b> <newline></newline><logsLink>Go to Export logs</logsLink> to view the progress and download the file.'
347
477
  },
348
478
  nothingApplied: {
349
479
  id: 'ExportResourcesModal.nothingApplied',
350
480
  description: 'Shown when there is no filter applied',
351
481
  defaultMessage: 'nothing applied'
352
482
  },
353
- all: {
354
- id: 'ExportResourcesModal.all',
355
- description: 'label for "All languages" checkbox',
356
- defaultMessage: 'All'
483
+ selectAllLocales: {
484
+ id: 'ExportResourcesModal.selectAllLocales',
485
+ description: 'label for "Select all locales" checkbox',
486
+ defaultMessage: 'Select all locales'
357
487
  },
358
488
  missingFileNameError: {
359
489
  id: 'ExportResourcesModal.missingFileNameError',
@@ -365,187 +495,47 @@ var messages = reactIntl.defineMessages({
365
495
  description: 'Error when file name field is not valid',
366
496
  defaultMessage: 'File name may only contain alphanumeric characters, hyphens and underscores'
367
497
  },
368
- missingLanguageError: {
369
- id: 'ExportResourcesModal.missingLanguageError',
370
- description: 'Error when no local language is selected',
371
- defaultMessage: 'Please select at least one local language'
498
+ missingLocaleError: {
499
+ id: 'ExportResourcesModal.missingLocaleError',
500
+ description: 'Error when no locale is selected',
501
+ defaultMessage: 'Please select at least one locale'
502
+ },
503
+ myViews: {
504
+ id: 'ExportResourcesModal.myViews',
505
+ description: 'Label for "My Views" Select Field',
506
+ defaultMessage: 'My Views'
507
+ },
508
+ selectColumnsToExport: {
509
+ id: 'ExportResourcesModal.selectColumnsToExport',
510
+ defaultMessage: 'Select columns to export'
511
+ },
512
+ back: {
513
+ id: 'ExportResourcesModal.back',
514
+ description: 'Label for "Back" button',
515
+ defaultMessage: 'Back'
516
+ },
517
+ startExport: {
518
+ id: 'ExportResourcesModal.startExport',
519
+ description: 'Label for "Start export" button',
520
+ defaultMessage: 'Start export'
521
+ },
522
+ continue: {
523
+ id: 'ExportResourcesModal.continue',
524
+ description: 'Label for "Continue" button',
525
+ defaultMessage: 'Continue'
526
+ },
527
+ columnDefinitions: {
528
+ id: 'ExportResourcesModal.columnDefinitions',
529
+ description: 'Label for "Column Definitions" link',
530
+ defaultMessage: 'Column definitions'
531
+ },
532
+ allGeneralFields: {
533
+ id: 'ExportResourcesModal.allGeneralFields',
534
+ description: 'Label for "All general fields" checkbox',
535
+ defaultMessage: 'All general fields'
372
536
  }
373
537
  });
374
538
 
375
- var ExportResourcesContext = /*#__PURE__*/react.createContext();
376
-
377
- PropTypes__default["default"].shape({
378
- resourceType: PropTypes__default["default"].string.isRequired,
379
- outputFormat: PropTypes__default["default"].string,
380
- isOpen: PropTypes__default["default"].bool.isRequired,
381
- closeModal: PropTypes__default["default"].func.isRequired,
382
- allResourcesCount: PropTypes__default["default"].number.isRequired,
383
- matchingResourcesCount: PropTypes__default["default"].number,
384
- selectedResourceIds: PropTypes__default["default"].array,
385
- columns: PropTypes__default["default"].arrayOf({
386
- key: PropTypes__default["default"].string.isRequired,
387
- isLocalised: PropTypes__default["default"].bool
388
- }).isRequired,
389
- exportSelectionType: PropTypes__default["default"].string,
390
- appliedSearchTerms: PropTypes__default["default"].array,
391
- appliedFilters: PropTypes__default["default"].array,
392
- renderProperties: PropTypes__default["default"].func
393
- });
394
-
395
- function validate(values) {
396
- var errors = {
397
- fileName: {},
398
- languages: {}
399
- };
400
-
401
- if (uiKit.TextInput.isEmpty(values.fileName)) {
402
- errors.fileName.missing = true;
403
- } else if (!/^[a-zA-Z0-9-_]+$/.test(values.fileName)) {
404
- errors.fileName.invalidInput = true;
405
- }
406
-
407
- if (values.languages.length < 1) {
408
- errors.languages.missing = true;
409
- }
410
-
411
- return omitEmpty__default["default"](errors);
412
- }
413
-
414
- var ExportResourcesContextProvider = function ExportResourcesContextProvider(props) {
415
- var _context;
416
-
417
- var todayFormatted = moment__default["default"]().format('DD-MM-YY_HH-mm');
418
-
419
- var _useApplicationContex = applicationShellConnectors.useApplicationContext(function (applicationContext) {
420
- return {
421
- language: applicationContext.dataLocale
422
- };
423
- }),
424
- language = _useApplicationContex.language;
425
-
426
- var formik$1 = formik.useFormik({
427
- initialValues: {
428
- outputFormat: props.outputFormat,
429
- fileName: _concatInstanceProperty__default["default"](_context = "".concat(resourceTypeToPlural({
430
- resourceType: props.resourceType,
431
- isUpperCase: true
432
- }), "_Export_")).call(_context, todayFormatted),
433
- languages: [language],
434
- columns: props.columns,
435
- appliedSearchTerms: props.appliedSearchTerms,
436
- appliedFilters: props.appliedFilters,
437
- exportSelectionType: props.exportSelectionType,
438
- isAllLanguagesChecked: false
439
- },
440
- validate: validate
441
- });
442
-
443
- var _useState = react.useState(false),
444
- _useState2 = _slicedToArray(_useState, 2),
445
- exportOperationStarted = _useState2[0],
446
- setExportOperationStarted = _useState2[1];
447
-
448
- return jsxRuntime.jsx(ExportResourcesContext.Provider, {
449
- value: {
450
- formik: formik$1,
451
- resourceType: props.resourceType,
452
- allResourcesCount: props.allResourcesCount,
453
- matchingResourcesCount: props.matchingResourcesCount,
454
- selectedResourceIds: props.selectedResourceIds,
455
- exportOperationStarted: exportOperationStarted,
456
- setExportOperationStarted: setExportOperationStarted
457
- },
458
- children: props.children
459
- });
460
- };
461
-
462
- ExportResourcesContextProvider.displayName = 'ExportResourcesContextProvider';
463
- ExportResourcesContextProvider.propTypes = {};
464
-
465
- function useExportResourcesContext() {
466
- var context = react.useContext(ExportResourcesContext);
467
-
468
- if (!context) {
469
- throw new MissingExportResourceProviderError();
470
- }
471
-
472
- return context;
473
- }
474
-
475
- var smallTopPadding = /*#__PURE__*/react$1.css("padding-top:", designSystem.customProperties.spacingXs, ";" + ("" ), "" );
476
- var tagListContainer = /*#__PURE__*/react$1.css("width:100%;display:flex;flex-wrap:wrap;display:inline-flex;padding:0 ", designSystem.customProperties.spacingL, ";&>div{margin:0 ", designSystem.customProperties.spacingS, " ", designSystem.customProperties.spacingS, " 0;}" + ("" ), "" );
477
- var tagListItem = /*#__PURE__*/react$1.css("margin:0 ", designSystem.customProperties.spacingXs, " ", designSystem.customProperties.spacingXs, " 0;display:flex;min-width:0;" + ("" ), "" );
478
- var divider = /*#__PURE__*/react$1.css("box-sizing:border-box;width:100%;margin:0;border:0;border-top:1px solid ", designSystem.customProperties.colorNeutral60, ";" + ("" ), "" );
479
- var notBold = {
480
- name: "lugakg",
481
- styles: "font-weight:normal"
482
- } ;
483
- var successMessage = /*#__PURE__*/react$1.css("margin-bottom:", designSystem.customProperties.spacingL, ";" + ("" ), "" );
484
- var styles = {
485
- tagListItem: tagListItem,
486
- tagListContainer: tagListContainer,
487
- smallTopPadding: smallTopPadding,
488
- divider: divider,
489
- notBold: notBold,
490
- successMessage: successMessage
491
- };
492
-
493
- function ExportSelectionRadioButtons() {
494
- var intl = reactIntl.useIntl();
495
-
496
- var _useExportResourcesCo = useExportResourcesContext(),
497
- formik = _useExportResourcesCo.formik,
498
- resourceType = _useExportResourcesCo.resourceType,
499
- allResourcesCount = _useExportResourcesCo.allResourcesCount,
500
- matchingResourcesCount = _useExportResourcesCo.matchingResourcesCount,
501
- selectedResourceIds = _useExportResourcesCo.selectedResourceIds;
502
-
503
- var resourceTypePlural = resourceTypeToPlural({
504
- resourceType: resourceType
505
- });
506
- return jsxRuntime.jsx(uiKit.Spacings.Inline, {
507
- scale: "xl",
508
- children: jsxRuntime.jsxs(uiKit.RadioInput.Group, {
509
- name: "exportSelectionType",
510
- value: _valuesInstanceProperty__default["default"](formik).exportSelectionType,
511
- direction: "inline",
512
- directionProps: {
513
- scale: 'xl'
514
- },
515
- onChange: formik.handleChange,
516
- children: [jsxRuntime.jsx(uiKit.RadioInput.Option, {
517
- value: EXPORT_SELECTION_TYPES.ALL_RESOURCES,
518
- "data-testid": 'test-all-resources',
519
- children: jsxRuntime.jsx("b", {
520
- children: intl.formatMessage(messages.exportAllResources, {
521
- resourceType: resourceTypePlural,
522
- count: allResourcesCount
523
- })
524
- })
525
- }), jsxRuntime.jsx(uiKit.RadioInput.Option, {
526
- value: EXPORT_SELECTION_TYPES.ONLY_MATCHING,
527
- "data-testid": 'test-only-matching',
528
- isDisabled: !Boolean(matchingResourcesCount),
529
- children: jsxRuntime.jsx("b", {
530
- children: intl.formatMessage(messages.exportOnlyMatchingResources, {
531
- count: matchingResourcesCount || intl.formatMessage(messages.nothingApplied)
532
- })
533
- })
534
- }), jsxRuntime.jsx(uiKit.RadioInput.Option, {
535
- value: EXPORT_SELECTION_TYPES.ONLY_SELECTED,
536
- "data-testid": 'test-only-selected',
537
- isDisabled: !Boolean(selectedResourceIds.length),
538
- children: jsxRuntime.jsx("b", {
539
- children: intl.formatMessage(messages.exportOnlySelectedResources, {
540
- resourceType: resourceTypePlural,
541
- count: selectedResourceIds.length
542
- })
543
- })
544
- })]
545
- })
546
- });
547
- }
548
-
549
539
  function getBold(msg) {
550
540
  return jsxRuntime.jsx(uiKit.Text.Body, {
551
541
  as: "span",
@@ -554,663 +544,473 @@ function getBold(msg) {
554
544
  });
555
545
  }
556
546
 
557
- function ownKeys$a(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
558
-
559
- function _objectSpread$a(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$a(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$a(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
560
- function ExportTextMessage() {
561
- var _useExportResourcesCo = useExportResourcesContext(),
562
- resourceType = _useExportResourcesCo.resourceType,
563
- allResourcesCount = _useExportResourcesCo.allResourcesCount,
564
- selectedResourceIds = _useExportResourcesCo.selectedResourceIds,
565
- matchingResourcesCount = _useExportResourcesCo.matchingResourcesCount,
566
- formik = _useExportResourcesCo.formik;
567
-
568
- var resourceTypePlural = resourceTypeToPlural({
569
- resourceType: resourceType
570
- });
571
-
572
- switch (_valuesInstanceProperty__default["default"](formik).exportSelectionType) {
573
- case EXPORT_SELECTION_TYPES.ALL_RESOURCES:
574
- return jsxRuntime.jsx(uiKit.Text.Body, {
575
- intlMessage: _objectSpread$a(_objectSpread$a({}, messages.exportAllMessage), {}, {
576
- values: {
577
- count: allResourcesCount,
578
- resourceType: resourceTypePlural,
579
- b: getBold
580
- }
581
- })
582
- });
583
-
584
- case EXPORT_SELECTION_TYPES.ONLY_MATCHING:
585
- return jsxRuntime.jsx(uiKit.Text.Body, {
586
- intlMessage: _objectSpread$a(_objectSpread$a({}, messages.exportMatchingMessage), {}, {
587
- values: {
588
- count: matchingResourcesCount,
589
- resourceType: resourceTypePlural,
590
- b: getBold
591
- }
592
- })
593
- });
594
-
595
- case EXPORT_SELECTION_TYPES.ONLY_SELECTED:
596
- return jsxRuntime.jsx(uiKit.Text.Body, {
597
- intlMessage: _objectSpread$a(_objectSpread$a({}, messages.exportSelectedMessage), {}, {
598
- values: {
599
- count: selectedResourceIds.length,
600
- resourceType: resourceTypePlural,
601
- b: getBold
602
- }
603
- })
604
- });
605
-
606
- default:
607
- throw new UnexpectedSelectionTypeError(_valuesInstanceProperty__default["default"](formik).exportSelectionType);
608
- }
609
- }
610
-
611
- function TagList(props) {
612
- return jsxRuntime.jsx("div", {
613
- css: styles.tagListContainer,
614
- "data-testid": props['data-testid'],
615
- children: _mapInstanceProperty__default["default"](react.Children).call(react.Children, props.children, function (tag) {
616
- return jsxRuntime.jsx("div", {
617
- css: styles.tagListItem,
618
- children: tag
619
- });
620
- })
621
- });
547
+ function getNewLine() {
548
+ return jsxRuntime.jsx("br", {});
622
549
  }
623
- TagList.displayName = 'TagList';
624
- TagList.propTypes = {};
625
550
 
626
- function ownKeys$9(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
627
-
628
- function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$9(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$9(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
629
- function AppliedFilters(_ref) {
630
- var filters = _ref.filters,
631
- onFilterRemove = _ref.onFilterRemove;
632
- return jsxRuntime.jsxs(uiKit.Spacings.Stack, {
633
- scale: "s",
634
- children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
635
- scale: "s",
636
- alignItems: "flex-start",
637
- children: [jsxRuntime.jsx(uiKit.AngleRightIcon, {
638
- "data-testid": "test-arrowRight",
639
- size: "medium",
640
- color: "neutral60"
641
- }), jsxRuntime.jsx(uiKit.Text.Body, {
642
- intlMessage: _objectSpread$9(_objectSpread$9({}, messages.appliedFiltersMessage), {}, {
643
- values: {
644
- filtersCount: filters.length,
645
- b: getBold
646
- }
647
- })
648
- })]
649
- }), jsxRuntime.jsx(TagList, {
650
- children: _mapInstanceProperty__default["default"](filters).call(filters, function (filter) {
651
- return jsxRuntime.jsx("div", {
652
- "data-testid": "test-filter-".concat(filter),
653
- children: jsxRuntime.jsx(uiKit.Tag, {
654
- onRemove: function onRemove() {
655
- onFilterRemove(filter);
656
- },
657
- children: filter
658
- })
659
- }, filter);
660
- })
661
- })]
662
- });
663
- }
664
- AppliedFilters.propTypes = {};
665
-
666
- function ownKeys$8(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
667
-
668
- function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$8(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$8(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
669
- function ExportBasedOnMyViewsSelectField() {
670
- return jsxRuntime.jsxs(uiKit.Spacings.Inline, {
671
- scale: "m",
672
- alignItems: "center",
673
- children: [jsxRuntime.jsx(uiKit.Text.Body, {
674
- intlMessage: _objectSpread$8(_objectSpread$8({}, messages.exportBasedOnMyViewsMessage), {}, {
675
- values: {
676
- b: getBold
677
- }
678
- })
679
- }), jsxRuntime.jsx(uiKit.Constraints.Horizontal, {
680
- max: 4,
681
- children: jsxRuntime.jsx(uiKit.SelectInput, {
682
- isDisabled: true,
683
- placeholder: "Default"
684
- })
685
- })]
686
- });
687
- }
688
-
689
- function ownKeys$7(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
690
-
691
- function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$7(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$7(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
692
-
693
- var IconPlaceholder = _styled__default["default"]("div", {
694
- target: "e1nl5t3e0"
695
- } )("width:", uiKit.customProperties.spacingM, ";" + ("" ));
696
-
697
- function AppliedSearchTerms(_ref) {
698
- var appliedSearchTerms = _ref.appliedSearchTerms;
699
- return jsxRuntime.jsxs(uiKit.Spacings.Stack, {
700
- scale: "s",
701
- children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
702
- scale: "s",
703
- alignItems: "flex-start",
704
- children: [jsxRuntime.jsx(uiKit.AngleRightIcon, {
705
- "data-testid": "test-arrowRight",
706
- size: "medium",
707
- color: "neutral60"
708
- }), jsxRuntime.jsx(uiKit.Text.Body, {
709
- intlMessage: _objectSpread$7(_objectSpread$7({}, messages.appliedSearchTermsMessage), {}, {
710
- values: {
711
- searchTermsCount: appliedSearchTerms.length,
712
- b: getBold
713
- }
714
- })
715
- })]
716
- }), jsxRuntime.jsxs(uiKit.Spacings.Inline, {
717
- scale: "s",
718
- alignItems: "flex-start",
719
- children: [jsxRuntime.jsx(IconPlaceholder, {}), jsxRuntime.jsx(uiKit.Text.Body, {
720
- children: appliedSearchTerms.join(', ')
721
- })]
722
- })]
723
- });
724
- }
725
- AppliedSearchTerms.propTypes = {};
726
-
727
- function ownKeys$6(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
728
-
729
- function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$6(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$6(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
730
- function Columns(_ref) {
731
- var columns = _ref.columns;
732
- return jsxRuntime.jsxs(uiKit.Spacings.Stack, {
733
- scale: "s",
734
- children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
735
- scale: "s",
736
- alignItems: "flex-start",
737
- children: [jsxRuntime.jsx(uiKit.AngleRightIcon, {
738
- "data-testid": "test-arrowRight",
739
- size: "medium",
740
- color: "neutral60"
741
- }), jsxRuntime.jsx(uiKit.Text.Body, {
742
- intlMessage: _objectSpread$6(_objectSpread$6({}, messages.columnsMessage), {}, {
743
- values: {
744
- columnsCount: columns.length,
745
- b: getBold
746
- }
747
- })
748
- })]
749
- }), jsxRuntime.jsx(TagList, {
750
- children: _mapInstanceProperty__default["default"](columns).call(columns, function (column) {
751
- return jsxRuntime.jsx("div", {
752
- "data-testid": "test-column-".concat(column.exportLabel),
753
- children: jsxRuntime.jsx(uiKit.Tag, {
754
- children: column.key
755
- })
756
- }, column.exportLabel);
757
- })
758
- })]
759
- });
760
- }
761
- Columns.propTypes = {};
762
-
763
- var ExportSelection = function ExportSelection() {
764
- var _useExportResourcesCo = useExportResourcesContext(),
765
- formik = _useExportResourcesCo.formik;
766
-
767
- var onAppliedFilterRemove = function onAppliedFilterRemove(filter) {
768
- var _context;
769
-
770
- formik.setFieldValue('appliedFilters', _filterInstanceProperty__default["default"](_context = _valuesInstanceProperty__default["default"](formik).appliedFilters).call(_context, function (appliedFilter) {
771
- return appliedFilter !== filter;
772
- }));
773
- };
774
-
775
- return jsxRuntime.jsxs(uiKit.Spacings.Stack, {
776
- scale: "s",
777
- children: [jsxRuntime.jsx(uiKit.Text.Body, {
778
- isBold: true,
779
- intlMessage: messages.exportSelection
780
- }), jsxRuntime.jsxs(uiKit.Card, {
781
- theme: "dark",
782
- type: "raised",
783
- insetScale: "none",
784
- children: [jsxRuntime.jsx(uiKit.Spacings.Inset, {
785
- scale: "m",
786
- children: jsxRuntime.jsx(ExportSelectionRadioButtons, {})
787
- }), jsxRuntime.jsx("div", {
788
- css: styles.divider
789
- }), jsxRuntime.jsx(uiKit.Spacings.Inset, {
790
- scale: "m",
791
- children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
792
- scale: "l",
793
- children: [jsxRuntime.jsx(ExportTextMessage, {}), _valuesInstanceProperty__default["default"](formik).exportSelectionType === EXPORT_SELECTION_TYPES.ONLY_MATCHING && jsxRuntime.jsxs(jsxRuntime.Fragment, {
794
- children: [jsxRuntime.jsx(ExportBasedOnMyViewsSelectField, {}), jsxRuntime.jsx(AppliedSearchTerms, {
795
- appliedSearchTerms: _valuesInstanceProperty__default["default"](formik).appliedSearchTerms
796
- }), jsxRuntime.jsx(AppliedFilters, {
797
- filters: _valuesInstanceProperty__default["default"](formik).appliedFilters,
798
- onFilterRemove: onAppliedFilterRemove
799
- })]
800
- }), _valuesInstanceProperty__default["default"](formik).columns.length > 0 && jsxRuntime.jsx(Columns, {
801
- columns: _valuesInstanceProperty__default["default"](formik).columns
802
- })]
803
- })
804
- })]
805
- })]
806
- });
807
- };
808
-
809
- function ownKeys$5(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
810
-
811
- function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$5(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$5(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
812
- var ExportPropertiesPanel = function ExportPropertiesPanel(props) {
813
- if (typeof props.renderProperties !== 'function') return null;
814
- return jsxRuntime.jsx(uiKit.CollapsiblePanel, {
815
- header: jsxRuntime.jsx(uiKit.Text.Body, {
816
- isBold: true,
817
- intlMessage: _objectSpread$5({}, messages.propertiesPanelLabel)
818
- }),
819
- children: props.renderProperties()
820
- });
821
- };
822
- ExportPropertiesPanel.propTypes = {};
823
-
824
- function ownKeys$4(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
825
-
826
- function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$4(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$4(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
551
+ function ownKeys$4(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; }
552
+ function _objectSpread$4(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$4(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$4(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
827
553
  function renderFileNameError(key) {
828
554
  switch (key) {
829
555
  case 'missing':
830
556
  return jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$4({}, messages.missingFileNameError));
831
-
832
557
  case 'invalidInput':
833
558
  return jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$4({}, messages.invalidFileNameError));
834
-
835
559
  default:
836
560
  return null;
837
561
  }
838
562
  }
839
- function renderLanguageError(key) {
563
+ function renderLocaleError(key) {
840
564
  switch (key) {
841
565
  case 'missing':
842
- return jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$4({}, messages.missingLanguageError));
843
-
566
+ return jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$4({}, messages.missingLocaleError));
844
567
  default:
845
568
  return null;
846
569
  }
847
570
  }
848
571
 
849
- function ownKeys$3(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
850
-
851
- function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$3(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$3(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
852
- var outputFormatOptions = [{
853
- value: OUTPUT_FORMATS.JSON,
854
- label: 'JSON'
855
- }, {
856
- value: OUTPUT_FORMATS.CSV,
857
- label: 'CSV'
858
- }];
572
+ function useExportResourcesContext() {
573
+ const context = React.useContext(ExportResourcesContext);
574
+ if (!context) {
575
+ throw new MissingExportResourceProviderError();
576
+ }
577
+ return context;
578
+ }
859
579
 
860
- function mapLanguagesToOptions(languages) {
861
- return _mapInstanceProperty__default["default"](languages).call(languages, function (language) {
580
+ const _excluded = ["isSelectedByDefault"];
581
+ function ownKeys$3(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; }
582
+ function _objectSpread$3(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$3(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$3(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
583
+ const useInitialValues = props => {
584
+ var _context;
585
+ const todayFormatted = moment__default["default"]().format('DD-MM-YY_HH-mm');
586
+ const _useApplicationContex = applicationShellConnectors.useApplicationContext(applicationContext => ({
587
+ locale: applicationContext.dataLocale
588
+ })),
589
+ locale = _useApplicationContex.locale;
590
+ const fields = _mapInstanceProperty__default["default"](_context = flattenNestedFields(props.fields)).call(_context, _ref => {
591
+ let isSelectedByDefault = _ref.isSelectedByDefault,
592
+ field = _objectWithoutProperties(_ref, _excluded);
593
+ return _objectSpread$3(_objectSpread$3({}, field), {}, {
594
+ isChecked: isSelectedByDefault !== null && isSelectedByDefault !== void 0 ? isSelectedByDefault : true
595
+ });
596
+ });
597
+ return React__default["default"].useMemo(() => {
598
+ var _context2;
862
599
  return {
863
- value: language,
864
- label: language
600
+ outputFormat: props.outputFormat,
601
+ fileName: _concatInstanceProperty__default["default"](_context2 = "".concat(resourceTypeToPlural({
602
+ resourceType: props.resourceType,
603
+ isUpperCase: true
604
+ }), "_Export_")).call(_context2, todayFormatted),
605
+ locales: [locale],
606
+ fields: checkRequiredFields(fields)
865
607
  };
866
- });
867
- }
608
+ }, [props, locale, todayFormatted, fields]);
609
+ };
868
610
 
869
- function ExportFileSettings(props) {
870
- var intl = reactIntl.useIntl();
611
+ async function createExportOperation(_ref) {
612
+ let fileName = _ref.fileName,
613
+ fileFormat = _ref.fileFormat,
614
+ columns = _ref.columns,
615
+ locales = _ref.locales,
616
+ projectKey = _ref.projectKey,
617
+ graphQuery = _ref.graphQuery,
618
+ asyncDispatchFn = _ref.asyncDispatchFn;
619
+ const uri = "/proxy/export/".concat(projectKey, "/export-operations");
620
+ const response = await asyncDispatchFn(sdk.actions.post({
621
+ // FIXME: EXPORT is undefined
622
+ mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.EXPORT,
623
+ uri: uri,
624
+ headers: {
625
+ accept: 'application/json'
626
+ },
627
+ payload: {
628
+ fileName,
629
+ fileFormat,
630
+ columns,
631
+ locales,
632
+ query: graphQuery
633
+ }
634
+ }));
635
+ return response;
636
+ }
871
637
 
872
- var _useExportResourcesCo = useExportResourcesContext(),
873
- formik = _useExportResourcesCo.formik;
638
+ const useStartExportOperation = props => {
639
+ const intl = reactIntl.useIntl();
640
+ const asyncDispatch = sdk.useAsyncDispatch();
641
+ const showNotification = actionsGlobal.useShowNotification();
642
+ const _useApplicationContex = applicationShellConnectors.useApplicationContext(applicationContext => {
643
+ var _applicationContext$p;
644
+ return {
645
+ locale: applicationContext.dataLocale,
646
+ projectKey: (_applicationContext$p = applicationContext.project) === null || _applicationContext$p === void 0 ? void 0 : _applicationContext$p.key
647
+ };
648
+ }),
649
+ projectKey = _useApplicationContex.projectKey;
650
+ const startExportOperation = async values => {
651
+ const graphQuery = buildGraphQuery({
652
+ resourceType: props.resourceType,
653
+ exportType: props.exportType,
654
+ selectedResourceIds: props.selectedResourceIds,
655
+ fields: unflattenNestedFields(getSelectedFields(values.fields)),
656
+ locales: values.locales
657
+ });
658
+ try {
659
+ const response = await createExportOperation({
660
+ fileName: appendCsvOrJsonExtensionIfAbsent(values.fileName, values.outputFormat),
661
+ fileFormat: values.outputFormat,
662
+ locales: values.locales,
663
+ columns: extendColumns(getFieldNames(getSelectedFields(values.fields)), props.resourceType),
664
+ projectKey,
665
+ graphQuery,
666
+ asyncDispatchFn: asyncDispatch
667
+ });
668
+ switch (response.state) {
669
+ case EXPORT_OPERATION_STATES.PROCESSING:
670
+ case EXPORT_OPERATION_STATES.COMPLETED:
671
+ showNotification({
672
+ kind: 'info',
673
+ domain: constants.DOMAINS.SIDE,
674
+ text: intl.formatMessage(messages.exportOperationSuccessMessage, {
675
+ newline: getNewLine,
676
+ logsLink: msg => getExportLogsLink(projectKey, msg),
677
+ b: getBold
678
+ })
679
+ }, {
680
+ dismissAfter: 5000
681
+ });
682
+ break;
683
+ default:
684
+ throw new UnexpectedExportOperationStateError(response.state);
685
+ }
686
+ } catch (errors) {
687
+ // TODO: custom error messages for each error type
688
+ actionsGlobal.showApiErrorNotification({
689
+ errors
690
+ });
691
+ } finally {
692
+ if (typeof props.onClose === 'function') props.onClose();
693
+ }
694
+ };
695
+ return {
696
+ startExportOperation
697
+ };
698
+ };
874
699
 
875
- var _useApplicationContex = applicationShellConnectors.useApplicationContext(function (applicationContext) {
876
- return {
877
- language: applicationContext.dataLocale,
878
- languages: applicationContext.project.languages
879
- };
880
- }),
881
- languages = _useApplicationContex.languages,
882
- language = _useApplicationContex.language;
700
+ function ownKeys$2(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; }
701
+ function _objectSpread$2(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$2(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$2(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
702
+ function ExportTextMessage() {
703
+ const _useExportResourcesCo = useExportResourcesContext(),
704
+ resourceType = _useExportResourcesCo.resourceType,
705
+ totalResourcesCount = _useExportResourcesCo.totalResourcesCount,
706
+ selectedResourceIds = _useExportResourcesCo.selectedResourceIds,
707
+ exportType = _useExportResourcesCo.exportType;
708
+ const resourceTypePlural = resourceTypeToPlural({
709
+ resourceType: resourceType
710
+ });
711
+ let message;
712
+ let count;
713
+ switch (exportType) {
714
+ case EXPORT_TYPES.ALL:
715
+ message = messages.exportAllMessage;
716
+ count = totalResourcesCount;
717
+ break;
718
+ case EXPORT_TYPES.SELECTED:
719
+ message = messages.exportSelectedMessage;
720
+ count = selectedResourceIds.length;
721
+ break;
722
+ default:
723
+ throw new UnexpectedExportTypeError(exportType);
724
+ }
725
+ return jsxRuntime.jsx(uiKit.Text.Body, {
726
+ "data-testid": "export-description",
727
+ intlMessage: _objectSpread$2(_objectSpread$2({}, message), {}, {
728
+ values: {
729
+ count: count,
730
+ resourceType: resourceTypePlural,
731
+ b: getBold
732
+ }
733
+ })
734
+ });
735
+ }
883
736
 
737
+ const ExportFileSettingsStep = () => {
738
+ const intl = reactIntl.useIntl();
739
+ const _useExportResourcesCo = useExportResourcesContext(),
740
+ formik = _useExportResourcesCo.formik;
741
+ const _useApplicationContex = applicationShellConnectors.useApplicationContext(applicationContext => {
742
+ var _applicationContext$p;
743
+ return {
744
+ locale: applicationContext.dataLocale,
745
+ locales: ((_applicationContext$p = applicationContext.project) === null || _applicationContext$p === void 0 ? void 0 : _applicationContext$p.languages) || []
746
+ };
747
+ }),
748
+ locales = _useApplicationContex.locales,
749
+ locale = _useApplicationContex.locale;
750
+ const areAllLocalesChecked = _valuesInstanceProperty__default["default"](formik).locales.length === locales.length;
884
751
  return jsxRuntime.jsxs(uiKit.Spacings.Stack, {
885
- scale: "l",
886
- children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
752
+ scale: "xxxl",
753
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Stack, {
887
754
  scale: "l",
888
- children: [jsxRuntime.jsx(uiKit.SelectField, _objectSpread$3(_objectSpread$3({
889
- isDisabled: true
890
- }, formik.getFieldProps('outputFormat')), {}, {
891
- title: intl.formatMessage(messages.outputFormat),
892
- options: outputFormatOptions,
893
- horizontalConstraint: 7
894
- })), jsxRuntime.jsx(uiKit.TextField, _objectSpread$3(_objectSpread$3({
895
- title: intl.formatMessage(messages.fileName)
896
- }, formik.getFieldProps('fileName')), {}, {
897
- touched: formik.touched.fileName,
898
- errors: formik.errors.fileName,
899
- renderError: renderFileNameError,
900
- horizontalConstraint: 7
901
- }))]
902
- }), jsxRuntime.jsx(uiKit.Spacings.Inline, {
903
- children: jsxRuntime.jsx(uiKit.SelectField, _objectSpread$3(_objectSpread$3({
904
- id: "languages",
905
- title: jsxRuntime.jsxs(uiKit.Spacings.Inline, {
906
- scale: "s",
907
- children: [jsxRuntime.jsx("label", {
908
- htmlFor: "languages",
909
- children: intl.formatMessage(messages.localLanguage)
755
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
756
+ alignItems: "center",
757
+ children: [jsxRuntime.jsx(uiKit.ExportIcon, {
758
+ size: "medium",
759
+ color: "neutral60"
760
+ }), jsxRuntime.jsx(ExportTextMessage, {})]
761
+ }), jsxRuntime.jsxs(uiKit.Spacings.Stack, {
762
+ scale: "m",
763
+ children: [jsxRuntime.jsx(uiKit.SelectField, {
764
+ name: "outputFormat",
765
+ onChange: formik.handleChange,
766
+ onBlur: formik.handleBlur,
767
+ value: _valuesInstanceProperty__default["default"](formik).outputFormat,
768
+ title: intl.formatMessage(messages.outputFormat),
769
+ options: OUTPUT_FORMAT_OPTIONS
770
+ }), jsxRuntime.jsx(uiKit.TextField, {
771
+ name: "fileName",
772
+ onChange: formik.handleChange,
773
+ onBlur: formik.handleBlur,
774
+ value: _valuesInstanceProperty__default["default"](formik).fileName,
775
+ title: intl.formatMessage(messages.fileName),
776
+ touched: formik.touched.fileName,
777
+ errors: formik.errors.fileName,
778
+ renderError: renderFileNameError
779
+ }), jsxRuntime.jsxs(uiKit.Spacings.Stack, {
780
+ scale: "xs",
781
+ children: [jsxRuntime.jsx(uiKit.SelectField, {
782
+ id: "locales",
783
+ name: "locales",
784
+ value: _valuesInstanceProperty__default["default"](formik).locales,
785
+ title: intl.formatMessage(messages.locale),
786
+ options: mapLocalesToOptions(locales),
787
+ isMulti: true,
788
+ onChange: formik.handleChange,
789
+ onBlur: formik.handleBlur,
790
+ touched: formik.touched.locales,
791
+ errors: formik.errors.locales,
792
+ renderError: renderLocaleError
910
793
  }), jsxRuntime.jsx(uiKit.CheckboxInput, {
911
- name: "isAllLanguagesChecked",
912
- isChecked: _valuesInstanceProperty__default["default"](formik).isAllLanguagesChecked,
913
- onChange: function onChange(e) {
914
- if (e.target.checked) formik.setFieldValue('languages', languages);else formik.setFieldValue('languages', [language]);
915
- formik.handleChange(e);
794
+ isChecked: areAllLocalesChecked,
795
+ onChange: e => {
796
+ if (e.target.checked) formik.setFieldValue('locales', locales);else formik.setFieldValue('locales', [locale]);
916
797
  },
917
- children: jsxRuntime.jsx("div", {
918
- css: styles.notBold,
919
- children: intl.formatMessage(messages.all)
920
- })
798
+ children: intl.formatMessage(messages.selectAllLocales)
921
799
  })]
922
- }),
923
- options: mapLanguagesToOptions(languages),
924
- isMulti: true
925
- }, formik.getFieldProps('languages')), {}, {
926
- onChange: function onChange(e) {
927
- formik.handleChange(e);
928
- formik.setFieldValue('isAllLanguagesChecked', false);
929
- },
930
- touched: formik.touched.languages,
931
- errors: formik.errors.languages,
932
- renderError: renderLanguageError,
933
- horizontalConstraint: 7
934
- }))
935
- }), jsxRuntime.jsx(ExportSelection, {}), jsxRuntime.jsx(ExportPropertiesPanel, {
936
- renderProperties: props.renderProperties
800
+ })]
801
+ })]
802
+ }), jsxRuntime.jsx(uiKit.Spacings.Inline, {
803
+ justifyContent: "flex-end",
804
+ children: jsxRuntime.jsx(uiKit.PrimaryButton, {
805
+ label: intl.formatMessage(messages.continue),
806
+ onClick: formik.submitForm,
807
+ isDisabled: !formik.isValid
808
+ })
937
809
  })]
938
810
  });
939
- }
940
- ExportFileSettings.displayName = 'ExportFileSettings';
941
- ExportFileSettings.propTypes = {};
942
-
943
- function createExportOperation(_x) {
944
- return _createExportOperation.apply(this, arguments);
945
- }
811
+ };
946
812
 
947
- function _createExportOperation() {
948
- _createExportOperation = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(_ref) {
949
- var projectKey, graphQuery, asyncDispatchFn, uri, response;
950
- return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
951
- while (1) {
952
- switch (_context.prev = _context.next) {
953
- case 0:
954
- projectKey = _ref.projectKey, graphQuery = _ref.graphQuery, asyncDispatchFn = _ref.asyncDispatchFn;
955
- uri = "/proxy/export/".concat(projectKey, "/export-operations");
956
- _context.next = 4;
957
- return asyncDispatchFn(sdk.actions.post({
958
- // FIXME: EXPORT is undefined
959
- mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.EXPORT,
960
- uri: uri,
961
- headers: {
962
- accept: 'application/json'
813
+ function ownKeys$1(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; }
814
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context6, _context7; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context6 = ownKeys$1(Object(t), !0)).call(_context6, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context7 = ownKeys$1(Object(t))).call(_context7, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
815
+ const StyledCard = /*#__PURE__*/_styled__default["default"](uiKit.Card, {
816
+ target: "e1ocu3bb2"
817
+ } )({
818
+ name: "1jtoq3b",
819
+ styles: "border-radius:4px 0px 0px 4px;&>div{height:490px;overflow-y:auto;}"
820
+ } );
821
+ const StyledCardLeft = /*#__PURE__*/_styled__default["default"](StyledCard, {
822
+ target: "e1ocu3bb1"
823
+ } )({
824
+ name: "65buvr",
825
+ styles: "background-color:#f9f9fb"
826
+ } );
827
+ const StyledCardRight = /*#__PURE__*/_styled__default["default"](StyledCard, {
828
+ target: "e1ocu3bb0"
829
+ } )({
830
+ name: "1oktwfs",
831
+ styles: "border-radius:0px 4px 4px 0px;border-left:0"
832
+ } );
833
+ const ExportFieldsSelectionStep = () => {
834
+ var _context, _context2, _context4;
835
+ const intl = reactIntl.useIntl();
836
+ const _useExportResourcesCo = useExportResourcesContext(),
837
+ formik = _useExportResourcesCo.formik,
838
+ setCurrentStep = _useExportResourcesCo.setCurrentStep,
839
+ resourceType = _useExportResourcesCo.resourceType;
840
+ const areAllFieldsChecked = _everyInstanceProperty__default["default"](_context = _valuesInstanceProperty__default["default"](formik).fields).call(_context, field => field.isChecked);
841
+ const isAtLeastOneFieldChecked = _someInstanceProperty__default["default"](_context2 = _valuesInstanceProperty__default["default"](formik).fields).call(_context2, field => field.isChecked);
842
+ return jsxRuntime.jsxs(uiKit.Spacings.Stack, {
843
+ scale: "xl",
844
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Stack, {
845
+ scale: "m",
846
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
847
+ justifyContent: "space-between",
848
+ children: [jsxRuntime.jsx(uiKit.Text.Body, {
849
+ intlMessage: messages.selectColumnsToExport
850
+ }), jsxRuntime.jsx(uiKit.Link, {
851
+ isExternal: true,
852
+ tone: "secondary",
853
+ intlMessage: messages.columnDefinitions,
854
+ to: COLUMN_DEFINITIONS_URLS[resourceType]
855
+ })]
856
+ }), jsxRuntime.jsxs(uiKit.Grid, {
857
+ gridAutoFlow: "column",
858
+ gridTemplateColumns: "".concat(uiKit.customProperties.constraint5, " auto"),
859
+ children: [jsxRuntime.jsx(uiKit.Grid.Item, {
860
+ children: jsxRuntime.jsx(StyledCardLeft, {
861
+ insetScale: "l",
862
+ children: jsxRuntime.jsx(uiKit.CheckboxInput, {
863
+ isIndeterminate: !areAllFieldsChecked && isAtLeastOneFieldChecked,
864
+ isChecked: areAllFieldsChecked,
865
+ onChange: e => {
866
+ var _context3;
867
+ formik.setFieldValue('fields', _mapInstanceProperty__default["default"](_context3 = _valuesInstanceProperty__default["default"](formik).fields).call(_context3, field => _objectSpread$1(_objectSpread$1({}, field), {}, {
868
+ isChecked: field.isRequired ? true : e.target.checked
869
+ })));
963
870
  },
964
- payload: {
965
- query: graphQuery
966
- }
967
- }));
968
-
969
- case 4:
970
- response = _context.sent;
971
- return _context.abrupt("return", response);
972
-
973
- case 6:
974
- case "end":
975
- return _context.stop();
976
- }
977
- }
978
- }, _callee);
979
- }));
980
- return _createExportOperation.apply(this, arguments);
981
- }
982
-
983
- function ownKeys$2(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
984
-
985
- function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$2(Object(source), !0)).call(_context2, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$2(Object(source))).call(_context3, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
986
- function ExportConfirmationModal(props) {
987
- var _useApplicationContex = applicationShellConnectors.useApplicationContext(function (applicationContext) {
988
- return {
989
- projectName: applicationContext.project.name,
990
- projectKey: applicationContext.project.key
991
- };
992
- }),
993
- projectName = _useApplicationContex.projectName,
994
- projectKey = _useApplicationContex.projectKey;
995
-
996
- var _useExportResourcesCo = useExportResourcesContext(),
997
- formik = _useExportResourcesCo.formik,
998
- allResourcesCount = _useExportResourcesCo.allResourcesCount,
999
- matchingResourcesCount = _useExportResourcesCo.matchingResourcesCount,
1000
- selectedResourceIds = _useExportResourcesCo.selectedResourceIds,
1001
- resourceType = _useExportResourcesCo.resourceType,
1002
- setExportOperationStarted = _useExportResourcesCo.setExportOperationStarted;
1003
-
1004
- var intl = reactIntl.useIntl();
1005
- var asyncDispatch = sdk.useAsyncDispatch();
1006
- var resourceTypePlural = resourceTypeToPlural({
1007
- resourceType: props.resourceType
871
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
872
+ intlMessage: messages.allGeneralFields
873
+ })
874
+ })
875
+ })
876
+ }), jsxRuntime.jsx(uiKit.Grid.Item, {
877
+ children: jsxRuntime.jsx(StyledCardRight, {
878
+ insetScale: "l",
879
+ children: _mapInstanceProperty__default["default"](_context4 = _valuesInstanceProperty__default["default"](formik).fields).call(_context4, field => jsxRuntime.jsx(uiKit.CheckboxInput, {
880
+ isReadOnly: field.isRequired,
881
+ isChecked: field.isChecked,
882
+ onChange: e => {
883
+ var _context5;
884
+ formik.setFieldValue('fields', _mapInstanceProperty__default["default"](_context5 = _valuesInstanceProperty__default["default"](formik).fields).call(_context5, _field => field.name === _field.name ? _objectSpread$1(_objectSpread$1({}, _field), {}, {
885
+ isChecked: e.target.checked
886
+ }) : _field));
887
+ },
888
+ children: jsxRuntime.jsxs(uiKit.Text.Body, {
889
+ children: [field.label, " ", field.isRequired && '*']
890
+ })
891
+ }, field.name))
892
+ })
893
+ })]
894
+ })]
895
+ }), jsxRuntime.jsxs(uiKit.Spacings.Inline, {
896
+ scale: "m",
897
+ justifyContent: "flex-end",
898
+ children: [jsxRuntime.jsx(uiKit.SecondaryButton, {
899
+ label: intl.formatMessage(messages.back),
900
+ onClick: () => setCurrentStep(1)
901
+ }), jsxRuntime.jsx(uiKit.PrimaryButton, {
902
+ label: intl.formatMessage(messages.startExport),
903
+ onClick: formik.submitForm,
904
+ isDisabled: !formik.isValid
905
+ })]
906
+ })]
1008
907
  });
908
+ };
1009
909
 
1010
- var countInConfirmationMessage = function countInConfirmationMessage() {
1011
- switch (_valuesInstanceProperty__default["default"](formik).exportSelectionType) {
1012
- case EXPORT_SELECTION_TYPES.ALL_RESOURCES:
1013
- return allResourcesCount;
1014
-
1015
- case EXPORT_SELECTION_TYPES.ONLY_MATCHING:
1016
- return matchingResourcesCount;
1017
-
1018
- case EXPORT_SELECTION_TYPES.ONLY_SELECTED:
1019
- return selectedResourceIds.length;
910
+ const ExportResourcesContext = /*#__PURE__*/React.createContext();
1020
911
 
1021
- default:
1022
- throw new UnexpectedSelectionTypeError(_valuesInstanceProperty__default["default"](formik).exportSelectionType);
912
+ PropTypes__default["default"].shape({
913
+ resourceType: PropTypes__default["default"].string.isRequired,
914
+ outputFormat: PropTypes__default["default"].string,
915
+ onClose: PropTypes__default["default"].func,
916
+ totalResourcesCount: PropTypes__default["default"].number.isRequired,
917
+ selectedResourceIds: PropTypes__default["default"].array,
918
+ // TODO: Circular reference
919
+ fields: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({
920
+ name: PropTypes__default["default"].string.isRequired,
921
+ label: PropTypes__default["default"].string,
922
+ isLocalized: PropTypes__default["default"].bool,
923
+ fields: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({
924
+ name: PropTypes__default["default"].string.isRequired,
925
+ label: PropTypes__default["default"].string,
926
+ isLocalized: PropTypes__default["default"].bool,
927
+ isSelectedByDefault: PropTypes__default["default"].bool,
928
+ isRequired: PropTypes__default["default"].bool
929
+ }))
930
+ })).isRequired,
931
+ exportType: PropTypes__default["default"].string,
932
+ renderProperties: PropTypes__default["default"].func
933
+ }).isRequired;
934
+
935
+ const ExportResourcesProvider = props => {
936
+ const _useStartExportOperat = useStartExportOperation(props),
937
+ startExportOperation = _useStartExportOperat.startExportOperation;
938
+ const initialValues = useInitialValues(props);
939
+ const _React$useState = React__default["default"].useState(1),
940
+ _React$useState2 = _slicedToArray(_React$useState, 2),
941
+ currentStep = _React$useState2[0],
942
+ setCurrentStep = _React$useState2[1];
943
+ const onSubmit = async values => {
944
+ if (currentStep === 1) {
945
+ setCurrentStep(2);
946
+ } else {
947
+ startExportOperation(values);
1023
948
  }
1024
949
  };
1025
-
1026
- return jsxRuntime.jsx(applicationComponents.ConfirmationDialog, {
1027
- dataAttributesPrimaryButton: {
1028
- 'data-testid': 'confirm-export-button'
1029
- },
1030
- title: intl.formatMessage(messages.confirmationTitle, {
1031
- resourceType: resourceTypePlural
1032
- }),
1033
- labelPrimary: intl.formatMessage(messages.exportConfirmationLabel, {
1034
- resourceType: resourceTypePlural
950
+ const formik$1 = formik.useFormik({
951
+ initialValues,
952
+ validate: values => validate({
953
+ values,
954
+ step: currentStep
1035
955
  }),
1036
- isOpen: props.isOpen,
1037
- onClose: props.closeModal,
1038
- onCancel: props.closeModal,
1039
- onConfirm: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
1040
- var graphQuery, response;
1041
- return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
1042
- while (1) {
1043
- switch (_context.prev = _context.next) {
1044
- case 0:
1045
- setExportOperationStarted(false);
1046
- graphQuery = buildGraphQuery({
1047
- resourceType: resourceType,
1048
- selectedResourceIds: selectedResourceIds,
1049
- columns: _valuesInstanceProperty__default["default"](formik).columns,
1050
- exportSelectionType: _valuesInstanceProperty__default["default"](formik).exportSelectionType,
1051
- languages: _valuesInstanceProperty__default["default"](formik).languages
1052
- });
1053
- props.closeModal();
1054
- _context.prev = 3;
1055
- _context.next = 6;
1056
- return createExportOperation({
1057
- projectKey: projectKey,
1058
- graphQuery: graphQuery,
1059
- asyncDispatchFn: asyncDispatch
1060
- });
1061
-
1062
- case 6:
1063
- response = _context.sent;
1064
- _context.t0 = response.state;
1065
- _context.next = _context.t0 === EXPORT_OPERATION_STATES.PROCESSING ? 10 : _context.t0 === EXPORT_OPERATION_STATES.COMPLETED ? 10 : 12;
1066
- break;
1067
-
1068
- case 10:
1069
- setExportOperationStarted(true);
1070
- return _context.abrupt("break", 13);
1071
-
1072
- case 12:
1073
- throw new UnexpectedExportOperationStateError(response.state);
1074
-
1075
- case 13:
1076
- _context.next = 18;
1077
- break;
1078
-
1079
- case 15:
1080
- _context.prev = 15;
1081
- _context.t1 = _context["catch"](3);
1082
- actionsGlobal.showApiErrorNotification({
1083
- errors: _context.t1
1084
- });
1085
-
1086
- case 18:
1087
- case "end":
1088
- return _context.stop();
1089
- }
1090
- }
1091
- }, _callee, null, [[3, 15]]);
1092
- })),
1093
- children: jsxRuntime.jsxs("div", {
1094
- children: [jsxRuntime.jsx(uiKit.Text.Body, {
1095
- intlMessage: _objectSpread$2(_objectSpread$2({}, messages.confirmationBodyPlan), {}, {
1096
- values: {
1097
- resourceType: resourceTypePlural,
1098
- projectName: projectName,
1099
- count: countInConfirmationMessage(),
1100
- bold: getBold
1101
- }
1102
- })
1103
- }), jsxRuntime.jsx(uiKit.Text.Body, {
1104
- intlMessage: messages.confirmationBodyQuestion
1105
- })]
1106
- })
956
+ onSubmit
1107
957
  });
1108
- }
1109
- ExportConfirmationModal.propTypes = {};
1110
-
1111
- function ownKeys$1(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1112
-
1113
- function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$1(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$1(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
1114
-
1115
- var getExportLogsLink = function getExportLogsLink(projectKey, msg) {
1116
- return jsxRuntime.jsx(uiKit.Link, {
1117
- to: "/".concat(projectKey, "/operations/export-logs"),
1118
- children: msg
958
+ React__default["default"].useEffect(() => {
959
+ formik$1.validateForm();
960
+ }, [currentStep]);
961
+ return jsxRuntime.jsx(ExportResourcesContext.Provider, {
962
+ value: {
963
+ currentStep,
964
+ setCurrentStep,
965
+ formik: formik$1,
966
+ resourceType: props.resourceType,
967
+ exportType: props.exportType,
968
+ totalResourcesCount: props.totalResourcesCount,
969
+ selectedResourceIds: props.selectedResourceIds
970
+ },
971
+ children: props.children
1119
972
  });
1120
973
  };
974
+ ExportResourcesProvider.displayName = 'ExportResourcesProvider';
975
+ ExportResourcesProvider.propTypes = {};
976
+
977
+ const CurrentStep = () => {
978
+ const _useExportResourcesCo = useExportResourcesContext(),
979
+ currentStep = _useExportResourcesCo.currentStep;
980
+ const steps = {
981
+ 1: jsxRuntime.jsx(ExportFileSettingsStep, {}),
982
+ 2: jsxRuntime.jsx(ExportFieldsSelectionStep, {})
983
+ };
984
+ return steps[currentStep] || null;
985
+ };
1121
986
 
1122
- function ExportOperationSuccessMessage(_ref) {
1123
- var isShown = _ref.isShown;
1124
-
1125
- var _useApplicationContex = applicationShellConnectors.useApplicationContext(function (applicationContext) {
1126
- return {
1127
- projectKey: applicationContext.project.key
1128
- };
1129
- }),
1130
- projectKey = _useApplicationContex.projectKey;
1131
-
1132
- if (!isShown) return null;
1133
- return jsxRuntime.jsx("div", {
1134
- css: styles.successMessage,
1135
- "data-testid": "export-started-message",
1136
- children: jsxRuntime.jsx(uiKit.Constraints.Horizontal, {
1137
- max: 16,
1138
- children: jsxRuntime.jsx(uiKit.ContentNotification, {
1139
- type: "success",
1140
- intlMessage: _objectSpread$1(_objectSpread$1({}, messages.exportOperationSuccessMessage), {}, {
1141
- values: {
1142
- logsLink: function logsLink(msg) {
1143
- return getExportLogsLink(projectKey, msg);
1144
- }
1145
- }
1146
- })
1147
- })
1148
- })
1149
- });
1150
- }
1151
- ExportOperationSuccessMessage.propTypes = {};
1152
-
1153
- var _excluded = ["renderProperties"];
1154
-
1155
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1156
-
1157
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
1158
-
1159
- var ExportResourcesModal = function ExportResourcesModal(_ref) {
1160
- var renderProperties = _ref.renderProperties,
1161
- props = _objectWithoutProperties(_ref, _excluded);
1162
-
1163
- var intl = reactIntl.useIntl();
1164
- var confirmationModal = applicationComponents.useModalState();
1165
- var resourceTypePlural = resourceTypeToPlural({
987
+ function ownKeys(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; }
988
+ function _objectSpread(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(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(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
989
+ const ExportResourcesModal = props => {
990
+ const intl = reactIntl.useIntl();
991
+ const resourceTypePlural = resourceTypeToPlural({
1166
992
  resourceType: props.resourceType
1167
993
  });
1168
- return jsxRuntime.jsx(ExportResourcesContextProvider, _objectSpread(_objectSpread({}, props), {}, {
1169
- children: jsxRuntime.jsx(ExportResourcesContext.Consumer, {
1170
- children: function children(_ref2) {
1171
- var formik = _ref2.formik,
1172
- exportOperationStarted = _ref2.exportOperationStarted;
1173
- return jsxRuntime.jsxs(applicationComponents.FormModalPage, {
1174
- title: intl.formatMessage(messages.modalTitle, {
1175
- resourceType: resourceTypePlural
1176
- }),
1177
- isOpen: props.isOpen,
1178
- onClose: props.closeModal,
1179
- onSecondaryButtonClick: props.closeModal,
1180
- isPrimaryButtonDisabled: !formik.isValid,
1181
- labelPrimaryButton: intl.formatMessage(messages.exportButton, {
1182
- resourceType: resourceTypePlural
1183
- }),
1184
- subtitle: intl.formatMessage(messages.modalSubTitle),
1185
- topBarPreviousPathLabel: intl.formatMessage(messages.topBarPreviousPathLabel, {
1186
- resourceType: props.resourceType
1187
- }),
1188
- onPrimaryButtonClick: confirmationModal.openModal,
1189
- children: [jsxRuntime.jsx(ExportOperationSuccessMessage, {
1190
- isShown: exportOperationStarted
1191
- }), jsxRuntime.jsx(ExportFileSettings, {
1192
- renderProperties: renderProperties
1193
- }), jsxRuntime.jsx(ExportConfirmationModal, {
1194
- resourceType: props.resourceType,
1195
- isOpen: confirmationModal.isModalOpen,
1196
- closeModal: confirmationModal.closeModal
1197
- })]
1198
- });
1199
- }
994
+ return jsxRuntime.jsx(ExportResourcesProvider, _objectSpread(_objectSpread({}, props), {}, {
995
+ children: jsxRuntime.jsx(applicationComponents.InfoDialog, {
996
+ isOpen: true,
997
+ title: intl.formatMessage(messages.modalTitle, {
998
+ resourceType: resourceTypePlural
999
+ }),
1000
+ onClose: props.onClose,
1001
+ size: 16,
1002
+ children: jsxRuntime.jsx(CurrentStep, {})
1200
1003
  })
1201
1004
  }));
1202
1005
  };
1203
-
1204
1006
  ExportResourcesModal.displayName = 'ExportResourcesModal';
1205
1007
  ExportResourcesModal.propTypes = {};
1206
1008
  ExportResourcesModal.defaultProps = {
1207
1009
  selectedResourceIds: [],
1208
- appliedSearchTerms: [],
1209
- appliedFilters: [],
1210
- matchingResourcesCount: 0,
1211
- exportSelectionType: EXPORT_SELECTION_TYPES.ALL_RESOURCES,
1212
- outputFormat: OUTPUT_FORMATS.JSON
1010
+ exportType: EXPORT_TYPES.ALL,
1011
+ outputFormat: OUTPUT_FORMATS.CSV
1213
1012
  };
1214
1013
 
1215
- exports.EXPORT_SELECTION_TYPES = EXPORT_SELECTION_TYPES;
1014
+ exports.EXPORTABLE_RESOURCES = EXPORTABLE_RESOURCES;
1015
+ exports.EXPORT_TYPES = EXPORT_TYPES;
1216
1016
  exports["default"] = ExportResourcesModal;