@atlaskit/feedback-collector 15.2.1 → 15.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,6 +29,7 @@ const FeedbackForm = ({
29
29
  showDefaultTextFields = true,
30
30
  customContent,
31
31
  onClose,
32
+ onCancel,
32
33
  onSubmit,
33
34
  feedbackTitle,
34
35
  feedbackTitleDetails,
@@ -59,6 +60,10 @@ const FeedbackForm = ({
59
60
  formatMessage
60
61
  } = useIntl();
61
62
  const isTypeSelected = () => type !== 'empty';
63
+ const handleCancel = () => {
64
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
65
+ onClose();
66
+ };
62
67
  const canShowTextField = isTypeSelected() || !showTypeField;
63
68
  const hasDescription = description || hasDescriptionDefaultValue;
64
69
  const isDisabled = isSubmitting || disableSubmitButton;
@@ -189,13 +194,7 @@ const FeedbackForm = ({
189
194
  }));
190
195
  }
191
196
  },
192
- menuPortalTarget: document.body,
193
- styles: {
194
- menuPortal: base => ({
195
- ...base,
196
- zIndex: 9999
197
- })
198
- },
197
+ menuPosition: "fixed",
199
198
  options: selectOptions
200
199
  // @ts-ignore
201
200
  ,
@@ -222,10 +221,7 @@ const FeedbackForm = ({
222
221
  }
223
222
  },
224
223
  value: description
225
- })), validationErrors.description && /*#__PURE__*/React.createElement(ErrorMessage, null, validationErrors.description))), !anonymousFeedback && /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement("legend", {
226
- "aria-hidden": false,
227
- hidden: true
228
- }, /*#__PURE__*/React.createElement(FormattedMessage, messages.optInOptionsLegend)), /*#__PURE__*/React.createElement(Field, {
224
+ })), validationErrors.description && /*#__PURE__*/React.createElement(ErrorMessage, null, validationErrors.description))), !anonymousFeedback && /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement("legend", null, /*#__PURE__*/React.createElement(FormattedMessage, messages.optInOptionsLegend)), /*#__PURE__*/React.createElement(Field, {
229
225
  name: "can-be-contacted"
230
226
  }, ({
231
227
  fieldProps
@@ -260,7 +256,7 @@ const FeedbackForm = ({
260
256
  appearance: 'information'
261
257
  }, feedbackIsAnonymous))))), /*#__PURE__*/React.createElement(ModalFooter, null, /*#__PURE__*/React.createElement(Button, {
262
258
  appearance: "subtle",
263
- onClick: onClose
259
+ onClick: handleCancel
264
260
  }, cancelButtonLabel || /*#__PURE__*/React.createElement(FormattedMessage, messages.cancelButtonLabel)), /*#__PURE__*/React.createElement(Button, {
265
261
  appearance: "primary",
266
262
  type: "submit",
@@ -311,13 +307,7 @@ const FeedbackForm = ({
311
307
  }));
312
308
  }
313
309
  },
314
- menuPortalTarget: document.body,
315
- styles: {
316
- menuPortal: base => ({
317
- ...base,
318
- zIndex: 9999
319
- })
320
- },
310
+ menuPosition: "fixed",
321
311
  options: selectOptions
322
312
  // @ts-ignore
323
313
  ,
@@ -344,10 +334,7 @@ const FeedbackForm = ({
344
334
  }
345
335
  },
346
336
  value: description
