@feathery/react 2.16.4 → 2.17.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.
Files changed (116) hide show
  1. package/cjs/Form/grid/Element/index.d.ts.map +1 -1
  2. package/cjs/Form/index.d.ts.map +1 -1
  3. package/cjs/elements/basic/TableElement/Actions.d.ts.map +1 -1
  4. package/cjs/elements/basic/TableElement/styles.d.ts +10 -4
  5. package/cjs/elements/basic/TableElement/styles.d.ts.map +1 -1
  6. package/cjs/{fthry_FormControl.Bgh-mIjy.js → fthry_FormControl.B7CvpOy7.js} +1 -1
  7. package/cjs/{fthry_InlineTooltip.auFs9a5s.js → fthry_InlineTooltip.C996PUyt.js} +2 -2
  8. package/cjs/{fthry_Overlay.Bkd8kkoH.js → fthry_Overlay.CgsPRT93.js} +1 -1
  9. package/cjs/{fthry_PaymentMethodField.CRU8I39r.js → fthry_PaymentMethodField.CgWYhzY0.js} +4 -4
  10. package/cjs/{fthry_Placeholder.DEgGUrBj.js → fthry_Placeholder.DU6BBGYL.js} +1 -1
  11. package/cjs/{fthry_ShowEyeIcon.CtzgR1jF.js → fthry_ShowEyeIcon.CUQAbCqJ.js} +1 -1
  12. package/cjs/{fthry_index.CRDDr01i.js → fthry_index.-VHhhPW_.js} +8 -8
  13. package/cjs/{fthry_index.DrcVvx6M.js → fthry_index.B28cPa0J.js} +1 -1
  14. package/cjs/{fthry_index.C2faZV4U.js → fthry_index.B53nunGq.js} +5 -5
  15. package/cjs/{fthry_index.C4sU4QL2.js → fthry_index.BBp3NBRn.js} +6 -6
  16. package/cjs/{fthry_index.DE8kmziv.js → fthry_index.BC2-h9F1.js} +5 -5
  17. package/cjs/{fthry_index.CzboYjT9.js → fthry_index.BMR_-WAJ.js} +4 -4
  18. package/cjs/{fthry_index.CLXUeHKN.js → fthry_index.BbQqFT3f.js} +3 -3
  19. package/cjs/{fthry_index.BgTQ1FlN.js → fthry_index.Bk9wFqEq.js} +182 -139
  20. package/cjs/{fthry_index.BkrdVXlS.js → fthry_index.C-wfIa7q.js} +1 -1
  21. package/cjs/{fthry_index.oWGHOOOB.js → fthry_index.CEsr4Pvr.js} +1 -1
  22. package/cjs/{fthry_index.R4pSt2d2.js → fthry_index.CNxXiO1i.js} +2 -2
  23. package/cjs/{fthry_index.DsC9aI6w.js → fthry_index.C_bb05Fz.js} +27 -20
  24. package/cjs/{fthry_index.CErXN5ib.js → fthry_index.Cpx2CFYi.js} +1 -1
  25. package/cjs/{fthry_index.CLCxPTbZ.js → fthry_index.CqPkKG2Y.js} +5 -5
  26. package/cjs/{fthry_index.KP0Ca3IU.js → fthry_index.Ctz5Avdg.js} +3 -3
  27. package/cjs/{fthry_index.Cp_TTbT2.js → fthry_index.D0lwvVp_.js} +2 -2
  28. package/cjs/{fthry_index.V5EVqSky.js → fthry_index.D7rouYBR.js} +1 -1
  29. package/cjs/{fthry_index.DSxgvkD6.js → fthry_index.DmqW1Cwt.js} +6 -6
  30. package/cjs/{fthry_index.CVVkGWoS.js → fthry_index.DntXErYs.js} +1 -1
  31. package/cjs/{fthry_index.B2qUeiLW.js → fthry_index.DpbLLXbr.js} +1 -1
  32. package/cjs/{fthry_index.Lkx3mO74.js → fthry_index.DzghgV-3.js} +4 -4
  33. package/cjs/{fthry_index.DwLX_2Pg.js → fthry_index.KpzBj2Sl.js} +6 -6
  34. package/cjs/{fthry_index.D58YnjUa.js → fthry_index.cWwcHKMJ.js} +4 -4
  35. package/cjs/{fthry_index.Blf8s7tI.js → fthry_index.yGs0zxyx.js} +5 -5
  36. package/cjs/{fthry_input.BdPywaVl.js → fthry_input.Dkk-sSHq.js} +1 -1
  37. package/cjs/{fthry_script.BvEAOIuu.js → fthry_script.3qe3Z--U.js} +1 -1
  38. package/cjs/{fthry_styles.BnOkS_mr.js → fthry_styles.HNGSxnCE.js} +1 -1
  39. package/cjs/{fthry_useElementSize._nmMVpU4.js → fthry_useElementSize.Cout_uuP.js} +1 -1
  40. package/cjs/{fthry_useSalesforceSync.lNF_A1ej.js → fthry_useSalesforceSync.CdBJ8vs3.js} +1 -1
  41. package/cjs/{fthry_webfontloader.BZzxrDoy.js → fthry_webfontloader.zWeOTB3n.js} +1 -1
  42. package/cjs/index.d.ts +1 -0
  43. package/cjs/index.d.ts.map +1 -1
  44. package/cjs/index.js +1 -1
  45. package/cjs/utils/error.d.ts +1 -3
  46. package/cjs/utils/error.d.ts.map +1 -1
  47. package/cjs/utils/featheryClient/index.d.ts.map +1 -1
  48. package/cjs/utils/featheryClient/integrationClient.d.ts +2 -1
  49. package/cjs/utils/featheryClient/integrationClient.d.ts.map +1 -1
  50. package/cjs/utils/featheryClient/utils.d.ts +1 -1
  51. package/cjs/utils/featheryClient/utils.d.ts.map +1 -1
  52. package/cjs/utils/formContext.d.ts +2 -1
  53. package/cjs/utils/formContext.d.ts.map +1 -1
  54. package/cjs/utils/internalState.d.ts +12 -0
  55. package/cjs/utils/internalState.d.ts.map +1 -1
  56. package/cjs/utils/offlineRequestHandler.d.ts.map +1 -1
  57. package/dist/Form/grid/Element/index.d.ts.map +1 -1
  58. package/dist/Form/index.d.ts.map +1 -1
  59. package/dist/elements/basic/TableElement/Actions.d.ts.map +1 -1
  60. package/dist/elements/basic/TableElement/styles.d.ts +10 -4
  61. package/dist/elements/basic/TableElement/styles.d.ts.map +1 -1
  62. package/dist/{fthry_FormControl.Wd2VCHPt.js → fthry_FormControl.D1rdOnlu.js} +1 -1
  63. package/dist/{fthry_InlineTooltip.D3ylgYg6.js → fthry_InlineTooltip.gBQbIrIu.js} +2 -2
  64. package/dist/{fthry_Overlay.Bz5x-ENK.js → fthry_Overlay.D-1VJvqs.js} +1 -1
  65. package/dist/{fthry_PaymentMethodField.CvChbYRg.js → fthry_PaymentMethodField.DZY5T2Y5.js} +4 -4
  66. package/dist/{fthry_Placeholder.DQzBt8j6.js → fthry_Placeholder.CZlLLm3-.js} +1 -1
  67. package/dist/{fthry_ShowEyeIcon.C9zNt2Rx.js → fthry_ShowEyeIcon.BaIkeyhw.js} +1 -1
  68. package/dist/{fthry_index.DKGOaGCM.js → fthry_index.329YUECm.js} +27 -20
  69. package/dist/{fthry_index.34WTfq_N.js → fthry_index.B5hSXDjp.js} +3 -3
  70. package/dist/{fthry_index.B8xFLcFH.js → fthry_index.BIBx3DsP.js} +5 -5
  71. package/dist/{fthry_index.DgDP5DJn.js → fthry_index.BhYmdJQ7.js} +4 -4
  72. package/dist/{fthry_index.C7pfoDYO.js → fthry_index.BlOxs2cj.js} +1 -1
  73. package/dist/{fthry_index.DQZRjgq7.js → fthry_index.Bs9uZhYv.js} +4 -4
  74. package/dist/{fthry_index.BGxTz3tO.js → fthry_index.BucXAS63.js} +5 -5
  75. package/dist/{fthry_index.CRS1kqR5.js → fthry_index.C2HKdNYq.js} +8 -8
  76. package/dist/{fthry_index.BZaD9OWc.js → fthry_index.C5ahyiuy.js} +1 -1
  77. package/dist/{fthry_index.DR1bFoXt.js → fthry_index.C9U8rpP7.js} +6 -6
  78. package/dist/{fthry_index._BRuXPK7.js → fthry_index.CFIcETd0.js} +5 -5
  79. package/dist/{fthry_index.DQZzSsuW.js → fthry_index.CPMVt3FZ.js} +5 -5
  80. package/dist/{fthry_index.BOQHIUaq.js → fthry_index.CtyR2F-d.js} +182 -139
  81. package/dist/{fthry_index.CMkosVsI.js → fthry_index.D-Mbjgfp.js} +1 -1
  82. package/dist/{fthry_index.BcDHti-e.js → fthry_index.DikvLseE.js} +1 -1
  83. package/dist/{fthry_index.BaEZNStt.js → fthry_index.Dm2oVBjb.js} +2 -2
  84. package/dist/{fthry_index.DBoil0ob.js → fthry_index.FJ8ZLm8q.js} +1 -1
  85. package/dist/{fthry_index.jDY08d87.js → fthry_index.HLq81_n7.js} +1 -1
  86. package/dist/{fthry_index.CvA-hNZz.js → fthry_index.R8cyJ1bQ.js} +4 -4
  87. package/dist/{fthry_index.lO5BG-D1.js → fthry_index.TML9AJKv.js} +1 -1
  88. package/dist/{fthry_index.BGTWrYLi.js → fthry_index.UE2wYVO4.js} +2 -2
  89. package/dist/{fthry_index.BqbKuP58.js → fthry_index.XXtxuOIX.js} +6 -6
  90. package/dist/{fthry_index.trAJzW3J.js → fthry_index._TEfINIv.js} +6 -6
  91. package/dist/{fthry_index.qe9ZkKtP.js → fthry_index.fmqhtoTj.js} +3 -3
  92. package/dist/{fthry_input.IKXOLylO.js → fthry_input.Bd9Wd79a.js} +1 -1
  93. package/dist/{fthry_script.Bh2Y_sWv.js → fthry_script.BCQyQsFw.js} +1 -1
  94. package/dist/{fthry_styles.BYvg16qE.js → fthry_styles.DfpMuxOP.js} +1 -1
  95. package/dist/{fthry_useElementSize.CXuTu3xM.js → fthry_useElementSize.CeCCzoZ9.js} +1 -1
  96. package/dist/{fthry_useSalesforceSync.B56mQC8q.js → fthry_useSalesforceSync.-EXtZJLF.js} +1 -1
  97. package/dist/{fthry_webfontloader.DbZ32V22.js → fthry_webfontloader.DzSMFt1i.js} +1 -1
  98. package/dist/index.d.ts +1 -0
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +1 -1
  101. package/dist/utils/error.d.ts +1 -3
  102. package/dist/utils/error.d.ts.map +1 -1
  103. package/dist/utils/featheryClient/index.d.ts.map +1 -1
  104. package/dist/utils/featheryClient/integrationClient.d.ts +2 -1
  105. package/dist/utils/featheryClient/integrationClient.d.ts.map +1 -1
  106. package/dist/utils/featheryClient/utils.d.ts +1 -1
  107. package/dist/utils/featheryClient/utils.d.ts.map +1 -1
  108. package/dist/utils/formContext.d.ts +2 -1
  109. package/dist/utils/formContext.d.ts.map +1 -1
  110. package/dist/utils/internalState.d.ts +12 -0
  111. package/dist/utils/internalState.d.ts.map +1 -1
  112. package/dist/utils/offlineRequestHandler.d.ts.map +1 -1
  113. package/package.json +2 -2
  114. package/umd/TableElement.8fe7915eeb32e23ba816.js +1 -0
  115. package/umd/index.js +1 -1
  116. package/umd/TableElement.36588e76b5cd28b8115b.js +0 -1
