@verbb/formie-browser 1.0.7 → 1.0.9

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 (90) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/chunks/_survey-presentations-RbSqcQph.js +4 -0
  3. package/dist/chunks/{address-state-BQ0xGV9n.js → address-state-BwE01m2_.js} +1 -1
  4. package/dist/chunks/{api-DztsCJ4r.js → api-BYe9YPko.js} +194 -153
  5. package/dist/chunks/{bpoint-2qDxlKD9.js → bpoint-C0VOftX9.js} +1 -1
  6. package/dist/chunks/{combobox-D-2b42wn.js → combobox-C0EuExSI.js} +1 -1
  7. package/dist/chunks/{eway-CImXrB4g.js → eway-CS6Y1Yvo.js} +1 -1
  8. package/dist/chunks/{file-upload-D49m8-DR.js → file-upload-rqfZNqlH.js} +1 -1
  9. package/dist/chunks/{go-cardless-Bz7HHtH0.js → go-cardless-BTPD668l.js} +1 -1
  10. package/dist/chunks/{mollie-BtnB3KGh.js → mollie-CXgBwvo6.js} +1 -1
  11. package/dist/chunks/{moneris-Bd4vUk8b.js → moneris-B6oLu7nj.js} +1 -1
  12. package/dist/chunks/{opayo-B-eRIXo-.js → opayo-DPUA5CKr.js} +1 -1
  13. package/dist/chunks/{paddle-BUFeEU4d.js → paddle-GRlsm5mm.js} +1 -1
  14. package/dist/chunks/{paypal-8Euw7Hrn.js → paypal-CdcZnf6r.js} +2 -2
  15. package/dist/chunks/{payway-dV0SzJxy.js → payway-CfmYOS__.js} +2 -2
  16. package/dist/chunks/{repeater-B5leVxZU.js → repeater-BVnPUqTj.js} +1 -1
  17. package/dist/chunks/rich-text-Bg_--4TG.js +349 -0
  18. package/dist/chunks/{square-reyJukb7.js → square-BY--5M-X.js} +1 -1
  19. package/dist/chunks/{stripe-BC-2PBvY.js → stripe-uusYjWty.js} +2 -2
  20. package/dist/chunks/{summary-D3AjxpYN.js → summary-Dks0gXS3.js} +42 -38
  21. package/dist/chunks/survey-likert-DkE6bR7B.js +20 -0
  22. package/dist/chunks/survey-rank-DN6x4IZM.js +127 -0
  23. package/dist/chunks/survey-rating-BnsNL9U5.js +88 -0
  24. package/dist/chunks/{table-C-lkQN6I.js → table-CAjCJHrL.js} +1 -1
  25. package/dist/chunks/{upload-manager-BpqWSHmU.js → upload-manager-W-QDgxKD.js} +1 -1
  26. package/dist/css/formie-theme.css +1 -0
  27. package/dist/css/theme/_tokens.css +10 -5
  28. package/dist/css/theme/fields/_check-radio.css +1 -1
  29. package/dist/css/theme/fields/_combobox.css +1 -1
  30. package/dist/css/theme/fields/_file.css +3 -3
  31. package/dist/css/theme/fields/_input.css +1 -1
  32. package/dist/css/theme/fields/_repeater.css +1 -1
  33. package/dist/css/theme/fields/_rich-text.css +1 -1
  34. package/dist/css/theme/fields/_select.css +1 -1
  35. package/dist/css/theme/fields/_survey-presentations.css +396 -0
  36. package/dist/css/theme/fields/_table.css +1 -1
  37. package/dist/css/theme/fields/_upload-manager.css +3 -3
  38. package/dist/css/theme/integrations/_paypal.css +1 -1
  39. package/dist/css/theme/integrations/_payway.css +1 -1
  40. package/dist/css/theme/integrations/_stripe.css +1 -1
  41. package/dist/index.js +398 -376
  42. package/dist/js/contracts/schema.d.ts +5 -0
  43. package/dist/js/contracts/schema.d.ts.map +1 -1
  44. package/dist/js/core/create-formie-client.d.ts.map +1 -1
  45. package/dist/js/core/page-client-event.d.ts +8 -4
  46. package/dist/js/core/page-client-event.d.ts.map +1 -1
  47. package/dist/js/core/submit-flow.d.ts.map +1 -1
  48. package/dist/js/core/submit-result-state.d.ts.map +1 -1
  49. package/dist/js/core/submit-result-ui.d.ts +1 -0
  50. package/dist/js/core/submit-result-ui.d.ts.map +1 -1
  51. package/dist/js/modules/fields/index.d.ts.map +1 -1
  52. package/dist/js/modules/fields/summary.d.ts.map +1 -1
  53. package/dist/js/modules/fields/survey-likert.d.ts +3 -0
  54. package/dist/js/modules/fields/survey-likert.d.ts.map +1 -0
  55. package/dist/js/modules/fields/survey-rank.d.ts +3 -0
  56. package/dist/js/modules/fields/survey-rank.d.ts.map +1 -0
  57. package/dist/js/modules/fields/survey-rating.d.ts +3 -0
  58. package/dist/js/modules/fields/survey-rating.d.ts.map +1 -0
  59. package/dist/js/transport/forms-api.d.ts.map +1 -1
  60. package/dist/js/utils/fields.d.ts.map +1 -1
  61. package/package.json +2 -2
  62. package/src/css/formie-theme.css +1 -0
  63. package/src/css/theme/_tokens.css +10 -5
  64. package/src/css/theme/fields/_check-radio.css +1 -1
  65. package/src/css/theme/fields/_combobox.css +1 -1
  66. package/src/css/theme/fields/_file.css +3 -3
  67. package/src/css/theme/fields/_input.css +1 -1
  68. package/src/css/theme/fields/_repeater.css +1 -1
  69. package/src/css/theme/fields/_rich-text.css +1 -1
  70. package/src/css/theme/fields/_select.css +1 -1
  71. package/src/css/theme/fields/_survey-presentations.css +396 -0
  72. package/src/css/theme/fields/_table.css +1 -1
  73. package/src/css/theme/fields/_upload-manager.css +3 -3
  74. package/src/css/theme/integrations/_paypal.css +1 -1
  75. package/src/css/theme/integrations/_payway.css +1 -1
  76. package/src/css/theme/integrations/_stripe.css +1 -1
  77. package/src/js/contracts/schema.ts +6 -0
  78. package/src/js/core/create-formie-client.ts +14 -1
  79. package/src/js/core/page-client-event.ts +86 -18
  80. package/src/js/core/submit-flow.ts +3 -1
  81. package/src/js/core/submit-result-state.ts +18 -2
  82. package/src/js/core/submit-result-ui.ts +47 -9
  83. package/src/js/modules/fields/index.ts +3 -0
  84. package/src/js/modules/fields/summary.ts +17 -3
  85. package/src/js/modules/fields/survey-likert.ts +50 -0
  86. package/src/js/modules/fields/survey-rank.ts +385 -0
  87. package/src/js/modules/fields/survey-rating.ts +182 -0
  88. package/src/js/transport/forms-api.ts +1 -0
  89. package/src/js/utils/fields.ts +14 -2
  90. package/dist/chunks/rich-text-D0sb8bmX.js +0 -349