347
- })), validationErrors.description && /*#__PURE__*/React.createElement(ErrorMessage, null, validationErrors.description))), !anonymousFeedback && /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement("legend", {
348
- "aria-hidden": false,
349
- hidden: true
350
- }, /*#__PURE__*/React.createElement(FormattedMessage, messages.optInOptionsLegend)), /*#__PURE__*/React.createElement(Field, {
337
+ })), validationErrors.description && /*#__PURE__*/React.createElement(ErrorMessage, null, validationErrors.description))), !anonymousFeedback && /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement("legend", null, /*#__PURE__*/React.createElement(FormattedMessage, messages.optInOptionsLegend)), /*#__PURE__*/React.createElement(Field, {
351
338
  name: "can-be-contacted"
352
339
  }, ({
353
340
  fieldProps
@@ -382,7 +369,7 @@ const FeedbackForm = ({
382
369
  appearance: 'information'
383
370
  }, feedbackIsAnonymous))))), /*#__PURE__*/React.createElement(ModalFooter, null, /*#__PURE__*/React.createElement(Button, {
384
371
  appearance: "subtle",
385
- onClick: onClose
372
+ onClick: handleCancel
386
373
  }, cancelButtonLabel || /*#__PURE__*/React.createElement(FormattedMessage, messages.cancelButtonLabel)), /*#__PURE__*/React.createElement(Button, {
387
374
  appearance: "primary",
388
375
  type: "submit",
@@ -38,18 +38,18 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
38
38
  _defineProperty(_this, "postFeedback", /*#__PURE__*/function () {
39
39
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(formValues) {
40
40
  var entrypointId, fetchUrl, formData, body, postData;
41
- return _regeneratorRuntime.wrap(function _callee$(_context) {
41
+ return _regeneratorRuntime.wrap(function (_context) {
42
42
  while (1) switch (_context.prev = _context.next) {
43
43
  case 0:
44
44
  entrypointId = _this.props.entrypointId;
45
45
  fetchUrl = _this.getFeedbackUrl(); // Don't dispatch unless we have suitable props (allows tests to pass through empty strings and avoid redundant network calls)
46
46
  if (!entrypointId) {
47
- _context.next = 10;
47
+ _context.next = 2;
48
48
  break;
49
49
  }
50
- _context.next = 5;
50
+ _context.next = 1;
51
51
  return _this.mapFormToJSD(formValues);
52
- case 5:
52
+ case 1:
53
53
  formData = _context.sent;
54
54
  body = {
55
55
  feedback: _objectSpread({
@@ -73,7 +73,7 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
73
73
  }),
74
74
  credentials: 'include'
75
75
  });
76
- case 10:
76
+ case 2:
77
77
  _this.props.onClose();
78
78
 
79
79
  // slightly delay confirming submit since we don't wait for the REST call to succeed
@@ -85,7 +85,7 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
85
85
  setTimeout(function () {
86
86
  return _this.props.onSubmit(formValues);
87
87
  }, _this.props.timeoutOnSubmit);
88
- case 12:
88
+ case 3:
89
89
  case "end":
90
90
  return _context.stop();
91
91
  }
@@ -103,17 +103,17 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
103
103
  value: function () {
104
104
  var _componentDidMount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
105
105
  var anonymousFeedback;
106
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
106
+ return _regeneratorRuntime.wrap(function (_context2) {
107
107
  while (1) switch (_context2.prev = _context2.next) {
108
108
  case 0:
109
- _context2.next = 2;
109
+ _context2.next = 1;
110
110
  return this.shouldShowOptInCheckboxesNew();
111
- case 2:
111
+ case 1:
112
112
  anonymousFeedback = !_context2.sent;
113
113
  this.setState({
114
114
  anonymousFeedback: anonymousFeedback
115
115
  });
116
- case 4:
116
+ case 2:
117
117
  case "end":
118
118
  return _context2.stop();
119
119
  }
@@ -155,20 +155,20 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
155
155
  }, {
156
156
  key: "getPackageVersion",
157
157
  value: function getPackageVersion() {
158
- return "15.2.0" || 'Unknown, at least 11.0.0';
158
+ return "15.3.0" || 'Unknown, at least 11.0.0';
159
159
  }
160
160
  }, {
161
161
  key: "getEntitlementInformation",
162
162
  value: function () {
163
163
  var _getEntitlementInformation = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
164
164
  var _entitlementDetails, _entitlementDetails2, _productName, _entitlement;
165
- var url, productName, productEntitlement, entitlementDetails, productKey, _document$querySelect, hasPremium, entitlement, entitlementInformation, cloudSiteId, _entitlementDetails3;
166
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
165
+ var url, productName, productEntitlement, entitlementDetails, productKey, _document$querySelect, hasPremium, entitlement, entitlementInformation, cloudSiteId, _entitlementDetails3, _t;
166
+ return _regeneratorRuntime.wrap(function (_context3) {
167
167
  while (1) switch (_context3.prev = _context3.next) {
168
168
  case 0:
169
169
  url = this.getGatewayUrl(); // jira / confluence / bitbucket / trello
170
170
  if (!window.location.host.includes('bitbucket.org')) {
171
- _context3.next = 9;
171
+ _context3.next = 1;
172
172
  break;
173
173
  }
174
174
  productName = 'Bitbucket';
@@ -176,18 +176,18 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
176
176
  entitlementDetails = JSON.parse(JSON.stringify((_document$querySelect = document.querySelector('meta[id="bb-bootstrap"]')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.getAttribute('data-current-user')));
177
177
  hasPremium = entitlementDetails['hasPremium'];
178
178
  productEntitlement = hasPremium ? 'PREMIUM' : 'STANDARD';
179
- _context3.next = 24;
179
+ _context3.next = 6;
180
180
  break;
181
- case 9:
181
+ case 1:
182
182
  if (!['trellis.coffee', 'trello.com'].includes(window.location.host)) {
183
- _context3.next = 14;
183
+ _context3.next = 2;
184
184
  break;
185
185
  }
186
186
  productName = 'Trello';
187
187
  productKey = 'trello';
188
- _context3.next = 24;
188
+ _context3.next = 6;
189
189
  break;
190
- case 14:
190
+ case 2:
191
191
  if (document.querySelector('meta[id="confluence-context-path"]')) {
192
192
  productName = 'Confluence';
193
193
  productKey = 'pricingplan.confluence.ondemand';
@@ -195,8 +195,8 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
195
195
  productName = 'Jira';
196
196
  productKey = 'jira-software.ondemand';
197
197
  }
198
- _context3.prev = 15;
199
- _context3.next = 18;
198
+ _context3.prev = 3;
199
+ _context3.next = 4;
200
200
  return fetch("".concat(url, "/customer-context/entitlements/").concat(window.location.host), _objectSpread({
201
201
  method: 'GET',
202
202
  headers: {
@@ -205,15 +205,15 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
205
205
  }, isApiGatewayUrl(url) ? {
206
206
  credentials: 'include'
207
207
  } : {}));
208
- case 18:
208
+ case 4:
209
209
  entitlementDetails = _context3.sent;
210
- _context3.next = 24;
210
+ _context3.next = 6;
211
211
  break;
212
- case 21:
213
- _context3.prev = 21;
214
- _context3.t0 = _context3["catch"](15);
212
+ case 5:
213
+ _context3.prev = 5;
214
+ _t = _context3["catch"](3);
215
215
  entitlementDetails = undefined;
216
- case 24:
216
+ case 6:
217
217
  entitlementInformation = [];
218
218
  cloudSiteId = ((_entitlementDetails = entitlementDetails) === null || _entitlementDetails === void 0 ? void 0 : _entitlementDetails.cloudSiteId) || '';
219
219
  if ((_entitlementDetails2 = entitlementDetails) !== null && _entitlementDetails2 !== void 0 && _entitlementDetails2.children) {
@@ -235,11 +235,11 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
235
235
  value: cloudSiteId
236
236
  });
237
237
  return _context3.abrupt("return", entitlementInformation);
238
- case 29:
238
+ case 7:
239
239
  case "end":
240
240
  return _context3.stop();
241
241
  }
242
- }, _callee3, this, [[15, 21]]);
242
+ }, _callee3, this, [[3, 5]]);
243
243
  }));
244
244
  function getEntitlementInformation() {
245
245
  return _getEntitlementInformation.apply(this, arguments);
@@ -267,20 +267,20 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
267
267
  key: "getAtlassianID",
268
268
  value: function () {
269
269
  var _getAtlassianID = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
270
- var _this$props3, atlassianAccountId, shouldGetEntitlementDetails, url, result, json;
271
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
270
+ var _this$props3, atlassianAccountId, shouldGetEntitlementDetails, url, result, json, _t2;
271
+ return _regeneratorRuntime.wrap(function (_context4) {
272
272
  while (1) switch (_context4.prev = _context4.next) {
273
273
  case 0:
274
274
  _this$props3 = this.props, atlassianAccountId = _this$props3.atlassianAccountId, shouldGetEntitlementDetails = _this$props3.shouldGetEntitlementDetails;
275
275
  _context4.prev = 1;
276
276
  if (!(atlassianAccountId || !shouldGetEntitlementDetails)) {
277
- _context4.next = 4;
277
+ _context4.next = 2;
278
278
  break;
279
279
  }
280
280
  return _context4.abrupt("return", atlassianAccountId);
281
- case 4:
281
+ case 2:
282
282
  url = this.getGatewayUrl();
283
- _context4.next = 7;
283
+ _context4.next = 3;
284
284
  return fetch("".concat(url, "/me"), _objectSpread({
285
285
  method: 'GET',
286
286
  headers: {
@@ -289,22 +289,22 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
289
289
  }, isApiGatewayUrl(url) ? {
290
290
  credentials: 'include'
291
291
  } : {}));
292
- case 7:
292
+ case 3:
293
293
  result = _context4.sent;
294
- _context4.next = 10;
294
+ _context4.next = 4;
295
295
  return result.json();
296
- case 10:
296
+ case 4:
297
297
  json = _context4.sent;
298
298
  return _context4.abrupt("return", json.account_id);
299
- case 14:
300
- _context4.prev = 14;
301
- _context4.t0 = _context4["catch"](1);
299
+ case 5:
300
+ _context4.prev = 5;
301
+ _t2 = _context4["catch"](1);
302
302
  return _context4.abrupt("return", undefined);
303
- case 17:
303
+ case 6:
304
304
  case "end":
305
305
  return _context4.stop();
306
306
  }
307
- }, _callee4, this, [[1, 14]]);
307
+ }, _callee4, this, [[1, 5]]);
308
308
  }));
309
309
  function getAtlassianID() {
310
310
  return _getAtlassianID.apply(this, arguments);
@@ -396,25 +396,25 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
396
396
  var _mapFormToJSD = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(formValues) {
397
397
  var _this$props4, _this$props5;
398
398
  var entitlementInformation, atlassianID;
399
- return _regeneratorRuntime.wrap(function _callee5$(_context5) {
399
+ return _regeneratorRuntime.wrap(function (_context5) {
400
400
  while (1) switch (_context5.prev = _context5.next) {
401
401
  case 0:
402
402
  entitlementInformation = null;
403
403
  if (!((_this$props4 = this.props) !== null && _this$props4 !== void 0 && _this$props4.shouldGetEntitlementDetails)) {
404
- _context5.next = 5;
404
+ _context5.next = 2;
405
405
  break;
406
406
  }
407
- _context5.next = 4;
407
+ _context5.next = 1;
408
408
  return this.getEntitlementInformation();
409
- case 4:
409
+ case 1:
410
410
  entitlementInformation = _context5.sent;
411
- case 5:
411
+ case 2:
412
412
  if ((_this$props5 = this.props) !== null && _this$props5 !== void 0 && _this$props5.email) {
413
413
  this.addEmailToContext();
414
414
  }
415
- _context5.next = 8;
415
+ _context5.next = 3;
416
416
  return this.getAtlassianID();
417
- case 8:
417
+ case 3:
418
418
  atlassianID = _context5.sent;
419
419
  this.addAccountIdToContext(atlassianID);
420
420
  return _context5.abrupt("return", {
@@ -447,7 +447,7 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
447
447
  value: this.props.enrollInResearchDeclineValue
448
448
  }], _toConsumableArray(this.props.additionalFields)).filter(Boolean)
449
449
  });
450
- case 11:
450
+ case 4:
451
451
  case "end":
452
452
  return _context5.stop();
453
453
  }
@@ -477,6 +477,7 @@ var FeedbackCollector = /*#__PURE__*/function (_Component) {
477
477
  feedbackGroupLabels: this.props.feedbackGroupLabels,
478
478
  onSubmit: this.postFeedback,
479
479
  onClose: this.props.onClose,
480
+ onCancel: this.props.onCancel,
480
481
  locale: this.props.locale,
481
482
  anonymousFeedback: fg('platform.proforma-form-builder-feedback_hupaz') ? this.state.anonymousFeedback : anonymousFeedback,
482
483
  selectLabel: this.props.selectLabel,
@@ -40,6 +40,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
40
40
  showDefaultTextFields = _ref2$showDefaultText === void 0 ? true : _ref2$showDefaultText,
41
41
  customContent = _ref2.customContent,
42
42
  onClose = _ref2.onClose,
43
+ onCancel = _ref2.onCancel,
43
44
  onSubmit = _ref2.onSubmit,
44
45
  feedbackTitle = _ref2.feedbackTitle,
45
46
  feedbackTitleDetails = _ref2.feedbackTitleDetails,
@@ -90,6 +91,10 @@ var FeedbackForm = function FeedbackForm(_ref2) {
90
91
  var isTypeSelected = function isTypeSelected() {
91
92
  return type !== 'empty';
92
93
  };
94
+ var handleCancel = function handleCancel() {
95
+ onCancel === null || onCancel === void 0 || onCancel();
96
+ onClose();
97
+ };
93
98
  var canShowTextField = isTypeSelected() || !showTypeField;
94
99
  var hasDescription = description || hasDescriptionDefaultValue;
95
100
  var isDisabled = isSubmitting || disableSubmitButton;
@@ -180,35 +185,35 @@ var FeedbackForm = function FeedbackForm(_ref2) {
180
185
  }, fg('platform-design_system_team-form_conversion') ? /*#__PURE__*/React.createElement(Form, {
181
186
  onSubmit: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
182
187
  var errors;
183
- return _regeneratorRuntime.wrap(function _callee$(_context) {
188
+ return _regeneratorRuntime.wrap(function (_context) {
184
189
  while (1) switch (_context.prev = _context.next) {
185
190
  case 0:
186
191
  errors = getValidationErrors();
187
192
  if (!(Object.keys(errors).length > 0)) {
188
- _context.next = 4;
193
+ _context.next = 1;
189
194
  break;
190
195
  }
191
196
  setValidationErrors(errors);
192
197
  return _context.abrupt("return");
193
- case 4:
198
+ case 1:
194
199
  setIsSubmitting(true);
195
- _context.prev = 5;
196
- _context.next = 8;
200
+ _context.prev = 2;
201
+ _context.next = 3;
197
202
  return onSubmit({
198
203
  canBeContacted: canBeContacted,
199
204
  description: description,
200
205
  enrollInResearchGroup: enrollInResearchGroup,
201
206
  type: type
202
207
  });
203
- case 8:
204
- _context.prev = 8;
208
+ case 3:
209
+ _context.prev = 3;
205
210
  setIsSubmitting(false);
206
- return _context.finish(8);
207
- case 11:
211
+ return _context.finish(3);
212
+ case 4:
208
213
  case "end":
209
214
  return _context.stop();
210
215
  }
211
- }, _callee, null, [[5,, 8, 11]]);
216
+ }, _callee, null, [[2,, 3, 4]]);
212
217
  }))
213
218
  }, /*#__PURE__*/React.createElement(ModalHeader, {
214
219
  hasCloseButton: true
@@ -234,14 +239,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
234
239
  });
235
240
  }
236
241
  },
237
- menuPortalTarget: document.body,
238
- styles: {
239
- menuPortal: function menuPortal(base) {
240
- return _objectSpread(_objectSpread({}, base), {}, {
241
- zIndex: 9999
242
- });
243
- }
244
- },
242
+ menuPosition: "fixed",
245
243
  options: selectOptions
246
244
  // @ts-ignore
247
245
  ,
@@ -271,10 +269,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
271
269
  },
272
270
  value: description
273
271
  })), validationErrors.description && /*#__PURE__*/React.createElement(ErrorMessage, null, validationErrors.description));
274
- }), !anonymousFeedback && /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement("legend", {
275
- "aria-hidden": false,
276
- hidden: true
277
- }, /*#__PURE__*/React.createElement(FormattedMessage, messages.optInOptionsLegend)), /*#__PURE__*/React.createElement(Field, {
272
+ }), !anonymousFeedback && /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement("legend", null, /*#__PURE__*/React.createElement(FormattedMessage, messages.optInOptionsLegend)), /*#__PURE__*/React.createElement(Field, {
278
273
  name: "can-be-contacted"
279
274
  }, function (_ref6) {
280
275
  var fieldProps = _ref6.fieldProps;
@@ -319,7 +314,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
319
314
  }, feedbackIsAnonymous);
320
315
  })))), /*#__PURE__*/React.createElement(ModalFooter, null, /*#__PURE__*/React.createElement(Button, {
321
316
  appearance: "subtle",
322
- onClick: onClose
317
+ onClick: handleCancel
323
318
  }, cancelButtonLabel || /*#__PURE__*/React.createElement(FormattedMessage, messages.cancelButtonLabel)), /*#__PURE__*/React.createElement(Button, {
324
319
  appearance: "primary",
325
320
  type: "submit",
@@ -328,35 +323,35 @@ var FeedbackForm = function FeedbackForm(_ref2) {
328
323
  }, submitButtonLabel || /*#__PURE__*/React.createElement(FormattedMessage, messages.submitButtonLabel)))) : /*#__PURE__*/React.createElement(Form, {
329
324
  onSubmit: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
330
325
  var errors;
331
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
326
+ return _regeneratorRuntime.wrap(function (_context2) {
332
327
  while (1) switch (_context2.prev = _context2.next) {
333
328
  case 0:
334
329
  errors = getValidationErrors();
335
330
  if (!(Object.keys(errors).length > 0)) {
336
- _context2.next = 4;
331
+ _context2.next = 1;
337
332
  break;
338
333
  }
339
334
  setValidationErrors(errors);
340
335
  return _context2.abrupt("return");
341
- case 4:
336
+ case 1:
342
337
  setIsSubmitting(true);
343
- _context2.prev = 5;
344
- _context2.next = 8;
338
+ _context2.prev = 2;
339
+ _context2.next = 3;
345
340
  return onSubmit({
346
341
  canBeContacted: canBeContacted,
347
342
  description: description,
348
343
  enrollInResearchGroup: enrollInResearchGroup,
349
344
  type: type
350
345
  });
351
- case 8:
352
- _context2.prev = 8;
346
+ case 3:
347
+ _context2.prev = 3;
353
348
  setIsSubmitting(false);
354
- return _context2.finish(8);
355
- case 11:
349
+ return _context2.finish(3);
350
+ case 4:
356
351
  case "end":
357
352
  return _context2.stop();
358
353
  }
359
- }, _callee2, null, [[5,, 8, 11]]);
354
+ }, _callee2, null, [[2,, 3, 4]]);
360
355
  }))
