@wix/form-public 0.153.0 → 0.155.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/dist/index.js CHANGED
@@ -18570,6 +18570,70 @@ var require_utc = __commonJS({
18570
18570
  }
18571
18571
  });
18572
18572
 
18573
+ // ../../node_modules/dayjs/plugin/timezone.js
18574
+ var require_timezone = __commonJS({
18575
+ "../../node_modules/dayjs/plugin/timezone.js"(exports, module) {
18576
+ !(function(t, e2) {
18577
+ "object" == typeof exports && "undefined" != typeof module ? module.exports = e2() : "function" == typeof define && define.amd ? define(e2) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs_plugin_timezone = e2();
18578
+ })(exports, (function() {
18579
+ var t = { year: 0, month: 1, day: 2, hour: 3, minute: 4, second: 5 }, e2 = {};
18580
+ return function(n, i, o) {
18581
+ var r2, a = function(t2, n2, i2) {
18582
+ void 0 === i2 && (i2 = {});
18583
+ var o2 = new Date(t2), r3 = (function(t3, n3) {
18584
+ void 0 === n3 && (n3 = {});
18585
+ var i3 = n3.timeZoneName || "short", o3 = t3 + "|" + i3, r4 = e2[o3];
18586
+ return r4 || (r4 = new Intl.DateTimeFormat("en-US", { hour12: false, timeZone: t3, year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", timeZoneName: i3 }), e2[o3] = r4), r4;
18587
+ })(n2, i2);
18588
+ return r3.formatToParts(o2);
18589
+ }, u = function(e3, n2) {
18590
+ for (var i2 = a(e3, n2), r3 = [], u2 = 0; u2 < i2.length; u2 += 1) {
18591
+ var f2 = i2[u2], s2 = f2.type, m = f2.value, c = t[s2];
18592
+ c >= 0 && (r3[c] = parseInt(m, 10));
18593
+ }
18594
+ var d = r3[3], l = 24 === d ? 0 : d, h = r3[0] + "-" + r3[1] + "-" + r3[2] + " " + l + ":" + r3[4] + ":" + r3[5] + ":000", v = +e3;
18595
+ return (o.utc(h).valueOf() - (v -= v % 1e3)) / 6e4;
18596
+ }, f = i.prototype;
18597
+ f.tz = function(t2, e3) {
18598
+ void 0 === t2 && (t2 = r2);
18599
+ var n2, i2 = this.utcOffset(), a2 = this.toDate(), u2 = a2.toLocaleString("en-US", { timeZone: t2 }), f2 = Math.round((a2 - new Date(u2)) / 1e3 / 60), s2 = 15 * -Math.round(a2.getTimezoneOffset() / 15) - f2;
18600
+ if (!Number(s2)) n2 = this.utcOffset(0, e3);
18601
+ else if (n2 = o(u2, { locale: this.$L }).$set("millisecond", this.$ms).utcOffset(s2, true), e3) {
18602
+ var m = n2.utcOffset();
18603
+ n2 = n2.add(i2 - m, "minute");
18604
+ }
18605
+ return n2.$x.$timezone = t2, n2;
18606
+ }, f.offsetName = function(t2) {
18607
+ var e3 = this.$x.$timezone || o.tz.guess(), n2 = a(this.valueOf(), e3, { timeZoneName: t2 }).find((function(t3) {
18608
+ return "timezonename" === t3.type.toLowerCase();
18609
+ }));
18610
+ return n2 && n2.value;
18611
+ };
18612
+ var s = f.startOf;
18613
+ f.startOf = function(t2, e3) {
18614
+ if (!this.$x || !this.$x.$timezone) return s.call(this, t2, e3);
18615
+ var n2 = o(this.format("YYYY-MM-DD HH:mm:ss:SSS"), { locale: this.$L });
18616
+ return s.call(n2, t2, e3).tz(this.$x.$timezone, true);
18617
+ }, o.tz = function(t2, e3, n2) {
18618
+ var i2 = n2 && e3, a2 = n2 || e3 || r2, f2 = u(+o(), a2);
18619
+ if ("string" != typeof t2) return o(t2).tz(a2);
18620
+ var s2 = (function(t3, e4, n3) {
18621
+ var i3 = t3 - 60 * e4 * 1e3, o2 = u(i3, n3);
18622
+ if (e4 === o2) return [i3, e4];
18623
+ var r3 = u(i3 -= 60 * (o2 - e4) * 1e3, n3);
18624
+ return o2 === r3 ? [i3, o2] : [t3 - 60 * Math.min(o2, r3) * 1e3, Math.max(o2, r3)];
18625
+ })(o.utc(t2, i2).valueOf(), f2, a2), m = s2[0], c = s2[1], d = o(m).utcOffset(c);
18626
+ return d.$x.$timezone = a2, d;
18627
+ }, o.tz.guess = function() {
18628
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
18629
+ }, o.tz.setDefault = function(t2) {
18630
+ r2 = t2;
18631
+ };
18632
+ };
18633
+ }));
18634
+ }
18635
+ });
18636
+
18573
18637
  // ../form-validator/dist/esm/lib/calling-country-codes.js
18574
18638
  var CALLING_COUNTRY_CODES;
18575
18639
  var init_calling_country_codes = __esm({
@@ -18833,8 +18897,7 @@ function stringFormatOptionsMapper(format, dateFormatOptions, dateFactory = () =
18833
18897
  return stringDateFormatOptions;
18834
18898
  }
18835
18899
  }
18836
- function parseIfNeeded(format, dateProvider, value) {
18837
- const currentDate = newDate(dateProvider().toISOString());
18900
+ function parseIfNeeded(format, dateProvider, value, timezone) {
18838
18901
  if (!value) {
18839
18902
  return value;
18840
18903
  }
@@ -18842,7 +18905,12 @@ function parseIfNeeded(format, dateProvider, value) {
18842
18905
  return value;
18843
18906
  }
18844
18907
  if (isRelativeDate(value)) {
18845
- return mapToStaticDate(value, currentDate)?.utc().format(asIsoFormat(format));
18908
+ const currentDate = timezone ? (0, import_dayjs.default)(dateProvider().toISOString()).tz(timezone) : newDate(dateProvider().toISOString());
18909
+ const resolved = mapToStaticDate(value, currentDate);
18910
+ if (!resolved) {
18911
+ return void 0;
18912
+ }
18913
+ return format === Format.DATE_TIME || format === Format.DATE_OPTIONAL_TIME || !timezone ? resolved.utc().format(asIsoFormat(format)) : resolved.format(asIsoFormat(format));
18846
18914
  }
18847
18915
  return void 0;
18848
18916
  }
@@ -18897,19 +18965,24 @@ function asIsoFormat(format) {
18897
18965
  return "YYYY-MM-DD";
18898
18966
  case Format.TIME:
18899
18967
  return "HH:mm:ss";
18968
+ case Format.DATE_TIME:
18969
+ case Format.DATE_OPTIONAL_TIME:
18970
+ return "YYYY-MM-DDTHH:mm:ss[Z]";
18900
18971
  default:
18901
18972
  return void 0;
18902
18973
  }
18903
18974
  }
18904
- var import_dayjs, import_utc, newDate, RELATIVE_FORMAT_REGEX, ISO_DATE_REGEX, ISO_TIME_REGEX, ISO_DATE_TIME_REGEX;
18975
+ var import_dayjs, import_utc, import_timezone, newDate, RELATIVE_FORMAT_REGEX, ISO_DATE_REGEX, ISO_TIME_REGEX, ISO_DATE_TIME_REGEX;
18905
18976
  var init_string_format_options_mapper = __esm({
18906
18977
  "../form-validator/dist/esm/lib/submission-validation/mappers/string-format-options-mapper.js"() {
18907
18978
  init_types_impl();
18908
18979
  init_lang();
18909
18980
  import_dayjs = __toESM(require_dayjs_min());
18910
18981
  import_utc = __toESM(require_utc());
18982
+ import_timezone = __toESM(require_timezone());
18911
18983
  init_calling_country_codes();
18912
18984
  import_dayjs.default.extend(import_utc.default);
18985
+ import_dayjs.default.extend(import_timezone.default);
18913
18986
  newDate = import_dayjs.default.utc;
18914
18987
  RELATIVE_FORMAT_REGEX = /^\$now(?:([+-])(\d{1,2})([yMdmh]))?$/;
18915
18988
  ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/;
@@ -20173,16 +20246,17 @@ var FormSchemaValidator;
20173
20246
  var init_form_schema_validator = __esm({
20174
20247
  "../form-validator/dist/esm/lib/schema-validation/form-schema-validator.js"() {
20175
20248
  init_types_impl();
20249
+ init_string_format_options_mapper();
20176
20250
  FormSchemaValidator = class {
20177
20251
  constructor(submissionValidator) {
20178
20252
  this.submissionValidator = submissionValidator;
20179
20253
  }
20180
- validate(form) {
20254
+ validate(form, timezone) {
20181
20255
  const submission = form.formFields?.reduce((acc, { inputOptions }) => {
20182
20256
  const defaultValue = this.getDefaultValue(inputOptions);
20183
20257
  const target = inputOptions?.target;
20184
20258
  if (defaultValue && target) {
20185
- acc[target] = this.buildSubmissionValue(defaultValue, inputOptions);
20259
+ acc[target] = this.buildSubmissionValue(defaultValue, inputOptions, timezone);
20186
20260
  }
20187
20261
  return acc;
20188
20262
  }, {}) || {};
@@ -20237,7 +20311,7 @@ var init_form_schema_validator = __esm({
20237
20311
  return void 0;
20238
20312
  }
20239
20313
  }
20240
- buildSubmissionValue(defaultValue, inputField) {
20314
+ buildSubmissionValue(defaultValue, inputField, timezone) {
20241
20315
  switch (inputField.inputType) {
20242
20316
  case InputFieldInputType.PAYMENT:
20243
20317
  return inputField.paymentOptions?.validation?.products?.map((product) => ({
@@ -20245,6 +20319,13 @@ var init_form_schema_validator = __esm({
20245
20319
  price: defaultValue,
20246
20320
  quantity: 1
20247
20321
  }));
20322
+ case InputFieldInputType.STRING: {
20323
+ const format = inputField.stringOptions?.validation?.format;
20324
+ if (!format || typeof defaultValue !== "string") {
20325
+ return defaultValue;
20326
+ }
20327
+ return parseIfNeeded(format, () => /* @__PURE__ */ new Date(), defaultValue, timezone) ?? defaultValue;
20328
+ }
20248
20329
  default:
20249
20330
  return defaultValue;
20250
20331
  }
@@ -25171,6 +25252,9 @@ var FIELD_TYPES = {
25171
25252
  // ../form-fields/dist/esm/constants/empty-values.js
25172
25253
  var EMPTY_VALUE = null;
25173
25254
 
25255
+ // ../form-fields/dist/esm/constants/default-values.js
25256
+ var NOW_VALUE = "$now";
25257
+
25174
25258
  // ../form-fields/dist/esm/constants/experiments.js
25175
25259
  var EXPERIMENTS = {
25176
25260
  USE_FIELDS_V2: "specs.forms.UseFieldsV2"};
@@ -29690,6 +29774,128 @@ function toProductValue2(product, value) {
29690
29774
  };
29691
29775
  }
29692
29776
 
29777
+ // ../form-fields/dist/esm/field-rule/inputs/utils.js
29778
+ var dateToDateString = (date) => {
29779
+ const year = date.getFullYear().toString();
29780
+ const month = (date.getMonth() + 1).toString().padStart(2, "0");
29781
+ const day = date.getDate().toString().padStart(2, "0");
29782
+ return [year, month, day].join("-");
29783
+ };
29784
+ var dateToTimeString = (date) => {
29785
+ const hours = date.getHours().toString().padStart(2, "0");
29786
+ const minutes = date.getMinutes().toString().padStart(2, "0");
29787
+ return [hours, minutes, "00"].join(":");
29788
+ };
29789
+
29790
+ // ../form-fields/dist/esm/services/normalize-default-value.js
29791
+ var DEFAULT_VALUE = {
29792
+ [FIELD_TYPES.TEXT_INPUT]: resolveDefaultValue,
29793
+ [FIELD_TYPES.CHECKBOX_GROUP]: resolveDefaultValue,
29794
+ [FIELD_TYPES.RADIO_GROUP]: resolveDefaultValue,
29795
+ [FIELD_TYPES.DROPDOWN]: resolveDefaultValue,
29796
+ [FIELD_TYPES.URL_INPUT]: resolveDefaultValue,
29797
+ [FIELD_TYPES.NUMBER_INPUT]: resolveDefaultValue,
29798
+ [FIELD_TYPES.QUIZ_NUMBER]: resolveDefaultValue,
29799
+ [FIELD_TYPES.QUIZ_SHORT_TEXT]: resolveDefaultValue,
29800
+ [FIELD_TYPES.QUIZ_LONG_TEXT]: resolveDefaultValue,
29801
+ [FIELD_TYPES.QUIZ_MULTI_CHOICE]: resolveDefaultValue,
29802
+ [FIELD_TYPES.QUIZ_IMAGE_CHOICE]: resolveDefaultValue,
29803
+ [FIELD_TYPES.IMAGE_CHOICE]: resolveDefaultValue,
29804
+ [FIELD_TYPES.QUIZ_SINGLE_CHOICE]: resolveDefaultValue,
29805
+ [FIELD_TYPES.QUIZ_FILE_UPLOAD]: resolveDefaultValue,
29806
+ [FIELD_TYPES.FILE_UPLOAD]: resolveDefaultValue,
29807
+ [FIELD_TYPES.SIGNATURE]: resolveDefaultValue,
29808
+ [FIELD_TYPES.CONTACTS_EMAIL]: resolveDefaultValue,
29809
+ [FIELD_TYPES.CONTACTS_PHONE]: resolveDefaultValue,
29810
+ [FIELD_TYPES.CHECKBOX]: resolveDefaultValue,
29811
+ [FIELD_TYPES.DATE_TIME_INPUT]: resolveDefaultValue,
29812
+ [FIELD_TYPES.CONTACTS_COMPANY]: resolveDefaultValue,
29813
+ [FIELD_TYPES.CONTACTS_POSITION]: resolveDefaultValue,
29814
+ [FIELD_TYPES.CONTACTS_TAX_ID]: resolveDefaultValue,
29815
+ [FIELD_TYPES.CONTACTS_FIRST_NAME]: resolveDefaultValue,
29816
+ [FIELD_TYPES.CONTACTS_LAST_NAME]: resolveDefaultValue,
29817
+ [FIELD_TYPES.CONTACTS_ADDRESS]: resolveDefaultValue,
29818
+ [FIELD_TYPES.CONTACTS_BIRTHDATE]: resolveDefaultValue,
29819
+ [FIELD_TYPES.TEXT_AREA]: resolveDefaultValue,
29820
+ [FIELD_TYPES.CONTACTS_SUBSCRIBE]: resolveDefaultValue,
29821
+ [FIELD_TYPES.DATE_INPUT]: resolveDefaultValue,
29822
+ [FIELD_TYPES.TIME_INPUT]: resolveDefaultTimeValue,
29823
+ [FIELD_TYPES.DATE_PICKER]: resolveDefaultDateValue,
29824
+ [FIELD_TYPES.NESTED_FORM]: resolveDefaultValue,
29825
+ [FIELD_TYPES.MULTILINE_ADDRESS]: resolveDefaultValue,
29826
+ [FIELD_TYPES.MLA_COUNTRY]: resolveDefaultValue,
29827
+ [FIELD_TYPES.MLA_CITY]: resolveDefaultValue,
29828
+ [FIELD_TYPES.MLA_ADDRESS_LINE]: resolveDefaultValue,
29829
+ [FIELD_TYPES.MLA_ADDRESS_LINE_2]: resolveDefaultValue,
29830
+ [FIELD_TYPES.MLA_POSTAL_CODE]: resolveDefaultValue,
29831
+ [FIELD_TYPES.MLA_SUBDIVISION]: resolveDefaultValue,
29832
+ [FIELD_TYPES.MLA_STREET_NAME]: resolveDefaultValue,
29833
+ [FIELD_TYPES.MLA_STREET_NUMBER]: resolveDefaultValue,
29834
+ [FIELD_TYPES.MLA_APARTMENT]: resolveDefaultValue,
29835
+ [FIELD_TYPES.FULL_NAME]: resolveDefaultValue,
29836
+ [FIELD_TYPES.FULL_NAME_FIRST_NAME]: resolveDefaultValue,
29837
+ [FIELD_TYPES.FULL_NAME_LAST_NAME]: resolveDefaultValue,
29838
+ [FIELD_TYPES.VAT_ID]: resolveDefaultValue,
29839
+ [FIELD_TYPES.DEXT_TEXT_INPUT]: resolveDefaultValue,
29840
+ [FIELD_TYPES.DEXT_NUMBER_INPUT]: resolveDefaultValue,
29841
+ [FIELD_TYPES.DEXT_CHECKBOX]: resolveDefaultValue,
29842
+ [FIELD_TYPES.DEXT_CHECKBOX_GROUP]: resolveDefaultValue,
29843
+ [FIELD_TYPES.DEXT_RATING_INPUT]: resolveDefaultValue,
29844
+ [FIELD_TYPES.DEXT_TAGS]: resolveDefaultValue,
29845
+ [FIELD_TYPES.ECOM_ADDITIONAL_INFO]: resolveDefaultValue,
29846
+ [FIELD_TYPES.ECOM_ADDRESS]: resolveDefaultValue,
29847
+ [FIELD_TYPES.ECOM_PHONE]: resolveDefaultValue,
29848
+ [FIELD_TYPES.ECOM_FULL_NAME]: resolveDefaultValue,
29849
+ [FIELD_TYPES.ECOM_COMPANY_NAME]: resolveDefaultValue,
29850
+ [FIELD_TYPES.ECOM_SUBSCRIPTION]: resolveDefaultValue,
29851
+ [FIELD_TYPES.ECOM_EMAIL]: resolveDefaultValue,
29852
+ [FIELD_TYPES.DEXT_TEXT_AREA]: resolveDefaultValue,
29853
+ [FIELD_TYPES.DEXT_DROPDOWN]: resolveDefaultValue,
29854
+ [FIELD_TYPES.DEXT_RADIO_GROUP]: resolveDefaultValue,
29855
+ [FIELD_TYPES.DEXT_URL_INPUT]: resolveDefaultValue,
29856
+ [FIELD_TYPES.DEXT_EMAIL]: resolveDefaultValue,
29857
+ [FIELD_TYPES.DEXT_PHONE]: resolveDefaultValue,
29858
+ [FIELD_TYPES.DEXT_DATE_PICKER]: resolveDefaultValue,
29859
+ [FIELD_TYPES.DEXT_DATE_TIME_INPUT]: resolveDefaultValue,
29860
+ [FIELD_TYPES.PRODUCT_LIST]: resolveDefaultValue,
29861
+ [FIELD_TYPES.DONATION]: resolveDefaultValue,
29862
+ [FIELD_TYPES.RATING_INPUT]: resolveDefaultValue,
29863
+ [FIELD_TYPES.TAGS]: resolveDefaultValue,
29864
+ [FIELD_TYPES.PAYMENT_INPUT]: resolveDefaultValue,
29865
+ [FIELD_TYPES.FIXED_PAYMENT]: resolveDefaultValue,
29866
+ [FIELD_TYPES.BOOKINGS_FIRST_NAME]: resolveDefaultValue,
29867
+ [FIELD_TYPES.BOOKINGS_LAST_NAME]: resolveDefaultValue,
29868
+ [FIELD_TYPES.BOOKINGS_EMAIL]: resolveDefaultValue,
29869
+ [FIELD_TYPES.BOOKINGS_PHONE]: resolveDefaultValue,
29870
+ [FIELD_TYPES.BOOKINGS_ADDRESS]: resolveDefaultValue,
29871
+ [FIELD_TYPES.APPOINTMENT]: resolveDefaultValue,
29872
+ [FIELD_TYPES.PASSWORD]: resolveDefaultValue,
29873
+ [FIELD_TYPES.SERVICES_DROPDOWN]: resolveDefaultValue,
29874
+ [FIELD_TYPES.SERVICES_MULTI_CHOICE]: resolveDefaultValue,
29875
+ [FIELD_TYPES.EVENTS_RSVP]: resolveDefaultValue,
29876
+ [FIELD_TYPES.EVENTS_REPEATER]: resolveDefaultValue
29877
+ };
29878
+ function resolveDefaultValue(field) {
29879
+ var _field$view;
29880
+ return (_field$view = field.view) == null ? void 0 : _field$view.defaultValue;
29881
+ }
29882
+ function resolveDefaultDateValue(field) {
29883
+ var _field$view2;
29884
+ const defaultValue = (_field$view2 = field.view) == null ? void 0 : _field$view2.defaultValue;
29885
+ if (defaultValue === NOW_VALUE) {
29886
+ return dateToDateString(/* @__PURE__ */ new Date());
29887
+ }
29888
+ return defaultValue;
29889
+ }
29890
+ function resolveDefaultTimeValue(field) {
29891
+ var _field$view3;
29892
+ const defaultValue = (_field$view3 = field.view) == null ? void 0 : _field$view3.defaultValue;
29893
+ if (defaultValue === NOW_VALUE) {
29894
+ return dateToTimeString(/* @__PURE__ */ new Date());
29895
+ }
29896
+ return defaultValue;
29897
+ }
29898
+
29693
29899
  // ../form-viewer/dist/esm/services/validation.js
29694
29900
  var getFormValidator = async (form, addressTemplates, validationMode) => {
29695
29901
  const [{ FormValidator: FormValidator2 }, { MultilineAddressToolkit: MultilineAddressToolkit2 }] = await Promise.all([
@@ -31264,7 +31470,7 @@ var fillEmptyValues = (form, values, recursive = true) => {
31264
31470
  } else if (fieldValue !== void 0) {
31265
31471
  result2[fieldTarget] = fieldValue;
31266
31472
  } else if (defaultValue !== void 0) {
31267
- result2[fieldTarget] = defaultValue;
31473
+ result2[fieldTarget] = DEFAULT_VALUE[fieldType]?.(field);
31268
31474
  } else if (fieldType) {
31269
31475
  result2[fieldTarget] = EMPTY_VALUE;
31270
31476
  }