@@ -14,14 +14,14 @@ function m(e, n, r) {
14
14
  }
15
15
  //#endregion
16
16
  //#region src/js/core/page-client-event.ts
17
- var h = r("general", "page-client-event"), g = "data-formie-client-event";
17
+ var h = r("general", "page-client-event"), g = "data-formie-client-event", _ = "data-formie-pending-client-events";
18
18
  function ee(e) {
19
19
  return typeof window < "u" && window.CSS?.escape ? window.CSS.escape(e) : e.replace(/\\/g, "\\\\").replace(/"/g, "\\\"");
20
20
  }
21
21
  function te(e) {
22
22
  return e.querySelector("input[name=\"pageId\"]")?.value?.trim() || e.querySelector("[data-formie-page]:not([data-formie-page-hidden])")?.getAttribute("data-formie-page-id")?.trim() || e.querySelector("[data-formie-page]")?.getAttribute("data-formie-page-id")?.trim() || null;
23
23
  }
24
- function _(e) {
24
+ function ne(e) {
25
25
  if (!e?.trim()) return null;
26
26
  try {
27
27
  let t = JSON.parse(e);
@@ -30,14 +30,51 @@ function _(e) {
30
30
  return h.warn("Invalid data-formie-client-event JSON.", { rawPreview: e.slice(0, 80) }), null;
31
31
  }
32
32
  }
33
- function ne(e) {
33
+ function re(e) {
34
34
  let t = {};
35
35
  return e.forEach((e) => {
36
36
  let n = typeof e.label == "string" ? e.label.trim() : "";
37
37
  n && (t[n] = typeof e.value == "string" ? e.value : "");
38
38
  }), t;
39
39
  }
40
+ function ie(e) {
41
+ return Array.isArray(e) ? e.map((e) => {
42
+ if (!e || typeof e != "object") return null;
43
+ let t = e, n = typeof t.event == "string" ? t.event.trim() : "", r = t.payload && typeof t.payload == "object" ? t.payload : null;
44
+ return !n || !r ? null : {
45
+ event: n,
46
+ payload: r
47
+ };
48
+ }).filter((e) => e !== null) : [];
49
+ }
40
50
  function v(e, t) {
51
+ if (!t.length) return;
52
+ let n = window;
53
+ n.dataLayer = n.dataLayer || [], t.forEach((t) => {
54
+ n.dataLayer.push(t.payload), e.dispatchEvent(new CustomEvent("formie:client-event", {
55
+ bubbles: !0,
56
+ detail: {
57
+ event: t.event,
58
+ payload: t.payload
59
+ }
60
+ }));
61
+ }), h.log("Dispatched resolved client events.", {
62
+ count: t.length,
63
+ events: t.map((e) => e.event)
64
+ });
65
+ }
66
+ function ae(e) {
67
+ let t = e.getAttribute(_);
68
+ if (t?.trim()) try {
69
+ let n = ie(JSON.parse(t));
70
+ n.length && v(e, n);
71
+ } catch {
72
+ h.warn("Invalid pending client events JSON on form element.");
73
+ } finally {
74
+ e.removeAttribute(_);
75
+ }
76
+ }
77
+ function y(e, t) {
41
78
  if (t !== "submit") return;
42
79
  let n = te(e);
43
80
  if (!n) {
@@ -51,43 +88,40 @@ function v(e, t) {
51
88
  }
52
89
  let i = r.getAttribute(g);
53
90
  if (i === null) return;
54
- let a = _(i);
91
+ let a = ne(i);
55
92
  if (!a || !Array.isArray(a.fields)) return;
56
- let o = ne(a.fields), s = window;
57
- s.dataLayer = s.dataLayer || [], s.dataLayer.push(o), e.dispatchEvent(new CustomEvent("formie:client-event", {
58
- bubbles: !0,
59
- detail: { payload: o }
60
- })), h.log("Dispatched page client event.", {
61
- pageId: n,
62
- keys: Object.keys(o)
63
- });
93
+ let o = re(a.fields);
94
+ v(e, [{
95
+ event: typeof o.event == "string" && o.event !== "" ? o.event : "formPageSubmission",
96
+ payload: o
97
+ }]);
64
98
  }
65
99
  //#endregion
66
100
  //#region src/js/core/page-tab-errors.ts
67
- function re(e, t) {
101
+ function oe(e, t) {
68
102
  if (i(e, e, "tabError", t), t) {
69
103
  e.setAttribute("data-formie-tab-error", "true");
70
104
  return;
71
105
  }
72
106
  e.removeAttribute("data-formie-tab-error");
73
107
  }
74
- function y(e) {
108
+ function b(e) {
75
109
  let t = /* @__PURE__ */ new Set();
76
110
  e.querySelectorAll("[data-formie-page]").forEach((e) => {
77
111
  let n = e, r = n.getAttribute("data-formie-page-id");
78
112
  r && n.querySelector("[data-formie-field-has-error]") && t.add(r);
79
113
  }), e.querySelectorAll("[data-formie-tab]").forEach((e) => {
80
114
  let n = e, r = n.getAttribute("data-formie-page-id");
81
- re(n, !!r && t.has(r));
115
+ oe(n, !!r && t.has(r));
82
116
  });
83
117
  }
84
118
  //#endregion
85
119
  //#region src/js/validation/scope.ts
86
- function b(e) {
120
+ function x(e) {
87
121
  return Array.from(e.querySelectorAll("[data-formie-page]"));
88
122
  }
89
- function x(e) {
90
- let t = b(e);
123
+ function S(e) {
124
+ let t = x(e);
91
125
  if (!t.length) return {
92
126
  scope: e,
93
127
  final: !0
@@ -100,35 +134,35 @@ function x(e) {
100
134
  }
101
135
  //#endregion
102
136
  //#region src/js/validation/submit-readiness.ts
103
- var S = "data-formie-submit-validation-disabled", C = "data-formie-preserve-disabled", ie = "data-formie-submit-ready";
104
- function w(e) {
137
+ var C = "data-formie-submit-validation-disabled", w = "data-formie-preserve-disabled", se = "data-formie-submit-ready";
138
+ function T(e) {
105
139
  return e.dataset.formieDisableSubmitUntilValid === "true";
106
140
  }
107
- function ae(e) {
141
+ function ce(e) {
108
142
  return Array.from(e.querySelectorAll("button[data-formie-action=\"submit\"]")).filter((e) => e instanceof HTMLButtonElement);
109
143
  }
110
- function oe(e) {
144
+ function le(e) {
111
145
  return !e.hasAttribute("data-formie-conditionally-hidden") && !e.closest("[data-formie-conditionally-hidden]");
112
146
  }
113
- function T(e, t) {
114
- if (!w(e) || e.getAttribute("data-formie-loading") === "true") return;
115
- let { scope: n, final: r } = x(e), i = t.isValid(n, { includeHiddenPages: r });
116
- e.setAttribute(ie, i ? "true" : "false"), ae(e).forEach((e) => {
117
- if (oe(e)) {
147
+ function E(e, t) {
148
+ if (!T(e) || e.getAttribute("data-formie-loading") === "true") return;
149
+ let { scope: n, final: r } = S(e), i = t.isValid(n, { includeHiddenPages: r });
150
+ e.setAttribute(se, i ? "true" : "false"), ce(e).forEach((e) => {
151
+ if (le(e)) {
118
152
  if (i) {
119
- if (!e.hasAttribute(S)) return;
120
- e.hasAttribute(C) ? (e.disabled = !0, e.removeAttribute(C)) : e.disabled = !1, e.removeAttribute(S);
153
+ if (!e.hasAttribute(C)) return;
154
+ e.hasAttribute(w) ? (e.disabled = !0, e.removeAttribute(w)) : e.disabled = !1, e.removeAttribute(C);
121
155
  return;
122
156
  }
123
- e.hasAttribute(S) || (e.disabled && e.setAttribute(C, "true"), e.setAttribute(S, "true")), e.disabled = !0;
157
+ e.hasAttribute(C) || (e.disabled && e.setAttribute(w, "true"), e.setAttribute(C, "true")), e.disabled = !0;
124
158
  }
125
159
  });
126
160
  }
127
- function se(e, t, n) {
128
- if (!w(e)) return () => {};
161
+ function ue(e, t, n) {
162
+ if (!T(e)) return () => {};
129
163
  let r = !1, i = () => {
130
164
  r || (r = !0, queueMicrotask(() => {
131
- r = !1, T(e, t);
165
+ r = !1, E(e, t);
132
166
  }));
133
167
  };
134
168
  i();
@@ -171,18 +205,18 @@ function se(e, t, n) {
171
205
  }
172
206
  //#endregion
173
207
  //#region src/js/core/submit-result-state.ts
174
- var ce = "STALE_SUBMISSION_STATE", E = /* @__PURE__ */ new WeakMap(), D = /* @__PURE__ */ new WeakMap(), O = r("general", "submit-result");
175
- function k(e, t, n) {
208
+ var de = "STALE_SUBMISSION_STATE", D = /* @__PURE__ */ new WeakMap(), O = /* @__PURE__ */ new WeakMap(), k = r("general", "submit-result");
209
+ function A(e, t, n) {
176
210
  let r = e.querySelector(`input[name="${t}"]`);
177
211
  r || (r = document.createElement("input"), r.type = "hidden", r.name = t, e.appendChild(r)), r.value = n;
178
212
  }
179
- function A(e, t) {
213
+ function j(e, t) {
180
214
  e.setAttribute("data-formie-internal-navigation", t);
181
215
  }
182
- function j(e, t) {
216
+ function M(e, t) {
183
217
  e.querySelector(`input[name="${t}"]`)?.remove();
184
218
  }
185
- function le(e, t) {
219
+ function fe(e, t) {
186
220
  try {
187
221
  let n = new URL(e, window.location.href);
188
222
  return n.searchParams.delete(t), n.toString();
@@ -190,39 +224,39 @@ function le(e, t) {
190
224
  return e;
191
225
  }
192
226
  }
193
- function ue(e) {
227
+ function pe(e) {
194
228
  try {
195
229
  return new URL(e, window.location.href).origin === window.location.origin;
196
230
  } catch {
197
231
  return !1;
198
232
  }
199
233
  }
200
- function M(e) {
234
+ function N(e) {
201
235
  return Array.from(e.querySelectorAll("[data-formie-page]"));
202
236
  }
203
- function de(e) {
237
+ function me(e) {
204
238
  return Array.from(e.querySelectorAll("[data-formie-tab]"));
205
239
  }
206
- function fe(e, t, n) {
240
+ function he(e, t, n) {
207
241
  return t < 0 || n < 1 ? 0 : (e.dataset.formieProgressCalculation === "page-position" ? "page-position" : "completion") == "page-position" ? Math.round((t + 1) / n * 100) : Math.round(t / n * 100);
208
242
  }
209
- function pe(e) {
243
+ function ge(e) {
210
244
  return e <= 0 ? "start" : e >= 100 ? "end" : "middle";
211
245
  }
212
- function me(e) {
246
+ function _e(e) {
213
247
  return (e.dataset.formieSubmitAction || "").trim();
214
248
  }
215
- function N(e, t) {
249
+ function P(e, t) {
216
250
  let n = t.meta?.effectiveSubmitAction;
217
- return typeof n == "string" && n.trim() !== "" ? n.trim() : me(e);
251
+ return typeof n == "string" && n.trim() !== "" ? n.trim() : _e(e);
218
252
  }
219
- function P(e) {
253
+ function F(e) {
220
254
  let t = e.dataset.formieSubmitActionFormHide;
221
255
  if (t === void 0) return !1;
222
256
  let n = t.trim().toLowerCase();
223
257
  return n === "true" || n === "1" || n === "";
224
258
  }
225
- function F(e, t) {
259
+ function I(e, t) {
226
260
  e.toggleAttribute("data-formie-form-hidden", t), [
227
261
  "[data-formie-form-header]",
228
262
  "[data-formie-form-navigation]",
@@ -235,89 +269,91 @@ function F(e, t) {
235
269
  });
236
270
  });
237
271
  }
238
- function I(e) {
239
- let t = E.get(e);
240
- typeof t == "number" && (window.clearTimeout(t), E.delete(e));
241
- }
242
- function he(e, t) {
243
- D.has(e) || D.set(e, e.innerHTML), e.textContent = t;
244
- }
245
272
  function L(e) {
246
273
  let t = D.get(e);
247
- t !== void 0 && (e.innerHTML = t, D.delete(e));
274
+ typeof t == "number" && (window.clearTimeout(t), D.delete(e));
275
+ }
276
+ function ve(e, t) {
277
+ O.has(e) || O.set(e, e.innerHTML), e.textContent = t;
248
278
  }
249
- function R(e, t) {
279
+ function R(e) {
280
+ let t = O.get(e);
281
+ t !== void 0 && (e.innerHTML = t, O.delete(e));
282
+ }
283
+ function ye(e, t) {
250
284
  let n = e.querySelector("[data-formie-progress-bar]"), r = e.querySelector("[data-formie-progress-value]");
251
- n && (n.style.width = `${t}%`, n.setAttribute("aria-valuenow", `${t}`), n.setAttribute("data-formie-progress-state", pe(t)), r && (r.textContent = `${t}%`, r.setAttribute("data-formie-progress-value", `${t}`)));
285
+ n && (n.style.width = `${t}%`, n.setAttribute("aria-valuenow", `${t}`), n.setAttribute("data-formie-progress-state", ge(t)), r && (r.textContent = `${t}%`, r.setAttribute("data-formie-progress-value", `${t}`)));
252
286
  }
253
- function ge(e, t) {
287
+ function be(e, t) {
254
288
  if (!t) return;
255
289
  let n = (e.dataset.formieLoadingIndicator || "").trim();
256
290
  if (n) {
257
291
  if (t.setAttribute("data-formie-loading-indicator", n), n === "spinner") {
258
- i(t, e, "loading", !0), L(t), t.removeAttribute("data-formie-loading-text");
292
+ i(t, e, "loading", !0), R(t), t.removeAttribute("data-formie-loading-text");
259
293
  return;
260
294
  }
261
295
  if (n === "text") {
262
296
  let n = (e.dataset.formieLoadingIndicatorText || "").trim(), r = t.textContent?.trim() || "", i = n || r;
263
- t.setAttribute("data-formie-loading-text", i), he(t, i);
297
+ t.setAttribute("data-formie-loading-text", i), ve(t, i);
264
298
  return;
265
299
  }
266
- L(t), t.removeAttribute("data-formie-loading-text");
300
+ R(t), t.removeAttribute("data-formie-loading-text");
267
301
  }
268
302
  }
269
303
  function z(e) {
270
304
  return Array.from(e.querySelectorAll("[data-formie-action]"));
271
305
  }
272
- function B(e, t) {
306
+ function xe(e, t) {
273
307
  e.getAttribute("data-formie-loading") !== "true" && (e.setAttribute("data-formie-loading", "true"), z(e).forEach((e) => {
274
308
  "disabled" in e && (e.disabled ? e.setAttribute("data-formie-was-disabled", "true") : e.removeAttribute("data-formie-was-disabled"), e.disabled = !0);
275
- }), t && (t.setAttribute("data-formie-loading", "true"), ge(e, t)));
309
+ }), t && (t.setAttribute("data-formie-loading", "true"), be(e, t)));
276
310
  }
277
- function V(e) {
311
+ function B(e) {
278
312
  if (e.removeAttribute("data-formie-loading"), z(e).forEach((t) => {
279
313
  if ("disabled" in t) {
280
314
  let e = t;
281
315
  e.disabled = e.getAttribute("data-formie-was-disabled") === "true";
282
316
  }
283
- L(t), t.removeAttribute("data-formie-was-disabled"), t.removeAttribute("data-formie-loading"), i(t, e, "loading", !1), t.removeAttribute("data-formie-loading-indicator"), t.removeAttribute("data-formie-loading-text");
317
+ R(t), t.removeAttribute("data-formie-was-disabled"), t.removeAttribute("data-formie-loading"), i(t, e, "loading", !1), t.removeAttribute("data-formie-loading-indicator"), t.removeAttribute("data-formie-loading-text");
284
318
  }), e.dataset.formieDisableSubmitUntilValid === "true") {
285
319
  let t = e;
286
- t.formieValidation && T(e, t.formieValidation);
320
+ t.formieValidation && E(e, t.formieValidation);
287
321
  }
288
322
  }
289
- function H(e, t) {
290
- let n = M(e), r = de(e), s = n.findIndex((e) => e.getAttribute("data-formie-page-id") === t);
323
+ function V(e, t) {
324
+ let n = N(e), r = me(e), s = n.findIndex((e) => e.getAttribute("data-formie-page-id") === t);
291
325
  if (n.forEach((n) => {
292
326
  n.getAttribute("data-formie-page-id") === t ? (n.removeAttribute("data-formie-page-hidden"), a(n, e, "pageHidden")) : (n.setAttribute("data-formie-page-hidden", "true"), o(n, e, "pageHidden"));
293
327
  }), r.forEach((n, r) => {
294
- let a = n.getAttribute("data-formie-page-id") === t, o = s > -1 && r < s;
295
- i(n, e, "tabCurrent", a), i(n, e, "tabComplete", o), a ? n.setAttribute("aria-current", "page") : n.removeAttribute("aria-current"), o ? n.setAttribute("data-formie-tab-complete", "true") : n.removeAttribute("data-formie-tab-complete");
296
- }), s > -1 && n.length > 0 && R(e, fe(e, s, n.length)), k(e, "pageId", t), y(e), e.dataset.formieDisableSubmitUntilValid === "true") {
328
+ let c = n.getAttribute("data-formie-page-id") === t, l = s > -1 && r < s;
329
+ i(n, e, "tabCurrent", c), i(n, e, "tabComplete", l);
330
+ let u = n.querySelector("[data-formie-tab-link]");
331
+ u && (i(u, e, "tabLinkCurrent", c), c ? a(u, e, "tabLinkInactive") : o(u, e, "tabLinkInactive")), c ? n.setAttribute("aria-current", "page") : n.removeAttribute("aria-current"), l ? n.setAttribute("data-formie-tab-complete", "true") : n.removeAttribute("data-formie-tab-complete");
332
+ }), s > -1 && n.length > 0 && ye(e, he(e, s, n.length)), A(e, "pageId", t), b(e), e.dataset.formieDisableSubmitUntilValid === "true") {
297
333
  let t = e;
298
- t.formieValidation && T(e, t.formieValidation);
334
+ t.formieValidation && E(e, t.formieValidation);
299
335
  }
300
336
  }
301
- function _e(e, t) {
337
+ function Se(e, t) {
302
338
  let n = t.meta?.submissionUid;
303
- typeof n == "string" && n.trim() !== "" && k(e, "submissionUid", n);
339
+ typeof n == "string" && n.trim() !== "" && A(e, "submissionUid", n);
304
340
  let r = (t.meta?.session)?.continuation?.continuationToken;
305
- typeof r == "string" && r.trim() !== "" ? k(e, "continuationToken", r) : j(e, "continuationToken");
341
+ typeof r == "string" && r.trim() !== "" ? A(e, "continuationToken", r) : M(e, "continuationToken");
306
342
  }
307
- function ve(e) {
343
+ function Ce(e) {
308
344
  let t = e.getAttribute("action");
309
- t && e.setAttribute("action", le(t, "resumeToken"));
345
+ t && e.setAttribute("action", fe(t, "resumeToken"));
310
346
  try {
311
347
  let e = new URL(window.location.href);
312
348
  if (!e.searchParams.has("resumeToken")) return;
313
349
  e.searchParams.delete("resumeToken"), window.history.replaceState({}, document.title, `${e.pathname}${e.search}${e.hash}`);
314
350
  } catch {}
315
351
  }
316
- function ye(e, t) {
352
+ function we(e, t) {
317
353
  let n = t.meta?.resumeUrl;
318
354
  if (typeof n != "string" || n.trim() === "") return;
319
355
  let r = n.trim();
320
- if (ue(r)) {
356
+ if (pe(r)) {
321
357
  e.getAttribute("action") && e.setAttribute("action", r);
322
358
  try {
323
359
  let e = new URL(r, window.location.href);
@@ -325,24 +361,24 @@ function ye(e, t) {
325
361
  } catch {}
326
362
  }
327
363
  }
328
- function U(t, n = {}) {
329
- let r = t.formieValidation, i = M(t)[0]?.getAttribute("data-formie-page-id");
330
- if (I(t), t.reset(), n.preserveHiddenState || F(t, !1), j(t, "submissionId"), j(t, "submissionUid"), j(t, "continuationToken"), j(t, "pageId"), ve(t), r?.resetLiveState(), i) {
331
- H(t, i), t.dispatchEvent(new CustomEvent(e("reset"), { bubbles: !0 }));
364
+ function H(t, n = {}) {
365
+ let r = t.formieValidation, i = N(t)[0]?.getAttribute("data-formie-page-id");
366
+ if (L(t), t.reset(), n.preserveHiddenState || I(t, !1), M(t, "submissionId"), M(t, "submissionUid"), M(t, "continuationToken"), M(t, "pageId"), Ce(t), r?.resetLiveState(), i) {
367
+ V(t, i), t.dispatchEvent(new CustomEvent(e("reset"), { bubbles: !0 }));
332
368
  return;
333
369
  }
334
- y(t), t.dispatchEvent(new CustomEvent(e("reset"), { bubbles: !0 }));
370
+ b(t), t.dispatchEvent(new CustomEvent(e("reset"), { bubbles: !0 }));
335
371
  }
336
- function be(e) {
337
- return e.code === ce || e.meta?.resetState === !0;
372
+ function Te(e) {
373
+ return e.code === de || e.meta?.resetState === !0;
338
374
  }
339
- function xe(e, t) {
375
+ function Ee(e, t) {
340
376
  let r = t.submitData, i = /* @__PURE__ */ new Set(), a = !1;
341
377
  if (Array.isArray(r) && r.length > 0) {
342
378
  let t = r.filter((e) => typeof e == "object" && !!e && "event" in e && typeof e.event == "string");
343
379
  for (let r of t) {
344
380
  let t = n(r.event);
345
- i.add(t), O.log("Dispatching submitData event.", { eventName: t }), t.startsWith("formie:payment:") && (a = !0), e.dispatchEvent(new CustomEvent(t, {
381
+ i.add(t), k.log("Dispatching submitData event.", { eventName: t }), t.startsWith("formie:payment:") && (a = !0), e.dispatchEvent(new CustomEvent(t, {
346
382
  bubbles: !0,
347
383
  detail: { data: r.data }
348
384
  }));
@@ -352,62 +388,62 @@ function xe(e, t) {
352
388
  return u && !i.has(u) && (u.startsWith("formie:payment:") && (a = !0), e.dispatchEvent(new CustomEvent(u, {
353
389
  bubbles: !0,
354
390
  detail: { data: l }
355
- })), O.log("Dispatching fallback payment action event.", { eventName: u })), { hasPaymentFollowUpEvent: a };
391
+ })), k.log("Dispatching fallback payment action event.", { eventName: u })), { hasPaymentFollowUpEvent: a };
356
392
  }
357
- function Se(e, t, n) {
358
- if (O.log("Applying submit result state.", {
393
+ function De(e, t, n) {
394
+ if (k.log("Applying submit result state.", {
359
395
  ok: t.ok,
360
396
  action: n,
361
397
  code: t.code,
362
398
  hasRedirect: !!t.redirect?.url,
363
399
  hasSubmitData: Array.isArray(t.submitData) && t.submitData.length > 0
364
- }), be(t)) {
365
- U(e), O.log("Resetting state due to stale/reset marker.");
400
+ }), Te(t)) {
401
+ H(e), k.log("Resetting state due to stale/reset marker.");
366
402
  return;
367
403
  }
368
- let r = xe(e, t);
404
+ let r = Ee(e, t);
369
405
  if (!t.ok && t.redirect?.url && !r.hasPaymentFollowUpEvent) {
370
- O.log("Applying redirect fallback for failed result.", {
406
+ k.log("Applying redirect fallback for failed result.", {
371
407
  url: t.redirect.url,
372
408
  target: t.redirect.target
373
- }), I(e), t.redirect.target === "new-tab" ? window.open(t.redirect.url, "_blank") : (A(e, "redirect"), window.location.href = t.redirect.url);
409
+ }), L(e), t.redirect.target === "new-tab" ? window.open(t.redirect.url, "_blank") : (j(e, "redirect"), window.location.href = t.redirect.url);
374
410
  return;
375
411
  }
376
- if (_e(e, t), !t.ok) {
377
- O.log("Non-redirect failure; keeping current form state."), I(e);
412
+ if (Se(e, t), !t.ok) {
413
+ k.log("Non-redirect failure; keeping current form state."), L(e);
378
414
  return;
379
415
  }
380
- if (v(e, n), t.nextPage?.id) {
381
- I(e), e.formieValidation?.resetLiveState(), H(e, t.nextPage.id), m(e, "formie:page:navigate:after", { pageId: t.nextPage.id }), O.log("Advanced to next page.", { nextPageId: t.nextPage.id });
416
+ if (Array.isArray(t.clientEvents) && t.clientEvents.length > 0 ? v(e, t.clientEvents) : y(e, n), t.nextPage?.id) {
417
+ L(e), e.formieValidation?.resetLiveState(), V(e, t.nextPage.id), m(e, "formie:page:navigate:after", { pageId: t.nextPage.id }), k.log("Advanced to next page.", { nextPageId: t.nextPage.id });
382
418
  return;
383
419
  }
384
420
  if (n === "save") {
385
- I(e), ye(e, t), O.log("Applied save/resume token state.");
421
+ L(e), we(e, t), k.log("Applied save/resume token state.");
386
422
  return;
387
423
  }
388
424
  if (n === "submit" && !t.redirect?.url) {
389
- let n = N(e, t), r = n === "message" && P(e);
425
+ let n = P(e, t), r = n === "message" && F(e);
390
426
  if (n === "reload") {
391
- I(e), A(e, "reload"), window.location.reload();
427
+ L(e), j(e, "reload"), window.location.reload();
392
428
  return;
393
429
  }
394
430
  if (n === "reset") {
395
- U(e);
431
+ H(e);
396
432
  return;
397
433
  }
398
- I(e), U(e, { preserveHiddenState: r });
434
+ L(e), H(e, { preserveHiddenState: r });
399
435
  return;
400
436
  }
401
437
  if (n === "submit" && t.redirect?.url && t.redirect.target === "new-tab") {
402
- let n = N(e, t) === "message" && P(e);
403
- I(e), U(e, { preserveHiddenState: n });
438
+ let n = P(e, t) === "message" && F(e);
439
+ L(e), H(e, { preserveHiddenState: n });
404
440
  return;
405
441
  }
406
- I(e);
442
+ L(e);
407
443
  }
408
444
  //#endregion
409
445
  //#region src/js/modules/payments/constants.ts
410
- var Ce = 2500, we = {
446
+ var Oe = 2500, ke = {
411
447
  bpoint: ["bpointToken"],
412
448
  stripe: ["stripePaymentIntentId"],
413
449
  paypal: ["paypalOrderId", "paypalAuthId"],
@@ -422,37 +458,42 @@ var Ce = 2500, we = {
422
458
  };
423
459
  //#endregion
424
460
  //#region src/js/utils/fields.ts
425
- function Te(e) {
461
+ function Ae(e) {
426
462
  return e.replace("{field:", "").replace("{", "").replace("}", "").replace("]", "").split("[").join("][");
427
463
  }
428
- function Ee(e) {
429
- return `fields[${Te(e)}]`;
464
+ function je(e) {
465
+ return `fields[${Ae(e)}]`;
430
466
  }
431
- function De(e, t) {
432
- let n = Ee(t), r = Array.from(e.querySelectorAll(`[name="${n}"]`)), i = Array.from(e.querySelectorAll(`[name="${n}[]"]`));
467
+ function Me(e, t) {
468
+ let n = je(t), r = Array.from(e.querySelectorAll(`[name="${n}"]`)), i = Array.from(e.querySelectorAll(`[name="${n}[]"]`));
433
469
  return (i.length ? i : r).filter((e) => e instanceof HTMLElement);
434
470
  }
435
- function W(e, t) {
436
- let n = De(e, t);
471
+ function U(e, t) {
472
+ let n = Me(e, t);
437
473
  for (let e of n) {
438
474
  let t = e.closest("[data-formie-field-handle]")?.querySelector("[data-formie-field-label]")?.childNodes[0]?.textContent?.trim();
439
475
  if (t) return t;
440
476
  }
441
477
  return "";
442
478
  }
443
- function G(e) {
479
+ function W(e) {
444
480
  let t = e.replace(/[^\d.,-]/g, ""), n = t.includes(","), r = t.includes(".");
445
- return t = n && r ? t.replace(/\./g, "").replace(/,/, ".") : n && !r ? t.replace(/,/, ".") : t.replace(/,/g, ""), parseFloat(t);
481
+ if (n && r) t = t.lastIndexOf(",") > t.lastIndexOf(".") ? t.replace(/\./g, "").replace(",", ".") : t.replace(/,/g, "");
482
+ else if (n && !r) {
483
+ let e = t.split(",");
484
+ t = e.length === 2 && e[1].length === 3 && /^\d+$/.test(e[0]) && /^\d+$/.test(e[1]) ? e[0] + e[1] : t.replace(",", ".");
485
+ } else t = t.replace(/,/g, "");
486
+ return parseFloat(t);
446
487
  }
447
488
  //#endregion
448
489
  //#region src/js/modules/payments/utils.ts
449
- function K(e, t) {
490
+ function G(e, t) {
450
491
  let n = t.replace(/"/g, "\\\"");
451
492
  return e.querySelector(`input[name$="[${n}]"]`) || e.querySelector(`input[name$="${n}"]`);
452
493
  }
453
- function q(e, t) {
494
+ function K(e, t) {
454
495
  let n = t.find((t) => {
455
- let n = K(e, t);
496
+ let n = G(e, t);
456
497
  return !n || String(n.value || "").trim() === "";
457
498
  });
458
499
  return {
@@ -460,35 +501,35 @@ function q(e, t) {
460
501
  missingSuffix: n
461
502
  };
462
503
  }
463
- async function J(e, t, n) {
464
- let r = q(e, t);
504
+ async function q(e, t, n) {
505
+ let r = K(e, t);
465
506
  if (r.ok) return r;
466
507
  let i = Date.now() + Math.max(n, 0);
467
508
  for (; Date.now() < i;) {
468
509
  await c(120);
469
- let n = q(e, t);
510
+ let n = K(e, t);
470
511
  if (n.ok) return n;
471
512
  }
472
- return q(e, t);
513
+ return K(e, t);
473
514
  }
474
515
  //#endregion
475
516
  //#region src/js/modules/payments/host.ts
476
- var Oe = new Set([
517
+ var Ne = new Set([
477
518
  "handle",
478
519
  "requiredInputSuffixes",
479
520
  "waitForValueMs",
480
521
  "errorMessage"
481
- ]), Y = "[data-payment-success]", X = "[data-payment-error]";
482
- function ke(e, t) {
522
+ ]), J = "[data-payment-success]", Y = "[data-payment-error]";
523
+ function X(e, t) {
483
524
  return (typeof t.handle == "string" && t.handle.trim() !== "" ? t.handle.trim() : "") || e;
484
525
  }
485
- function Ae(e, t, n) {
486
- let r = t || {}, i = Object.entries(r).reduce((e, [t, n]) => (Oe.has(t) || (e[t] = n), e), {}), a = Array.isArray(r.requiredInputSuffixes) ? r.requiredInputSuffixes.map(String).filter(Boolean) : n.defaultRequiredInputSuffixes || [], o = Number(r.waitForValueMs ?? n.defaultWaitForValueMs ?? 2500), s = typeof r.errorMessage == "string" && r.errorMessage.trim() !== "" ? r.errorMessage.trim() : "Payment authorization is incomplete.";
526
+ function Pe(e, t, n) {
527
+ let r = t || {}, i = Object.entries(r).reduce((e, [t, n]) => (Ne.has(t) || (e[t] = n), e), {}), a = Array.isArray(r.requiredInputSuffixes) ? r.requiredInputSuffixes.map(String).filter(Boolean) : n.defaultRequiredInputSuffixes || [], o = Number(r.waitForValueMs ?? n.defaultWaitForValueMs ?? 2500), s = typeof r.errorMessage == "string" && r.errorMessage.trim() !== "" ? r.errorMessage.trim() : "Payment authorization is incomplete.";
487
528
  return {
488
- handle: ke(e, r),
529
+ handle: X(e, r),
489
530
  transport: {
490
531
  requiredInputSuffixes: a,
491
- waitForValueMs: Number.isFinite(o) ? o : Ce,
532
+ waitForValueMs: Number.isFinite(o) ? o : Oe,
492
533
  errorMessage: s
493
534
  },
494
535
  provider: i
@@ -499,7 +540,7 @@ function Z(e, t, n) {
499
540
  e.removeEventListener(t, n);
500
541
  };
501
542
  }
502
- function je(e, t) {
543
+ function Fe(e, t) {
503
544
  let n = e.target, r = e.form, i = e.root, a = r || i, c = t.transport.requiredInputSuffixes, m = () => p(r || i), h = (e) => {
504
545
  let t = f(e, m()).value;
505
546
  return Array.isArray(t) ? t[0] || "" : String(t || "");
@@ -511,47 +552,47 @@ function je(e, t) {
511
552
  updateInputs: (e, t) => {
512
553
  let r = Array.isArray(e) ? e : [e];
513
554
  for (let e of r) {
514
- let r = K(a, e) ?? n.querySelector(`input[name*="${e}"]`);
555
+ let r = G(a, e) ?? n.querySelector(`input[name*="${e}"]`);
515
556
  r && (r.value = t);
516
557
  }
517
558
  },
518
559
  addError: (e) => {
519
- let t = n.querySelector("[data-formie-field-type] > div, [data-field-type] > div") || n, a = t.querySelector(X);
560
+ let t = n.querySelector("[data-formie-field-type] > div, [data-field-type] > div") || n, a = t.querySelector(Y);
520
561
  a && a.remove();
521
562
  let s = document.createElement("div");
522
563
  s.setAttribute("data-payment-error", ""), s.textContent = e, o(s, r || i, "fieldError"), t.appendChild(s);
523
564
  },
524
565
  removeError: () => {
525
- n.querySelector(X)?.remove();
566
+ n.querySelector(Y)?.remove();
526
567
  },
527
568
  addSuccess: (e) => {
528
- let t = n.querySelector("[data-formie-field-type] > div, [data-field-type] > div") || n, a = t.querySelector(Y);
569
+ let t = n.querySelector("[data-formie-field-type] > div, [data-field-type] > div") || n, a = t.querySelector(J);
529
570
  a && a.remove();
530
571
  let s = document.createElement("div");
531
572
  s.setAttribute("data-payment-success", ""), s.textContent = e, o(s, r || i, "successMessage"), t.appendChild(s);
532
573
  },
533
574
  removeSuccess: () => {
534
- n.querySelector(Y)?.remove();
575
+ n.querySelector(J)?.remove();
535
576
  },
536
- hasToken: () => q(a, c).ok,
537
- waitForToken: (e = t.transport.waitForValueMs) => J(a, c, e).then((e) => e.ok),
577
+ hasToken: () => K(a, c).ok,
578
+ waitForToken: (e = t.transport.waitForValueMs) => q(a, c, e).then((e) => e.ok),
538
579
  getFieldValue: (e, t = "string") => {
539
580
  let n = h(e);
540
- return t === "float" || t === "int" || t === "number" ? G(n) : n;
581
+ return t === "float" || t === "int" || t === "number" ? W(n) : n;
541
582
  },
542
583
  resolveAmount: (e) => {
543
- let t = r || i, n = String(e.type || "").toLowerCase() === "dynamic" && typeof e.variable == "string" && e.variable.trim() !== "", a = e.value ?? (n ? e.variable : e.fixed), o = String(a ?? "").trim(), c = typeof a == "number" ? a : G(o);
584
+ let t = r || i, n = String(e.type || "").toLowerCase() === "dynamic" && typeof e.variable == "string" && e.variable.trim() !== "", a = e.value ?? (n ? e.variable : e.fixed), o = String(a ?? "").trim(), c = typeof a == "number" ? a : W(o);
544
585
  if (Number.isFinite(c) && c > 0) return {
545
586
  ok: !0,
546
587
  value: c
547
588
  };
548
589
  if (o !== "") {
549
- let e = h(o), n = G(e);
590
+ let e = h(o), n = W(e);
550
591
  if (Number.isFinite(n) && n > 0) return {
551
592
  ok: !0,
552
593
  value: n
553
594
  };
554
- let r = W(t, o);
595
+ let r = U(t, o);
555
596
  if (!e) return {
556
597
  ok: !1,
557
598
  error: r ? s("Provide a value for \"{label}\" to proceed.", { label: r }) : s("Provide a payment amount to proceed.")
@@ -574,7 +615,7 @@ function je(e, t) {
574
615
  ok: !0,
575
616
  value: n
576
617
  };
577
- let r = W(t, o);
618
+ let r = U(t, o);
578
619
  if (!e) return {
579
620
  ok: !1,
580
621
  error: r ? s("Provide a value for \"{label}\" to proceed.", { label: r }) : s("Provide a payment currency to proceed.")
@@ -614,7 +655,7 @@ function je(e, t) {
614
655
  r && r.setAttribute("data-formie-internal-resubmit", "true"), r && typeof r.requestSubmit == "function" ? r.requestSubmit() : r && r.submit();
615
656
  },
616
657
  releaseSubmitLoading: () => {
617
- r && (r.removeAttribute("data-formie-internal-resubmit"), V(r));
658
+ r && (r.removeAttribute("data-formie-internal-resubmit"), B(r));
618
659
  },
619
660
  getBillingData: (e) => {
620
661
  let t = {};
@@ -646,8 +687,8 @@ function $(e) {
646
687
  let t = e;
647
688
  return !t.closest("[data-formie-page-hidden]") && !t.closest("[hidden]");
648
689
  }
649
- function Me(e) {
650
- let t = e.defaultRequiredInputSuffixes ?? we[e.id] ?? [];
690
+ function Ie(e) {
691
+ let t = e.defaultRequiredInputSuffixes ?? ke[e.id] ?? [];
651
692
  return {
652
693
  id: e.id,
653
694
  kind: "payment",
@@ -662,7 +703,7 @@ function Me(e) {
662
703
  await a.destroy();
663
704
  } catch {}
664
705
  }
665
- let o = Ae(e.id, n.options || {}, { defaultRequiredInputSuffixes: t }), s = je(n, o), c = {
706
+ let o = Pe(e.id, n.options || {}, { defaultRequiredInputSuffixes: t }), s = Fe(n, o), c = {
666
707
  ...n,
667
708
  options: o,
668
709
  services: s
@@ -761,7 +802,7 @@ function Me(e) {
761
802
  return;
762
803
  }
763
804
  if (o.transport.requiredInputSuffixes.length === 0) return;
764
- let i = await J(n.form || n.root, o.transport.requiredInputSuffixes, o.transport.waitForValueMs);
805
+ let i = await q(n.form || n.root, o.transport.requiredInputSuffixes, o.transport.waitForValueMs);
765
806
  i.ok || (Q.warn("Required payment input(s) missing.", {
766
807
  moduleId: e.id,
767
808
  handle: o.handle,
@@ -783,6 +824,6 @@ function Me(e) {
783
824
  }
784
825
  //#endregion
785
826
  //#region src/js/modules/payments/api.ts
786
- var Ne = Me;
827
+ var Le = Ie;
787
828
  //#endregion
788
- export { F as a, b as c, v as d, m as f, V as i, x as l, H as n, B as o, Se as r, se as s, Ne as t, y as u };
829
+ export { I as a, x as c, y as d, ae as f, B as i, S as l, V as n, xe as o, m as p, De as r, ue as s, Le as t, b as u };