@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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @atlaskit/feedback-collector
2
2
 
3
+ ## 15.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`4cffc70fa1cfe`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/4cffc70fa1cfe) -
8
+ Add onCancel callback to FeedbackCollector and FeedbackForm
9
+
10
+ ## 15.3.0
11
+
12
+ ### Minor Changes
13
+
14
+ - [`ffa7b21ccc11b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ffa7b21ccc11b) -
15
+ A11Y fix (A11Y-31065): Remove inappropriate `aria-hidden={false}` and `hidden` attributes from
16
+ `<legend>` elements inside the opt-in options `<fieldset>` in FeedbackForm. The `hidden` HTML
17
+ attribute removes elements from the accessibility tree regardless of `aria-hidden`, causing screen
18
+ readers to miss the fieldset group label "Atlassian opt-in options". Replaced with a standard
19
+ visually-hidden CSS pattern so the legend is accessible to screen readers but not visible on
20
+ screen.
21
+
3
22
  ## 15.2.1
4
23
 
5
24
  ### Patch Changes
@@ -22,7 +22,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
22
22
  var _isApiGatewayUrl = require("../utils/is-api-gateway-url");
23
23
  var _Truncate = _interopRequireDefault(require("../utils/Truncate"));
24
24
  var _FeedbackForm = _interopRequireDefault(require("./FeedbackForm"));
25
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
25
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
26
26
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
27
27
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
28
28
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
@@ -47,18 +47,18 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
47
47
  (0, _defineProperty2.default)(_this, "postFeedback", /*#__PURE__*/function () {
48
48
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(formValues) {
49
49
  var entrypointId, fetchUrl, formData, body, postData;
50
- return _regenerator.default.wrap(function _callee$(_context) {
50
+ return _regenerator.default.wrap(function (_context) {
51
51
  while (1) switch (_context.prev = _context.next) {
52
52
  case 0:
53
53
  entrypointId = _this.props.entrypointId;
54
54
  fetchUrl = _this.getFeedbackUrl(); // Don't dispatch unless we have suitable props (allows tests to pass through empty strings and avoid redundant network calls)
55
55
  if (!entrypointId) {
56
- _context.next = 10;
56
+ _context.next = 2;
57
57
  break;
58
58
  }
59
- _context.next = 5;
59
+ _context.next = 1;
60
60
  return _this.mapFormToJSD(formValues);
61
- case 5:
61
+ case 1:
62
62
  formData = _context.sent;
63
63
  body = {
64
64
  feedback: _objectSpread({
@@ -82,7 +82,7 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
82
82
  }),
83
83
  credentials: 'include'
84
84
  });
85
- case 10:
85
+ case 2:
86
86
  _this.props.onClose();
87
87
 
88
88
  // slightly delay confirming submit since we don't wait for the REST call to succeed
@@ -94,7 +94,7 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
94
94
  setTimeout(function () {
95
95
  return _this.props.onSubmit(formValues);
96
96
  }, _this.props.timeoutOnSubmit);
97
- case 12:
97
+ case 3:
98
98
  case "end":
99
99
  return _context.stop();
100
100
  }
@@ -112,17 +112,17 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
112
112
  value: function () {
113
113
  var _componentDidMount = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
114
114
  var anonymousFeedback;
115
- return _regenerator.default.wrap(function _callee2$(_context2) {
115
+ return _regenerator.default.wrap(function (_context2) {
116
116
  while (1) switch (_context2.prev = _context2.next) {
117
117
  case 0:
118
- _context2.next = 2;
118
+ _context2.next = 1;
119
119
  return this.shouldShowOptInCheckboxesNew();
120
- case 2:
120
+ case 1:
121
121
  anonymousFeedback = !_context2.sent;
122
122
  this.setState({
123
123
  anonymousFeedback: anonymousFeedback
124
124
  });
125
- case 4:
125
+ case 2:
126
126
  case "end":
127
127
  return _context2.stop();
128
128
  }
@@ -164,20 +164,20 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
164
164
  }, {
165
165
  key: "getPackageVersion",
166
166
  value: function getPackageVersion() {
167
- return "15.2.0" || 'Unknown, at least 11.0.0';
167
+ return "15.3.0" || 'Unknown, at least 11.0.0';
168
168
  }
169
169
  }, {
170
170
  key: "getEntitlementInformation",
171
171
  value: function () {
172
172
  var _getEntitlementInformation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
173
173
  var _entitlementDetails, _entitlementDetails2, _productName, _entitlement;
174
- var url, productName, productEntitlement, entitlementDetails, productKey, _document$querySelect, hasPremium, entitlement, entitlementInformation, cloudSiteId, _entitlementDetails3;
175
- return _regenerator.default.wrap(function _callee3$(_context3) {
174
+ var url, productName, productEntitlement, entitlementDetails, productKey, _document$querySelect, hasPremium, entitlement, entitlementInformation, cloudSiteId, _entitlementDetails3, _t;
175
+ return _regenerator.default.wrap(function (_context3) {
176
176
  while (1) switch (_context3.prev = _context3.next) {
177
177
  case 0:
178
178
  url = this.getGatewayUrl(); // jira / confluence / bitbucket / trello
179
179
  if (!window.location.host.includes('bitbucket.org')) {
180
- _context3.next = 9;
180
+ _context3.next = 1;
181
181
  break;
182
182
  }
183
183
  productName = 'Bitbucket';
@@ -185,18 +185,18 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
185
185
  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')));
186
186
  hasPremium = entitlementDetails['hasPremium'];
187
187
  productEntitlement = hasPremium ? 'PREMIUM' : 'STANDARD';
188
- _context3.next = 24;
188
+ _context3.next = 6;
189
189
  break;
190
- case 9:
190
+ case 1:
191
191
  if (!['trellis.coffee', 'trello.com'].includes(window.location.host)) {
192
- _context3.next = 14;
192
+ _context3.next = 2;
193
193
  break;
194
194
  }
195
195
  productName = 'Trello';
196
196
  productKey = 'trello';
197
- _context3.next = 24;
197
+ _context3.next = 6;
198
198
  break;
199
- case 14:
199
+ case 2:
200
200
  if (document.querySelector('meta[id="confluence-context-path"]')) {
201
201
  productName = 'Confluence';
202
202
  productKey = 'pricingplan.confluence.ondemand';
@@ -204,8 +204,8 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
204
204
  productName = 'Jira';
205
205
  productKey = 'jira-software.ondemand';
206
206
  }
207
- _context3.prev = 15;
208
- _context3.next = 18;
207
+ _context3.prev = 3;
208
+ _context3.next = 4;
209
209
  return fetch("".concat(url, "/customer-context/entitlements/").concat(window.location.host), _objectSpread({
210
210
  method: 'GET',
211
211
  headers: {
@@ -214,15 +214,15 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
214
214
  }, (0, _isApiGatewayUrl.isApiGatewayUrl)(url) ? {
215
215
  credentials: 'include'
216
216
  } : {}));
217
- case 18:
217
+ case 4:
218
218
  entitlementDetails = _context3.sent;
219
- _context3.next = 24;
219
+ _context3.next = 6;
220
220
  break;
221
- case 21:
222
- _context3.prev = 21;
223
- _context3.t0 = _context3["catch"](15);
221
+ case 5:
222
+ _context3.prev = 5;
223
+ _t = _context3["catch"](3);
224
224
  entitlementDetails = undefined;
225
- case 24:
225
+ case 6:
226
226
  entitlementInformation = [];
227
227
  cloudSiteId = ((_entitlementDetails = entitlementDetails) === null || _entitlementDetails === void 0 ? void 0 : _entitlementDetails.cloudSiteId) || '';
228
228
  if ((_entitlementDetails2 = entitlementDetails) !== null && _entitlementDetails2 !== void 0 && _entitlementDetails2.children) {
@@ -244,11 +244,11 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
244
244
  value: cloudSiteId
245
245
  });
246
246
  return _context3.abrupt("return", entitlementInformation);
247
- case 29:
247
+ case 7:
248
248
  case "end":
249
249
  return _context3.stop();
250
250
  }
251
- }, _callee3, this, [[15, 21]]);
251
+ }, _callee3, this, [[3, 5]]);
252
252
  }));
253
253
  function getEntitlementInformation() {
254
254
  return _getEntitlementInformation.apply(this, arguments);
@@ -276,20 +276,20 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
276
276
  key: "getAtlassianID",
277
277
  value: function () {
278
278
  var _getAtlassianID = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
279
- var _this$props3, atlassianAccountId, shouldGetEntitlementDetails, url, result, json;
280
- return _regenerator.default.wrap(function _callee4$(_context4) {
279
+ var _this$props3, atlassianAccountId, shouldGetEntitlementDetails, url, result, json, _t2;
280
+ return _regenerator.default.wrap(function (_context4) {
281
281
  while (1) switch (_context4.prev = _context4.next) {
282
282
  case 0:
283
283
  _this$props3 = this.props, atlassianAccountId = _this$props3.atlassianAccountId, shouldGetEntitlementDetails = _this$props3.shouldGetEntitlementDetails;
284
284
  _context4.prev = 1;
285
285
  if (!(atlassianAccountId || !shouldGetEntitlementDetails)) {
286
- _context4.next = 4;
286
+ _context4.next = 2;
287
287
  break;
288
288
  }
289
289
  return _context4.abrupt("return", atlassianAccountId);
290
- case 4:
290
+ case 2:
291
291
  url = this.getGatewayUrl();
292
- _context4.next = 7;
292
+ _context4.next = 3;
293
293
  return fetch("".concat(url, "/me"), _objectSpread({
294
294
  method: 'GET',
295
295
  headers: {
@@ -298,22 +298,22 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
298
298
  }, (0, _isApiGatewayUrl.isApiGatewayUrl)(url) ? {
299
299
  credentials: 'include'
300
300
  } : {}));
301
- case 7:
301
+ case 3:
302
302
  result = _context4.sent;
303
- _context4.next = 10;
303
+ _context4.next = 4;
304
304
  return result.json();
305
- case 10:
305
+ case 4:
306
306
  json = _context4.sent;
307
307
  return _context4.abrupt("return", json.account_id);
308
- case 14:
309
- _context4.prev = 14;
310
- _context4.t0 = _context4["catch"](1);
308
+ case 5:
309
+ _context4.prev = 5;
310
+ _t2 = _context4["catch"](1);
311
311
  return _context4.abrupt("return", undefined);
312
- case 17:
312
+ case 6:
313
313
  case "end":
314
314
  return _context4.stop();
315
315
  }
316
- }, _callee4, this, [[1, 14]]);
316
+ }, _callee4, this, [[1, 5]]);
317
317
  }));
318
318
  function getAtlassianID() {
319
319
  return _getAtlassianID.apply(this, arguments);
@@ -405,25 +405,25 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
405
405
  var _mapFormToJSD = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(formValues) {
406
406
  var _this$props4, _this$props5;
407
407
  var entitlementInformation, atlassianID;
408
- return _regenerator.default.wrap(function _callee5$(_context5) {
408
+ return _regenerator.default.wrap(function (_context5) {
409
409
  while (1) switch (_context5.prev = _context5.next) {
410
410
  case 0:
411
411
  entitlementInformation = null;
412
412
  if (!((_this$props4 = this.props) !== null && _this$props4 !== void 0 && _this$props4.shouldGetEntitlementDetails)) {
413
- _context5.next = 5;
413
+ _context5.next = 2;
414
414
  break;
415
415
  }
416
- _context5.next = 4;
416
+ _context5.next = 1;
417
417
  return this.getEntitlementInformation();
418
- case 4:
418
+ case 1:
419
419
  entitlementInformation = _context5.sent;
420
- case 5:
420
+ case 2:
421
421
  if ((_this$props5 = this.props) !== null && _this$props5 !== void 0 && _this$props5.email) {
422
422
  this.addEmailToContext();
423
423
  }
424
- _context5.next = 8;
424
+ _context5.next = 3;
425
425
  return this.getAtlassianID();
426
- case 8:
426
+ case 3:
427
427
  atlassianID = _context5.sent;
428
428
  this.addAccountIdToContext(atlassianID);
429
429
  return _context5.abrupt("return", {
@@ -456,7 +456,7 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
456
456
  value: this.props.enrollInResearchDeclineValue
457
457
  }], (0, _toConsumableArray2.default)(this.props.additionalFields)).filter(Boolean)
458
458
  });
459
- case 11:
459
+ case 4:
460
460
  case "end":
461
461
  return _context5.stop();
462
462
  }
@@ -486,6 +486,7 @@ var FeedbackCollector = exports.default = /*#__PURE__*/function (_Component) {
486
486
  feedbackGroupLabels: this.props.feedbackGroupLabels,
487
487
  onSubmit: this.postFeedback,
488
488
  onClose: this.props.onClose,
489
+ onCancel: this.props.onCancel,
489
490
  locale: this.props.locale,
490
491
  anonymousFeedback: (0, _platformFeatureFlags.fg)('platform.proforma-form-builder-feedback_hupaz') ? this.state.anonymousFeedback : anonymousFeedback,
491
492
  selectLabel: this.props.selectLabel,
@@ -49,6 +49,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
49
49
  showDefaultTextFields = _ref2$showDefaultText === void 0 ? true : _ref2$showDefaultText,
50
50
  customContent = _ref2.customContent,
51
51
  onClose = _ref2.onClose,
52
+ onCancel = _ref2.onCancel,
52
53
  onSubmit = _ref2.onSubmit,
53
54
  feedbackTitle = _ref2.feedbackTitle,
54
55
  feedbackTitleDetails = _ref2.feedbackTitleDetails,
@@ -99,6 +100,10 @@ var FeedbackForm = function FeedbackForm(_ref2) {
99
100
  var isTypeSelected = function isTypeSelected() {
100
101
  return type !== 'empty';
101
102
  };
103
+ var handleCancel = function handleCancel() {
104
+ onCancel === null || onCancel === void 0 || onCancel();
105
+ onClose();
106
+ };
102
107
  var canShowTextField = isTypeSelected() || !showTypeField;
103
108
  var hasDescription = description || hasDescriptionDefaultValue;
104
109
  var isDisabled = isSubmitting || disableSubmitButton;
@@ -189,35 +194,35 @@ var FeedbackForm = function FeedbackForm(_ref2) {
189
194
  }, (0, _platformFeatureFlags.fg)('platform-design_system_team-form_conversion') ? /*#__PURE__*/_react.default.createElement(_form.default, {
190
195
  onSubmit: /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
191
196
  var errors;
192
- return _regenerator.default.wrap(function _callee$(_context) {
197
+ return _regenerator.default.wrap(function (_context) {
193
198
  while (1) switch (_context.prev = _context.next) {
194
199
  case 0:
195
200
  errors = getValidationErrors();
196
201
  if (!(Object.keys(errors).length > 0)) {
197
- _context.next = 4;
202
+ _context.next = 1;
198
203
  break;
199
204
  }
200
205
  setValidationErrors(errors);
201
206
  return _context.abrupt("return");
202
- case 4:
207
+ case 1:
203
208
  setIsSubmitting(true);
204
- _context.prev = 5;
205
- _context.next = 8;
209
+ _context.prev = 2;
210
+ _context.next = 3;
206
211
  return onSubmit({
207
212
  canBeContacted: canBeContacted,
208
213
  description: description,
209
214
  enrollInResearchGroup: enrollInResearchGroup,
210
215
  type: type
211
216
  });
212
- case 8:
213
- _context.prev = 8;
217
+ case 3:
218
+ _context.prev = 3;
214
219
  setIsSubmitting(false);
215
- return _context.finish(8);
216
- case 11:
220
+ return _context.finish(3);
221
+ case 4:
217
222
  case "end":
218
223
  return _context.stop();
219
224
  }
220
- }, _callee, null, [[5,, 8, 11]]);
225
+ }, _callee, null, [[2,, 3, 4]]);
221
226
  }))
222
227
  }, /*#__PURE__*/_react.default.createElement(_modalDialog.ModalHeader, {
223
228
  hasCloseButton: true
@@ -243,14 +248,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
243
248
  });
244
249
  }
245
250
  },
246
- menuPortalTarget: document.body,
247
- styles: {
248
- menuPortal: function menuPortal(base) {
249
- return _objectSpread(_objectSpread({}, base), {}, {
250
- zIndex: 9999
251
- });
252
- }
253
- },
251
+ menuPosition: "fixed",
254
252
  options: selectOptions
255
253
  // @ts-ignore
256
254
  ,
@@ -280,10 +278,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
280
278
  },
281
279
  value: description
282
280
  })), validationErrors.description && /*#__PURE__*/_react.default.createElement(_form.ErrorMessage, null, validationErrors.description));
283
- }), !anonymousFeedback && /*#__PURE__*/_react.default.createElement(_form.Fieldset, null, /*#__PURE__*/_react.default.createElement("legend", {
284
- "aria-hidden": false,
285
- hidden: true
286
- }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _messages.messages.optInOptionsLegend)), /*#__PURE__*/_react.default.createElement(_form.Field, {
281
+ }), !anonymousFeedback && /*#__PURE__*/_react.default.createElement(_form.Fieldset, null, /*#__PURE__*/_react.default.createElement("legend", null, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _messages.messages.optInOptionsLegend)), /*#__PURE__*/_react.default.createElement(_form.Field, {
287
282
  name: "can-be-contacted"
288
283
  }, function (_ref6) {
289
284
  var fieldProps = _ref6.fieldProps;
@@ -328,7 +323,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
328
323
  }, feedbackIsAnonymous);
329
324
  })))), /*#__PURE__*/_react.default.createElement(_modalDialog.ModalFooter, null, /*#__PURE__*/_react.default.createElement(_standardButton.default, {
330
325
  appearance: "subtle",
331
- onClick: onClose
326
+ onClick: handleCancel
332
327
  }, cancelButtonLabel || /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _messages.messages.cancelButtonLabel)), /*#__PURE__*/_react.default.createElement(_standardButton.default, {
333
328
  appearance: "primary",
334
329
  type: "submit",
@@ -337,35 +332,35 @@ var FeedbackForm = function FeedbackForm(_ref2) {
337
332
  }, submitButtonLabel || /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _messages.messages.submitButtonLabel)))) : /*#__PURE__*/_react.default.createElement(_form.default, {
338
333
  onSubmit: /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
339
334
  var errors;
340
- return _regenerator.default.wrap(function _callee2$(_context2) {
335
+ return _regenerator.default.wrap(function (_context2) {
341
336
  while (1) switch (_context2.prev = _context2.next) {
342
337
  case 0:
343
338
  errors = getValidationErrors();
344
339
  if (!(Object.keys(errors).length > 0)) {
345
- _context2.next = 4;
340
+ _context2.next = 1;
346
341
  break;
347
342
  }
348
343
  setValidationErrors(errors);
349
344
  return _context2.abrupt("return");
350
- case 4:
345
+ case 1:
351
346
  setIsSubmitting(true);
352
- _context2.prev = 5;
353
- _context2.next = 8;
347
+ _context2.prev = 2;
348
+ _context2.next = 3;
354
349
  return onSubmit({
355
350
  canBeContacted: canBeContacted,
356
351
  description: description,
357
352
  enrollInResearchGroup: enrollInResearchGroup,
358
353
  type: type
359
354
  });
360
- case 8:
361
- _context2.prev = 8;
355
+ case 3:
356
+ _context2.prev = 3;
362
357
  setIsSubmitting(false);
363
- return _context2.finish(8);
364
- case 11:
358
+ return _context2.finish(3);
359
+ case 4:
365
360
  case "end":
366
361
  return _context2.stop();
367
362
  }
368
- }, _callee2, null, [[5,, 8, 11]]);
363
+ }, _callee2, null, [[2,, 3, 4]]);
369
364
  }))
370
365
  }, function (_ref9) {
371
366
  var formProps = _ref9.formProps;
@@ -393,14 +388,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
393
388
  });
394
389
  }
395
390
  },
396
- menuPortalTarget: document.body,
397
- styles: {
398
- menuPortal: function menuPortal(base) {
399
- return _objectSpread(_objectSpread({}, base), {}, {
400
- zIndex: 9999
401
- });
402
- }
403
- },
391
+ menuPosition: "fixed",
404
392
  options: selectOptions
405
393
  // @ts-ignore
406
394
  ,
@@ -430,10 +418,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
430
418
  },
431
419
  value: description
432
420
  })), validationErrors.description && /*#__PURE__*/_react.default.createElement(_form.ErrorMessage, null, validationErrors.description));
433
- }), !anonymousFeedback && /*#__PURE__*/_react.default.createElement(_form.Fieldset, null, /*#__PURE__*/_react.default.createElement("legend", {
434
- "aria-hidden": false,
435
- hidden: true
436
- }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _messages.messages.optInOptionsLegend)), /*#__PURE__*/_react.default.createElement(_form.Field, {
421
+ }), !anonymousFeedback && /*#__PURE__*/_react.default.createElement(_form.Fieldset, null, /*#__PURE__*/_react.default.createElement("legend", null, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _messages.messages.optInOptionsLegend)), /*#__PURE__*/_react.default.createElement(_form.Field, {
437
422
  name: "can-be-contacted"
438
423
  }, function (_ref10) {
439
424
  var fieldProps = _ref10.fieldProps;
@@ -478,7 +463,7 @@ var FeedbackForm = function FeedbackForm(_ref2) {
478
463
  }, feedbackIsAnonymous);
479
464
  })))), /*#__PURE__*/_react.default.createElement(_modalDialog.ModalFooter, null, /*#__PURE__*/_react.default.createElement(_standardButton.default, {
480
465
  appearance: "subtle",
481
- onClick: onClose
466
+ onClick: handleCancel
482
467
  }, cancelButtonLabel || /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _messages.messages.cancelButtonLabel)), /*#__PURE__*/_react.default.createElement(_standardButton.default, {
483
468
  appearance: "primary",
484
469
  type: "submit",
@@ -24,19 +24,19 @@ var IntlProviderWithResolvedMessages = exports.IntlProviderWithResolvedMessages
24
24
  var fetchMessageLocale = /*#__PURE__*/function () {
25
25
  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
26
26
  var messages;
27
- return _regenerator.default.wrap(function _callee$(_context) {
27
+ return _regenerator.default.wrap(function (_context) {
28
28
  while (1) switch (_context.prev = _context.next) {
29
29
  case 0:
30
30
  if (!locale) {
31
- _context.next = 5;
31
+ _context.next = 2;
32
32
  break;
33
33
  }
34
- _context.next = 3;
34
+ _context.next = 1;
35
35
  return (0, _i18nGetMessagesForLocale.getMessagesForLocale)(locale);
36
- case 3:
36
+ case 1:
37
37
  messages = _context.sent;
38
38
  setResolvedMessagesForLocale(messages);
39
- case 5:
39
+ case 2:
40
40
  case "end":
41
41
  return _context.stop();
42
42
  }
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.getMessagesForLocale = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
12
12
  function _tsRewriteRelativeImportExtensions(t, e) { return "string" == typeof t && /^\.\.?\//.test(t) ? t.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+)?)\.([cm]?)ts$/i, function (t, s, r, n, o) { return s ? e ? ".jsx" : ".js" : !r || n && o ? r + n + "." + o.toLowerCase() + "js" : t; }) : t; }
13
13
  /**
14
14
  * Tries to get the most specific messages bundle for a given locale.
@@ -23,13 +23,13 @@ function _tsRewriteRelativeImportExtensions(t, e) { return "string" == typeof t
23
23
 
24
24
  var getMessagesForLocale = exports.getMessagesForLocale = /*#__PURE__*/function () {
25
25
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(locale) {
26
- var messages, parentLocale, _messages;
27
- return _regenerator.default.wrap(function _callee$(_context) {
26
+ var messages, parentLocale, _messages, _t, _t2;
27
+ return _regenerator.default.wrap(function (_context) {
28
28
  while (1) switch (_context.prev = _context.next) {
29
29
  case 0:
30
30
  locale = locale.replace('-', '_');
31
31
  _context.prev = 1;
32
- _context.next = 4;
32
+ _context.next = 2;
33
33
  return function (specifier) {
34
34
  return new Promise(function (r) {
35
35
  return r("".concat(specifier));
@@ -37,16 +37,15 @@ var getMessagesForLocale = exports.getMessagesForLocale = /*#__PURE__*/function
37
37
  return _interopRequireWildcard(require(s));
38
38
  });
39
39
  }( /* webpackChunkName: "@atlaskit-internal_feedback-collector/i18n-tranlations" */_tsRewriteRelativeImportExtensions("../i18n/".concat(locale)));
40
- case 4:
40
+ case 2:
41
41
  messages = _context.sent;
42
42
  return _context.abrupt("return", messages.default);
43
- case 8:
44
- _context.prev = 8;
45
- _context.t0 = _context["catch"](1);
46
- case 10:
47
- _context.prev = 10;
43
+ case 3:
44
+ _context.prev = 3;
45
+ _t = _context["catch"](1);
46
+ _context.prev = 4;
48
47
  parentLocale = locale.split(/[-_]/)[0];
49
- _context.next = 14;
48
+ _context.next = 5;
50
49
  return function (specifier) {
51
50
  return new Promise(function (r) {
52
51
  return r("".concat(specifier));
@@ -54,17 +53,17 @@ var getMessagesForLocale = exports.getMessagesForLocale = /*#__PURE__*/function
54
53
  return _interopRequireWildcard(require(s));
55
54
  });
56
55
  }( /* webpackChunkName: "@atlaskit-internal_feedback-collector/i18n-tranlations" */_tsRewriteRelativeImportExtensions("../i18n/".concat(parentLocale)));
57
- case 14:
56
+ case 5:
58
57
  _messages = _context.sent;
59
58
  return _context.abrupt("return", _messages.default);
60
- case 18:
61
- _context.prev = 18;
62
- _context.t1 = _context["catch"](10);
63
- case 20:
59
+ case 6:
60
+ _context.prev = 6;
61
+ _t2 = _context["catch"](4);
62
+ case 7:
64
63
  case "end":
65
64
  return _context.stop();
66
65
  }
67
- }, _callee, null, [[1, 8], [10, 18]]);
66
+ }, _callee, null, [[1, 3], [4, 6]]);
68
67
  }));
69
68
  return function getMessagesForLocale(_x) {
70
69
  return _ref.apply(this, arguments);
@@ -92,7 +92,7 @@ export default class FeedbackCollector extends Component {
92
92
  return FeedbackCollector.defaultProps.url;
93
93
  }
94
94
  getPackageVersion() {
95
- return "15.2.0" || 'Unknown, at least 11.0.0';
95
+ return "15.3.0" || 'Unknown, at least 11.0.0';
96
96
  }
97
97
  async getEntitlementInformation() {
98
98
  var _entitlementDetails, _entitlementDetails2, _productName, _entitlement, _productEntitlement;
@@ -323,6 +323,7 @@ export default class FeedbackCollector extends Component {
323
323
  feedbackGroupLabels: this.props.feedbackGroupLabels,
324
324
  onSubmit: this.postFeedback,
325
325
  onClose: this.props.onClose,
326
+ onCancel: this.props.onCancel,
326
327
  locale: this.props.locale,
327
328
  anonymousFeedback: fg('platform.proforma-form-builder-feedback_hupaz') ? this.state.anonymousFeedback : anonymousFeedback,
328
329
  selectLabel: this.props.selectLabel,