361
356
  }, function (_ref9) {
362
357
  var formProps = _ref9.formProps;
@@ -384,14 +379,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
384
379
  });
385
380
  }
386
381
  },
387
- menuPortalTarget: document.body,
388
- styles: {
389
- menuPortal: function menuPortal(base) {
390
- return _objectSpread(_objectSpread({}, base), {}, {
391
- zIndex: 9999
392
- });
393
- }
394
- },
382
+ menuPosition: "fixed",
395
383
  options: selectOptions
396
384
  // @ts-ignore
397
385
  ,
@@ -421,10 +409,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
421
409
  },
422
410
  value: description
423
411
  })), validationErrors.description && /*#__PURE__*/React.createElement(ErrorMessage, null, validationErrors.description));
424
- }), !anonymousFeedback && /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement("legend", {
425
- "aria-hidden": false,
426
- hidden: true
427
- }, /*#__PURE__*/React.createElement(FormattedMessage, messages.optInOptionsLegend)), /*#__PURE__*/React.createElement(Field, {
412
+ }), !anonymousFeedback && /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement("legend", null, /*#__PURE__*/React.createElement(FormattedMessage, messages.optInOptionsLegend)), /*#__PURE__*/React.createElement(Field, {
428
413
  name: "can-be-contacted"
429
414
  }, function (_ref10) {
430
415
  var fieldProps = _ref10.fieldProps;
@@ -469,7 +454,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
469
454
  }, feedbackIsAnonymous);