@@ -5840,6 +5840,30 @@ function numMatchingItems(arr1, arr2) {
5840
5840
  return i;
5841
5841
  }
5842
5842
 
5843
+ /*
5844
+ * Global state tracking if the user has interacted with the form.
5845
+ * We use this to block submitting fields so as to not create unnecessary
5846
+ * fusers.
5847
+ * Interaction state is global so that current and future feathery client
5848
+ * instances can use it.
5849
+ *
5850
+ * A custom hook on the Form component handles setting the state after
5851
+ * first interaction.
5852
+ */
5853
+ var interactionDetected = false;
5854
+ var isInteractionDetected = function () { return interactionDetected; };
5855
+ var setInteractionDetected = function () {
5856
+ interactionDetected = true;
5857
+ };
5858
+ var FEATHERY_INTERACTION_EVENT = 'feathery:interaction';
5859
+ var INTERACTION_EVENT_TYPES = [
5860
+ 'keydown',
5861
+ 'pointerdown',
5862
+ // redundant events for greater browser support
5863
+ 'mousedown',
5864
+ 'touchstart'
5865
+ ];
5866
+
5843
5867
  var dist$2 = {};
5844
5868
 
5845
5869
  var api$1 = {};
@@ -5854,7 +5878,7 @@ function requireError () {
5854
5878
  if (hasRequiredError) return error;
5855
5879
  hasRequiredError = 1;
5856
5880
  Object.defineProperty(error, "__esModule", { value: true });
5857
- error.ValidationError = error.FetchError = void 0;
5881
+ error.ValidationError = error.SDKKeyError = error.FormConflictError = error.FetchError = void 0;
5858
5882
  error.parseAPIError = parseAPIError;
5859
5883
  class FetchError extends Error {
5860
5884
  constructor(message, payload = null) {
@@ -5864,6 +5888,20 @@ function requireError () {
5864
5888
  }
5865
5889
  }
5866
5890
  error.FetchError = FetchError;
5891
+ class FormConflictError extends Error {
5892
+ constructor(message = 'Invalid Form Version') {
5893
+ super(message);
5894
+ this.name = 'FormConflictError';
5895
+ }
5896
+ }
5897
+ error.FormConflictError = FormConflictError;
5898
+ class SDKKeyError extends Error {
5899
+ constructor(message = 'Invalid SDK Key') {
5900
+ super(message);
5901
+ this.name = 'SDKKeyError';
5902
+ }
5903
+ }
5904
+ error.SDKKeyError = SDKKeyError;
5867
5905
  class ValidationError extends Error {
5868
5906
  constructor(message) {
5869
5907
  super(message);
@@ -6007,8 +6045,12 @@ function requireUtils () {
6007
6045
  case 400:
6008
6046
  payload = JSON.stringify(await response.clone().text());
6009
6047
  throw new error_1.FetchError(payload.toString());
6048
+ case 401:
6049
+ throw new error_1.SDKKeyError();
6010
6050
  case 404:
6011
6051
  throw new error_1.FetchError("Can't find object");
6052
+ case 409:
6053
+ throw new error_1.FormConflictError();
6012
6054
  case 500:
6013
6055
  throw new error_1.FetchError('Internal server error');
6014
6056
  default:
@@ -6279,7 +6321,7 @@ function requireDist$2 () {
6279
6321
  hasRequiredDist$2 = 1;
6280
6322
  (function (exports$1) {
6281
6323
  Object.defineProperty(exports$1, "__esModule", { value: true });
6282
- exports$1.setEnvironment = exports$1.parseAPIError = exports$1.FetchError = exports$1.getS3Url = exports$1.getCdnUrl = exports$1.getStaticUrl = exports$1.getApiUrl = exports$1.createHttpHelpers = exports$1.checkResponseSuccess = exports$1.apiFetch = exports$1.sendEmail = exports$1.pollForCompletion = exports$1.inviteFormCollaborator = exports$1.forwardInboxEmail = exports$1.extractAIDocument = exports$1.customRolloutAction = void 0;
6324
+ exports$1.setEnvironment = exports$1.parseAPIError = exports$1.FormConflictError = exports$1.SDKKeyError = exports$1.FetchError = exports$1.getS3Url = exports$1.getCdnUrl = exports$1.getStaticUrl = exports$1.getApiUrl = exports$1.createHttpHelpers = exports$1.checkResponseSuccess = exports$1.apiFetch = exports$1.sendEmail = exports$1.pollForCompletion = exports$1.inviteFormCollaborator = exports$1.forwardInboxEmail = exports$1.extractAIDocument = exports$1.customRolloutAction = void 0;
6283
6325
  var api_1 = requireApi();
6284
6326
  Object.defineProperty(exports$1, "customRolloutAction", { enumerable: true, get: function () { return api_1.customRolloutAction; } });
6285
6327
  Object.defineProperty(exports$1, "extractAIDocument", { enumerable: true, get: function () { return api_1.extractAIDocument; } });
@@ -6297,6 +6339,8 @@ function requireDist$2 () {
6297
6339
  Object.defineProperty(exports$1, "getS3Url", { enumerable: true, get: function () { return utils_1.getS3Url; } });
6298
6340
  var error_1 = requireError();
6299
6341
  Object.defineProperty(exports$1, "FetchError", { enumerable: true, get: function () { return error_1.FetchError; } });
6342
+ Object.defineProperty(exports$1, "SDKKeyError", { enumerable: true, get: function () { return error_1.SDKKeyError; } });
6343
+ Object.defineProperty(exports$1, "FormConflictError", { enumerable: true, get: function () { return error_1.FormConflictError; } });
6300
6344
  Object.defineProperty(exports$1, "parseAPIError", { enumerable: true, get: function () { return error_1.parseAPIError; } });
6301
6345
  var setup_1 = requireSetup();
6302
6346
  Object.defineProperty(exports$1, "setEnvironment", { enumerable: true, get: function () { return setup_1.setEnvironment; } });
@@ -6306,111 +6350,17 @@ function requireDist$2 () {
6306
6350
 
6307
6351
  var distExports$2 = requireDist$2();
6308
6352
 
6309
- var SDKKeyError = /** @class */ (function (_super) {
6310
- __extends(SDKKeyError, _super);
6311
- function SDKKeyError(message) {
6312
- if (message === void 0) { message = 'Invalid SDK Key'; }
6313
- var _this = _super.call(this, message) || this;
6314
- _this.name = 'SDKKeyError';
6315
- return _this;
6316
- }
6317
- return SDKKeyError;
6318
- }(Error));
6319
- var UserIdError = /** @class */ (function (_super) {
6320
- __extends(UserIdError, _super);
6321
- function UserIdError() {
6322
- var _this = _super.call(this, 'Invalid User ID') || this;
6323
- _this.name = 'UserIdError';
6324
- return _this;
6325
- }
6326
- return UserIdError;
6327
- }(Error));
6328
- var handleCustomScriptError = function (e) {
6329
- var _a, _b;
6330
- var errorReason = (_a = e.reason) !== null && _a !== void 0 ? _a : e.error;
6331
- // If stack is at 'eval', it is a logic rule error.
6332
- // Note this only works for unhandledrejection events, not error events.
6333
- console.warn('Error caught in custom HTML. Error Message: ', (_b = errorReason.message) !== null && _b !== void 0 ? _b : '');
6334
- e.stopPropagation();
6335
- e.preventDefault(); // Prevent the error in the log
6336
- };
6337
- var setCustomErrorHandler = function () {
6338
- featheryWindow().addEventListener('error', handleCustomScriptError);
6339
- };
6340
- var removeCustomErrorHandler = function () {
6341
- featheryWindow().removeEventListener('error', handleCustomScriptError);
6342
- };
6343
-
6344
6353
  var conflictAlertShown = false;
6345
- function checkResponseSuccess(response) {
6346
- return __awaiter$2(this, void 0, void 0, function () {
6347
- var payload, _a, _b, _c;
6348
- return __generator(this, function (_d) {
6349
- switch (_d.label) {
6350
- case 0:
6351
- _a = response.status;
6352
- switch (_a) {
6353
- case 200: return [3 /*break*/, 1];
6354
- case 201: return [3 /*break*/, 1];
6355
- case 202: return [3 /*break*/, 1];
6356
- case 400: return [3 /*break*/, 2];
6357
- case 401: return [3 /*break*/, 4];
6358
- case 404: return [3 /*break*/, 5];
6359
- case 409: return [3 /*break*/, 6];
6360
- case 500: return [3 /*break*/, 7];
6361
- }
6362
- return [3 /*break*/, 8];
6363
- case 1: return [2 /*return*/];
6364
- case 2:
6365
- _c = (_b = JSON).stringify;
6366
- return [4 /*yield*/, response.clone().text()];
6367
- case 3:
6368
- payload = _c.apply(_b, [_d.sent()]);
6369
- console.error(payload.toString());
6370
- return [2 /*return*/];
6371
- case 4: throw new SDKKeyError();
6372
- case 5: throw new distExports$2.FetchError("Can't find object");
6373
- case 6:
6374
- // prevent multiple 409s from displaying multiple alerts
6375
- if (conflictAlertShown)
6376
- return [2 /*return*/];
6377
- conflictAlertShown = true;
6378
- // Note: remove beforeunload listeners if there is a conflict
6379
- untrackUnload(true);
6380
- featheryWindow().alert('This form has been updated. Please fill it out again.');
6381
- location.reload();
6382
- return [2 /*return*/];
6383
- case 7: throw new distExports$2.FetchError('Internal server error');
6384
- case 8: throw new distExports$2.FetchError('Unknown error');
6385
- }
6386
- });
6387
- });
6354
+ function handleFormConflict() {
6355
+ // Prevent multiple 409s from displaying multiple alerts
6356
+ if (conflictAlertShown)
6357
+ return;
6358
+ conflictAlertShown = true;
6359
+ untrackUnload(true);
6360
+ featheryWindow().alert('This form has been updated. Please fill it out again.');
6361
+ location.reload();
6388
6362
  }
6389
6363
 
6390
- /*
6391
- * Global state tracking if the user has interacted with the form.
6392
- * We use this to block submitting fields so as to not create unnecessary
6393
- * fusers.
6394
- * Interaction state is global so that current and future feathery client
6395
- * instances can use it.
6396
- *
6397
- * A custom hook on the Form component handles setting the state after
6398
- * first interaction.
6399
- */
6400
- var interactionDetected = false;
6401
- var isInteractionDetected = function () { return interactionDetected; };
6402
- var setInteractionDetected = function () {
6403
- interactionDetected = true;
6404
- };
6405
- var FEATHERY_INTERACTION_EVENT = 'feathery:interaction';
6406
- var INTERACTION_EVENT_TYPES = [
6407
- 'keydown',
6408
- 'pointerdown',
6409
- // redundant events for greater browser support
6410
- 'mousedown',
6411
- 'touchstart'
6412
- ];
6413
-
6414
6364
  // Constants for the IndexedDB database
6415
6365
  var DB_NAME = 'requestsDB';
6416
6366
  var STORE_NAME = 'requestsStore';
@@ -6907,7 +6857,7 @@ var OfflineRequestHandler = /** @class */ (function () {
6907
6857
  keepalive: keepalive
6908
6858
  };
6909
6859
  var attemptRequest = function () { return __awaiter$2(_this, void 0, void 0, function () {
6910
- var attempts, response, nextDelay;
6860
+ var attempts, response, error_2, nextDelay;
6911
6861
  var _a, _b, _c, _d, _e;
6912
6862
  return __generator(this, function (_f) {
6913
6863
  switch (_f.label) {
@@ -6927,7 +6877,7 @@ var OfflineRequestHandler = /** @class */ (function () {
6927
6877
  return [4 /*yield*/, fetch(url, fetchOptions)];
6928
6878
  case 3:
6929
6879
  response = _f.sent();
6930
- return [4 /*yield*/, checkResponseSuccess(response)];
6880
+ return [4 /*yield*/, distExports$2.checkResponseSuccess(response)];
6931
6881
  case 4:
6932
6882
  _f.sent();
6933
6883
  markFileUploadRetrySuccess((_c = request.metadata) === null || _c === void 0 ? void 0 : _c.fieldKey);
@@ -6936,7 +6886,11 @@ var OfflineRequestHandler = /** @class */ (function () {
6936
6886
  _f.sent();
6937
6887
  return [2 /*return*/];
6938
6888
  case 6:
6939
- _f.sent();
6889
+ error_2 = _f.sent();
6890
+ if (error_2 instanceof distExports$2.FormConflictError) {
6891
+ handleFormConflict();
6892
+ return [2 /*return*/];
6893
+ }
6940
6894
  attempts++;
6941
6895
  return [4 /*yield*/, this.updateRetryAttempts(key, attempts)];
6942
6896
  case 7:
@@ -7334,6 +7288,10 @@ var IntegrationClient = /** @class */ (function () {
7334
7288
  var sdkKey = initInfo().sdkKey;
7335
7289
  return distExports$2.apiFetch(sdkKey, url, options, parseResponse).catch(function (e) {
7336
7290
  var _a;
7291
+ if (e instanceof distExports$2.FormConflictError) {
7292
+ handleFormConflict();
7293
+ return;
7294
+ }
7337
7295
  // Ignore TypeErrors if form has redirected because `fetch` in
7338
7296
  // Safari will error after redirect
7339
7297
  var ignore = ((_a = _this.ignoreNetworkErrors) === null || _a === void 0 ? void 0 : _a.current) ||
@@ -7766,6 +7724,43 @@ var IntegrationClient = /** @class */ (function () {
7766
7724
  });
7767
7725
  }); });
7768
7726
  };
7727
+ IntegrationClient.prototype.sendDocusignEnvelope = function (_a) {
7728
+ var _this = this;
7729
+ var documents = _a.documents, fillData = _a.fillData, emailSubject = _a.emailSubject, emailBlurb = _a.emailBlurb, signers = _a.signers;
7730
+ var userId = initInfo().userId;
7731
+ var url = "".concat(API_URL, "docusign/envelope/");
7732
+ var options = {
7733
+ headers: { 'Content-Type': 'application/json' },
7734
+ method: 'POST',
7735
+ body: JSON.stringify({
7736
+ fuser_key: userId,
7737
+ form_key: this.formKey,
7738
+ documents: documents,
7739
+ fill_data: fillData,
7740
+ email_subject: emailSubject,
7741
+ email_blurb: emailBlurb,
7742
+ signers: signers
7743
+ })
7744
+ };
7745
+ return this._fetch(url, options, false).then(function (response) { return __awaiter$2(_this, void 0, void 0, function () {
7746
+ var _a, _b;
7747
+ return __generator(this, function (_c) {
7748
+ switch (_c.label) {
7749
+ case 0:
7750
+ if (!response) return [3 /*break*/, 4];
7751
+ if (!response.ok) return [3 /*break*/, 2];
7752
+ return [4 /*yield*/, response.json()];
7753
+ case 1: return [2 /*return*/, _c.sent()];
7754
+ case 2:
7755
+ _a = Error;
7756
+ _b = distExports$2.parseAPIError;
7757
+ return [4 /*yield*/, response.json()];
7758
+ case 3: throw _a.apply(void 0, [_b.apply(void 0, [_c.sent()])]);
7759
+ case 4: return [2 /*return*/];
7760
+ }
7761
+ });
7762
+ }); });
7763
+ };
7769
7764
  IntegrationClient.prototype.generateQuikEnvelopes = function (action) {
7770
7765
  var _this = this;
7771
7766
  var userId = initInfo().userId;
@@ -20613,16 +20608,21 @@ var Element$1 = function (_a) {
20613
20608
  });
20614
20609
  var debouncedOnChange_1 = React.useCallback(debounce(onChange_1, 500), []);
20615
20610
  var required = isFieldActuallyRequired(el, activeStep);
20611
+ // Submit steps by pressing `Enter`
20616
20612
  var onEnter = function (e) {
20617
20613
  e.preventDefault();
20618
20614
  e.stopPropagation();
20619
20615
  if (!formSettings.enterToSubmit)
20620
20616
  return;
20621
- // Submit steps by pressing `Enter`
20622
- var enterButton = activeStep.buttons.find(function (b) { return b.properties.submit; });
20617
+ // { element: Element, last: Boolean, type: 'buttons' }
20618
+ var visibleButtons = getVisibleElements(activeStep, visiblePositions, ['buttons'], false);
20619
+ var enterButton = visibleButtons.find(function (_a) {
20620
+ var element = _a.element;
20621
+ return element.properties.submit;
20622
+ });
20623
20623
  if (enterButton) {
20624
20624
  // Simulate button click if available
20625
- buttonOnClick(enterButton);
20625
+ buttonOnClick(enterButton.element);
20626
20626
  }
20627
20627
  };
20628
20628
  var fieldProps = exports.__assign(exports.__assign({}, basicProps), { elementProps: elementProps[servar_1.key], autoComplete: formSettings.autocomplete, rightToLeft: formSettings.rightToLeft, disabled: el.properties.disabled || readOnly, onEnter: onEnter, required: required });
@@ -21488,6 +21488,31 @@ function requireClassnames () {
21488
21488
  var classnamesExports = requireClassnames();
21489
21489
  var cls = /*@__PURE__*/getDefaultExportFromCjs(classnamesExports);
21490
21490
 
21491
+ var UserIdError = /** @class */ (function (_super) {
21492
+ __extends(UserIdError, _super);
21493
+ function UserIdError() {
21494
+ var _this = _super.call(this, 'Invalid User ID') || this;
21495
+ _this.name = 'UserIdError';
21496
+ return _this;
21497
+ }
21498
+ return UserIdError;
21499
+ }(Error));
21500
+ var handleCustomScriptError = function (e) {
21501
+ var _a, _b;
21502
+ var errorReason = (_a = e.reason) !== null && _a !== void 0 ? _a : e.error;
21503
+ // If stack is at 'eval', it is a logic rule error.
21504
+ // Note this only works for unhandledrejection events, not error events.
21505
+ console.warn('Error caught in custom HTML. Error Message: ', (_b = errorReason.message) !== null && _b !== void 0 ? _b : '');
21506
+ e.stopPropagation();
21507
+ e.preventDefault(); // Prevent the error in the log
21508
+ };
21509
+ var setCustomErrorHandler = function () {
21510
+ featheryWindow().addEventListener('error', handleCustomScriptError);
21511
+ };
21512
+ var removeCustomErrorHandler = function () {
21513
+ featheryWindow().removeEventListener('error', handleCustomScriptError);
21514
+ };
21515
+
21491
21516
  // Allows running scripts in dangerous HTML
21492
21517
  function DangerouslySetHtmlContent(_a) {
21493
21518
  var _b = _a.html, html = _b === void 0 ? '' : _b, rest = __rest$1(_a, ["html"]);
@@ -22647,6 +22672,9 @@ var getFormContext = function (formUuid) {
22647
22672
  forwardInboxEmail: function (options) { return formState.forwardInboxEmail(options); },
22648
22673
  setCalendlyUrl: function (url) { return formState.setCalendlyUrl(url); },
22649
22674
  fillQuikForms: function (params) { return formState.fillQuikForms(params); },
22675
+ sendDocusignEnvelope: function (params) {
22676
+ return formState.sendDocusignEnvelope(params);
22677
+ },
22650
22678
  applyAlloyJourney: function (journeyToken, entities) {
22651
22679
  return formState.client.alloyJourneyApplication(journeyToken, entities);
22652
22680
  },
@@ -39657,6 +39685,19 @@ function Form(_a) {
39657
39685
  setIntegrations(function (integrations) { return (exports.__assign(exports.__assign({}, integrations), { calendly: exports.__assign(exports.__assign({}, integrations === null || integrations === void 0 ? void 0 : integrations.calendly), { metadata: exports.__assign(exports.__assign({}, integrations === null || integrations === void 0 ? void 0 : integrations.calendly.metadata), { api_key: url }) }) })); });
39658
39686
  }
39659
39687
  },
39688
+ sendDocusignEnvelope: function (params) { return __awaiter$2(_this, void 0, void 0, function () {
39689
+ return __generator(this, function (_a) {
39690
+ switch (_a.label) {
39691
+ case 0: return [4 /*yield*/, Promise.all([
39692
+ client.flushCustomFields(),
39693
+ defaultClient.flushCustomFields()
39694
+ ])];
39695
+ case 1:
39696
+ _a.sent();
39697
+ return [2 /*return*/, client.sendDocusignEnvelope(params)];
39698
+ }
39699
+ });
39700
+ }); },
39660
39701
  fillQuikForms: function (_a) {
39661
39702
  var fillType = _a.fillType, docusignConnectionId = _a.docusignConnectionId, docusignCustomId = _a.docusignCustomId, enableWetSign = _a.enableWetSign;
39662
39703
  return __awaiter$2(_this, void 0, void 0, function () {
@@ -45366,12 +45407,14 @@ var FeatheryClient = /** @class */ (function (_super) {
45366
45407
  });
45367
45408
  };
45368
45409
  FeatheryClient.prototype.runServerSideLogicRule = function (id) {
45369
- var userId = initInfo().userId;
45410
+ var _a = initInfo(), userId = _a.userId, collaboratorId = _a.collaboratorId;
45370
45411
  var data = {
45371
45412
  id: id,
45372
45413
  form_key: this.formKey,
45373
45414
  fuser_key: userId
45374
45415
  };
45416
+ if (collaboratorId)
45417
+ data.collaborator_id = collaboratorId;
45375
45418
  var url = "".concat(API_URL, "panel/logic-rule/execute/");
45376
45419
  var options = {
45377
45420
  headers: { 'Content-Type': 'application/json' },
@@ -45686,7 +45729,7 @@ function init(sdkKey, options) {
45686
45729
  var _a, _b;
45687
45730
  if (options === void 0) { options = {}; }
45688
45731
  if (!sdkKey || typeof sdkKey !== 'string') {
45689
- throw new SDKKeyError();
45732
+ throw new distExports$2.SDKKeyError();
45690
45733
  }
45691
45734
  // If client attempts to set userId but it's not yet valid, don't initialize
45692
45735
  // until it becomes valid
@@ -45724,9 +45767,9 @@ function init(sdkKey, options) {
45724
45767
  if (runningInClient()) {
45725
45768
  // Dynamically load libraries that must be client side
45726
45769
  global.scriptjsLoadPromise = Promise.resolve().then(function () { return require(
45727
- /* webpackChunkName: "scriptjs" */ './fthry_script.BvEAOIuu.js'); }).then(function (n) { return n.script; });
45770
+ /* webpackChunkName: "scriptjs" */ './fthry_script.3qe3Z--U.js'); }).then(function (n) { return n.script; });
45728
45771
  global.webfontloaderPromise = Promise.resolve().then(function () { return require(
45729
- /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.BZzxrDoy.js'); }).then(function (n) { return n.webfontloader; });
45772
+ /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.zWeOTB3n.js'); }).then(function (n) { return n.webfontloader; });
45730
45773
  // Client-side tracking logic
45731
45774
  if (initState.userTracking === 'cookie') {
45732
45775
  var cookieKey = "feathery-user-id-".concat(sdkKey);
@@ -45766,7 +45809,7 @@ function _fetchFormData(formIds) {
45766
45809
  function initInfo() {
45767
45810
  var sdkKey = initState.sdkKey;
45768
45811
  if (!sdkKey)
45769
- throw new SDKKeyError('SDK key has not been set');
45812
+ throw new distExports$2.SDKKeyError('SDK key has not been set');
45770
45813
  return initState;
45771
45814
  }
45772
45815
  function handleNewUserSearchParams(newUserId) {
@@ -45872,7 +45915,7 @@ function getFieldValues() {
45872
45915
  return exports.__assign({}, exports.fieldValues);
45873
45916
  }
45874
45917
  function logFeatheryBadge() {
45875
- console.log('%c Feathery %c v' + "2.16.4" + ' ', // replaced with real version during build
45918
+ console.log('%c Feathery %c v' + "2.17.0" + ' ', // replaced with real version during build
45876
45919
  'background: #e2626e; color: white; padding: 2px 6px; border-radius: 3px 0 0 3px; font-weight: bold;', 'background: #fce7e9; color: #c5495a; padding: 2px 6px; border-radius: 0 3px 3px 0;');
45877
45920
  }
45878
45921
 
@@ -47300,39 +47343,39 @@ breakpoint) {
47300
47343
  return styles.getTarget('inner-container', undefined, viewport === 'mobile');
47301
47344
  };
47302
47345
 
47303
- var AddressLine1 = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "AddressField" */ './fthry_index.CLCxPTbZ.js'); }); });
47304
- var ButtonGroupField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.D58YnjUa.js'); }); });
47305
- var CheckboxField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxField" */ './fthry_index.BkrdVXlS.js'); }); });
47346
+ var AddressLine1 = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "AddressField" */ './fthry_index.CqPkKG2Y.js'); }); });
47347
+ var ButtonGroupField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.cWwcHKMJ.js'); }); });
47348
+ var CheckboxField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxField" */ './fthry_index.C-wfIa7q.js'); }); });
47306
47349
  var CheckboxGroupField = React.lazy(function () {
47307
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.DwLX_2Pg.js'); });
47350
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.KpzBj2Sl.js'); });
47308
47351
  });
47309
- var ColorPickerField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "ColorPickerField" */ './fthry_index.CErXN5ib.js'); }); });
47310
- var CustomField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "CustomField" */ './fthry_index.B2qUeiLW.js'); }); });
47352
+ var ColorPickerField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "ColorPickerField" */ './fthry_index.Cpx2CFYi.js'); }); });
47353
+ var CustomField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "CustomField" */ './fthry_index.DpbLLXbr.js'); }); });
47311
47354
  var DateSelectorField = React.lazy(function () {
47312
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "DateSelectorField" */ './fthry_index.DSxgvkD6.js'); });
47355
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "DateSelectorField" */ './fthry_index.DmqW1Cwt.js'); });
47313
47356
  });
47314
- var DropdownField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownField" */ './fthry_index.CzboYjT9.js'); }); });
47357
+ var DropdownField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownField" */ './fthry_index.BMR_-WAJ.js'); }); });
47315
47358
  var DropdownMultiField = React.lazy(function () {
47316
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.C2faZV4U.js'); });
47359
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.B53nunGq.js'); });
47317
47360
  });
47318
- var FileUploadField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "FileUploadField" */ './fthry_index.CVVkGWoS.js'); }); });
47319
- var MatrixField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "MatrixField" */ './fthry_index.CLXUeHKN.js'); }); });
47320
- var PasswordField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PasswordField" */ './fthry_index.Blf8s7tI.js'); }); });
47361
+ var FileUploadField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "FileUploadField" */ './fthry_index.DntXErYs.js'); }); });
47362
+ var MatrixField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "MatrixField" */ './fthry_index.BbQqFT3f.js'); }); });
47363
+ var PasswordField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PasswordField" */ './fthry_index.yGs0zxyx.js'); }); });
47321
47364
  var PaymentMethodField = React.lazy(function () {
47322
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.CRU8I39r.js'); });
47365
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.CgWYhzY0.js'); });
47323
47366
  });
47324
- var PhoneField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PhoneField" */ './fthry_index.DE8kmziv.js'); }); });
47325
- var PinInputField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PinInputField" */ './fthry_index.V5EVqSky.js'); }); });
47326
- var QRScanner = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "QRScanner" */ './fthry_index.Cp_TTbT2.js'); }); });
47367
+ var PhoneField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PhoneField" */ './fthry_index.BC2-h9F1.js'); }); });
47368
+ var PinInputField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PinInputField" */ './fthry_index.D7rouYBR.js'); }); });
47369
+ var QRScanner = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "QRScanner" */ './fthry_index.D0lwvVp_.js'); }); });
47327
47370
  var RadioButtonGroupField = React.lazy(function () {
47328
47371
  return Promise.resolve().then(function () { return require(
47329
- /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.C4sU4QL2.js'); });
47372
+ /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.BBp3NBRn.js'); });
47330
47373
  });
47331
- var RatingField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "RatingField" */ './fthry_index.oWGHOOOB.js'); }); });
47332
- var SignatureField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "SignatureField" */ './fthry_index.KP0Ca3IU.js'); }); });
47333
- var SliderField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "SliderField" */ './fthry_index.R4pSt2d2.js'); }); });
47334
- var TextField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextField" */ './fthry_index.CRDDr01i.js'); }); });
47335
- var TextArea = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextArea" */ './fthry_index.Lkx3mO74.js'); }); });
47374
+ var RatingField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "RatingField" */ './fthry_index.CEsr4Pvr.js'); }); });
47375
+ var SignatureField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "SignatureField" */ './fthry_index.Ctz5Avdg.js'); }); });
47376
+ var SliderField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "SliderField" */ './fthry_index.CNxXiO1i.js'); }); });
47377
+ var TextField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextField" */ './fthry_index.-VHhhPW_.js'); }); });
47378
+ var TextArea = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextArea" */ './fthry_index.DzghgV-3.js'); }); });
47336
47379
  var Fields = {
47337
47380
  AddressLine1: AddressLine1,
47338
47381
  ButtonGroupField: ButtonGroupField,
@@ -48272,7 +48315,7 @@ function ElementSkeleton(_a) {
48272
48315
  }
48273
48316
  var templateObject_1;
48274
48317
 
48275
- var TableElement = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TableElement" */ './fthry_index.DsC9aI6w.js'); }); });
48318
+ var TableElement = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TableElement" */ './fthry_index.C_bb05Fz.js'); }); });
48276
48319
  var Basic = {
48277
48320
  ImageElement: ImageElement,
48278
48321
  VideoElement: VideoElement,
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./fthry_index.BgTQ1FlN.js');
3
+ var index = require('./fthry_index.Bk9wFqEq.js');
4
4
  var React = require('react');
5
5
  require('react/jsx-runtime');
6
6
  require('react-dom/client');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./fthry_index.BgTQ1FlN.js');
3
+ var index = require('./fthry_index.Bk9wFqEq.js');
4
4
  var React = require('react');
5
5
  require('react/jsx-runtime');
6
6
  require('react-dom/client');
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./fthry_index.BgTQ1FlN.js');
3
+ var index = require('./fthry_index.Bk9wFqEq.js');
4
4
  var React = require('react');
5
- var styles = require('./fthry_styles.BnOkS_mr.js');
5
+ var styles = require('./fthry_styles.HNGSxnCE.js');
6
6
  require('react/jsx-runtime');
7
7
  require('react-dom/client');
8
8
  require('jszip');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./fthry_index.BgTQ1FlN.js');
3
+ var index = require('./fthry_index.Bk9wFqEq.js');
4
4
  var React = require('react');
5
5
  var ReactDOM = require('react-dom');
6
6
  require('react/jsx-runtime');
@@ -187,7 +187,8 @@ var buttonStyle = {
187
187
  },
188
188
  '&:disabled:hover': {
189
189
  color: colors.gray600,
190
- backgroundColor: colors.gray50
190
+ backgroundColor: colors.gray50,
191
+ cursor: 'auto'
191
192
  }
192
193
  };
193
194
  var actionButtonStyle = index.__assign(index.__assign({}, buttonStyle), { borderRadius: '4px', paddingInline: '8px', width: 'auto', height: '28px', position: 'relative' });
@@ -206,10 +207,7 @@ var actionMenuStyle = {
206
207
  minWidth: '120px'
207
208
  };
208
209
  var actionMenuItemStyle = {
209
- display: 'flex',
210
- flexDirection: 'row',
211
- alignItems: 'center',
212
- justifyContent: 'between',
210
+ display: 'block',
213
211
  width: '100%',
214
212
  textAlign: 'left',
215
213
  paddingLeft: '12px',
@@ -227,7 +225,8 @@ var actionMenuItemStyle = {
227
225
  backgroundColor: colors.gray100
228
226
  },
229
227
  '&:disabled:hover': {
230
- backgroundColor: 'transparent'
228
+ backgroundColor: 'transparent',
229
+ cursor: 'auto'
231
230
  },
232
231
  '&:first-of-type': {
233
232
  borderTopLeftRadius: '4px',
@@ -332,11 +331,12 @@ function MenuIcon() {
332
331
  return (index.jsxs("svg", index.__assign({ css: menuIconStyle, fill: 'currentColor', viewBox: '0 0 24 24' }, { children: [index.jsx("circle", { cx: '12', cy: '5', r: '2' }), index.jsx("circle", { cx: '12', cy: '12', r: '2' }), index.jsx("circle", { cx: '12', cy: '19', r: '2' })] })));
333
332
  }
334
333
  function ActionButtons(_a) {
335
- var actions = _a.actions, rowIndex = _a.rowIndex, columnData = _a.columnData, fieldValuesProp = _a.fieldValues, onClick = _a.onClick, _b = _a.forceInlineButtons, forceInlineButtons = _b === void 0 ? false : _b, _c = _a.tableId, tableId = _c === void 0 ? '' : _c, _d = _a.buttonLoaders, buttonLoaders = _d === void 0 ? {} : _d;
334
+ var _b, _c, _d;
335
+ var actions = _a.actions, rowIndex = _a.rowIndex, columnData = _a.columnData, fieldValuesProp = _a.fieldValues, onClick = _a.onClick, _e = _a.forceInlineButtons, forceInlineButtons = _e === void 0 ? false : _e, _f = _a.tableId, tableId = _f === void 0 ? '' : _f, _g = _a.buttonLoaders, buttonLoaders = _g === void 0 ? {} : _g;
336
336
  if (actions.length === 0)
337
337
  return null;
338
- var _e = index.__read(React.useState(false), 2), isMenuOpen = _e[0], setIsMenuOpen = _e[1];
339
- var _f = index.__read(React.useState({ top: 0, left: 0 }), 2), menuPosition = _f[0], setMenuPosition = _f[1];
338
+ var _h = index.__read(React.useState(false), 2), isMenuOpen = _h[0], setIsMenuOpen = _h[1];
339
+ var _j = index.__read(React.useState({ top: 0, left: 0 }), 2), menuPosition = _j[0], setMenuPosition = _j[1];
340
340
  var containerRef = React.useRef(null);
341
341
  var menuRef = React.useRef(null);
342
342
  var menuButtonRef = React.useRef(null);
@@ -382,20 +382,27 @@ function ActionButtons(_a) {
382
382
  }
383
383
  setIsMenuOpen(!isMenuOpen);
384
384
  };
385
- return (index.jsx("div", index.__assign({ ref: containerRef, css: actionContainerStyle }, { children: useOverflow ? (index.jsxs(index.Fragment, { children: [index.jsx("button", index.__assign({ ref: menuButtonRef, type: 'button', onClick: function (e) {
385
+ var overflowLoader = (_d = (_c = buttonLoaders["".concat(tableId, "_").concat(rowIndex, "_").concat((_b = actions.find(function (action) {
386
+ var _a;
387
+ var buttonKey = "".concat(tableId, "_").concat(rowIndex, "_").concat(action.label);
388
+ return (_a = buttonLoaders[buttonKey]) === null || _a === void 0 ? void 0 : _a.loader;
389
+ })) === null || _b === void 0 ? void 0 : _b.label)]) === null || _c === void 0 ? void 0 : _c.loader) !== null && _d !== void 0 ? _d : null;
390
+ return (index.jsx("div", index.__assign({ ref: containerRef, css: actionContainerStyle }, { children: useOverflow ? (index.jsxs(index.Fragment, { children: [index.jsx("button", index.__assign({ ref: menuButtonRef, type: 'button', disabled: overflowLoader, onClick: function (e) {
386
391
  e.stopPropagation();
387
392
  handleMenuToggle();
388
- }, css: actionIconButtonStyle }, { children: index.jsx(MenuIcon, {}) })), isMenuOpen &&
393
+ }, css: actionIconButtonStyle }, { children: overflowLoader ? (index.jsx("div", index.__assign({ style: {
394
+ height: '16px',
395
+ width: '16px',
396
+ display: 'flex',
397
+ alignItems: 'center',
398
+ justifyContent: 'center'
399
+ } }, { children: overflowLoader }))) : (index.jsx(MenuIcon, {})) })), isMenuOpen &&
389
400
  ReactDOM.createPortal(index.jsx("div", index.__assign({ ref: menuRef, css: index.__assign(index.__assign({}, actionMenuStyle), { top: "".concat(menuPosition.top, "px"), left: "".concat(menuPosition.left, "px"), transform: 'translateX(-100%)' }) }, { children: actions.map(function (action, index$1) {
390
- var _a;
391
- var buttonKey = "".concat(tableId, "_").concat(rowIndex, "_").concat(action.label);
392
- var loader = (_a = buttonLoaders[buttonKey]) === null || _a === void 0 ? void 0 : _a.loader;
393
401
  var disabled = Object.keys(buttonLoaders).length > 0;
394
- return (index.jsxs("button", index.__assign({ type: 'button', onClick: function () { return handleActionClick(action); }, css: actionMenuItemStyle, disabled: disabled }, { children: [index.jsx("span", index.__assign({ css: { flex: 1 } }, { children: action.label })), loader && (index.jsx("div", index.__assign({ style: {
395
- height: '16px',
396
- width: '16px',
397
- flexShrink: 0
398
- } }, { children: loader })))] }), index$1));
402
+ return (index.jsx("button", index.__assign({ type: 'button', onClick: function (e) {
403
+ e.stopPropagation();
404
+ handleActionClick(action);
405
+ }, css: actionMenuItemStyle, disabled: disabled }, { children: action.label }), index$1));
399
406
  }) })), index.featheryDoc().body)] })) : (actions.map(function (action, index$1) {
400
407
  var _a;
401
408
  var buttonKey = "".concat(tableId, "_").concat(rowIndex, "_").concat(action.label);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./fthry_index.BgTQ1FlN.js');
3
+ var index = require('./fthry_index.Bk9wFqEq.js');
4
4
  var React = require('react');
5
5
  var ReactJSXRuntime = require('react/jsx-runtime');
6
6
  require('react-dom/client');