470
455
  })))), /*#__PURE__*/React.createElement(ModalFooter, null, /*#__PURE__*/React.createElement(Button, {
471
456
  appearance: "subtle",
472
- onClick: onClose
457
+ onClick: handleCancel
473
458
  }, cancelButtonLabel || /*#__PURE__*/React.createElement(FormattedMessage, messages.cancelButtonLabel)), /*#__PURE__*/React.createElement(Button, {
474
459
  appearance: "primary",
475
460
  type: "submit",
@@ -15,19 +15,19 @@ export var IntlProviderWithResolvedMessages = function IntlProviderWithResolvedM
15
15
  var fetchMessageLocale = /*#__PURE__*/function () {
16
16
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
17
17
  var messages;
18
- return _regeneratorRuntime.wrap(function _callee$(_context) {
18
+ return _regeneratorRuntime.wrap(function (_context) {
19
19
  while (1) switch (_context.prev = _context.next) {
20
20
  case 0:
21
21
  if (!locale) {
22
- _context.next = 5;
22
+ _context.next = 2;
23
23
  break;
24
24
  }
25
- _context.next = 3;
25
+ _context.next = 1;
26
26
  return getMessagesForLocale(locale);
27
- case 3:
27
+ case 1:
28
28
  messages = _context.sent;
29
29
  setResolvedMessagesForLocale(messages);
30
- case 5:
30
+ case 2:
31
31
  case "end":
32
32
  return _context.stop();
33
33
  }
@@ -14,36 +14,35 @@ function _tsRewriteRelativeImportExtensions(t, e) { return "string" == typeof t
14
14
 
15
15
  export var getMessagesForLocale = /*#__PURE__*/function () {
16
16
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(locale) {
17
- var messages, parentLocale, _messages;
18
- return _regeneratorRuntime.wrap(function _callee$(_context) {
17
+ var messages, parentLocale, _messages, _t, _t2;
18
+ return _regeneratorRuntime.wrap(function (_context) {
19
19
  while (1) switch (_context.prev = _context.next) {
20
20
  case 0:
21
21
  locale = locale.replace('-', '_');
22
22
  _context.prev = 1;
23
- _context.next = 4;
23
+ _context.next = 2;
24
24
  return import( /* webpackChunkName: "@atlaskit-internal_feedback-collector/i18n-tranlations" */_tsRewriteRelativeImportExtensions(_tsRewriteRelativeImportExtensions("../i18n/".concat(locale))));
25
- case 4:
25
+ case 2:
26
26
  messages = _context.sent;
27
27
  return _context.abrupt("return", messages.default);
28
- case 8:
29
- _context.prev = 8;
30
- _context.t0 = _context["catch"](1);
31
- case 10:
32
- _context.prev = 10;
28
+ case 3:
29
+ _context.prev = 3;
30
+ _t = _context["catch"](1);
31
+ _context.prev = 4;
33
32
  parentLocale = locale.split(/[-_]/)[0];
34
- _context.next = 14;
33
+ _context.next = 5;
35
34
  return import( /* webpackChunkName: "@atlaskit-internal_feedback-collector/i18n-tranlations" */_tsRewriteRelativeImportExtensions(_tsRewriteRelativeImportExtensions("../i18n/".concat(parentLocale))));
36
- case 14:
35
+ case 5:
37
36
  _messages = _context.sent;
38
37
  return _context.abrupt("return", _messages.default);
39
- case 18:
40
- _context.prev = 18;
41
- _context.t1 = _context["catch"](10);
42
- case 20:
38
+ case 6:
39
+ _context.prev = 6;
40
+ _t2 = _context["catch"](4);
41
+ case 7:
43
42
  case "end":
44
43
  return _context.stop();
45
44
  }
46
- }, _callee, null, [[1, 8], [10, 18]]);
45
+ }, _callee, null, [[1, 3], [4, 6]]);
47
46
  }));
48
47
  return function getMessagesForLocale(_x) {
49
48
  return _ref.apply(this, arguments);
@@ -88,6 +88,8 @@ export interface Props {
88
88
  feedbackGroupLabels?: Partial<Record<SelectValue, SelectOptionDetails>>;
89
89
  /** Function that will be called to initiate the exit transition. */
90
90
  onClose: () => void;
91
+ /** Optional function that will be called when the cancel button is clicked, in addition to onClose. */
92
+ onCancel?: () => void;
91
93
  /** Function that will be called optimistically after a delay when the feedback is submitted. */
92
94
  onSubmit: (formFields: FormFields) => void;
93
95
  /** Locale for i18n */
@@ -1,4 +1,4 @@
1
- import React, { type FunctionComponent } from 'react';
1
+ import React from 'react';
2
2
  import { type FormFields, type SelectOptionDetails, type SelectValue } from '../types';
3
3
  interface Props {
4
4
  /** Message which will be shown as the title of the feedback dialog **/
@@ -29,6 +29,8 @@ interface Props {
29
29
  feedbackGroupLabels?: Partial<Record<SelectValue, SelectOptionDetails>>;
30
30
  /** Function that will be called to initiate the exit transition. */
31
31
  onClose: () => void;
32
+ /** Optional function that will be called when the cancel button is clicked, in addition to onClose. */
33
+ onCancel?: () => void;
32
34
  /** Function that will be called immediately after the submit action */
33
35
  onSubmit: (formValues: FormFields) => Promise<void>;
34
36
  /** Optional locale for i18n **/
@@ -54,7 +56,7 @@ export interface OptionType {
54
56
  label: React.ReactText;
55
57
  value: SelectValue;
56
58
  }
57
- declare const FeedbackFormWithIntl: FunctionComponent<Props & {
59
+ declare const FeedbackFormWithIntl: ({ locale, ...props }: Props & {
58
60
  locale: string;
59
- }>;
61
+ }) => React.ReactElement;
60
62
  export default FeedbackFormWithIntl;
@@ -88,6 +88,8 @@ export interface Props {
88
88
  feedbackGroupLabels?: Partial<Record<SelectValue, SelectOptionDetails>>;
89
89
  /** Function that will be called to initiate the exit transition. */
90
90
  onClose: () => void;
91
+ /** Optional function that will be called when the cancel button is clicked, in addition to onClose. */
92
+ onCancel?: () => void;
91
93
  /** Function that will be called optimistically after a delay when the feedback is submitted. */
92
94
  onSubmit: (formFields: FormFields) => void;
93
95
  /** Locale for i18n */