@wix/form-public 0.48.0 → 0.50.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.cjs CHANGED
@@ -16139,7 +16139,18 @@ function useBi() {
16139
16139
  }
16140
16140
  return context;
16141
16141
  }
16142
+ var ForcedState = /* @__PURE__ */ (function(ForcedState2) {
16143
+ ForcedState2["BUTTONS_HOVER"] = "BUTTONS_HOVER";
16144
+ ForcedState2["NEXT_BUTTON_HOVER"] = "NEXT_BUTTON_HOVER";
16145
+ ForcedState2["PREVIOUS_BUTTON_HOVER"] = "PREVIOUS_BUTTON_HOVER";
16146
+ ForcedState2["SUBMIT_BUTTON_HOVER"] = "SUBMIT_BUTTON_HOVER";
16147
+ ForcedState2["INPUT_FIELDS_HOVER"] = "INPUT_FIELDS_HOVER";
16148
+ ForcedState2["INPUT_FIELDS_FOCUS"] = "INPUT_FIELDS_FOCUS";
16149
+ ForcedState2["INPUT_FIELDS_ERROR"] = "INPUT_FIELDS_ERROR";
16150
+ return ForcedState2;
16151
+ })({});
16142
16152
  var ForcedStateContext = /* @__PURE__ */ React14.createContext([]);
16153
+ var useForcedState = () => React14.useContext(ForcedStateContext) || [];
16143
16154
  var FALLBACK = {};
16144
16155
  var ExternalDataContext = /* @__PURE__ */ React14.createContext(void 0);
16145
16156
  var ExternalDataProvider = (_ref) => {
@@ -16193,8 +16204,214 @@ function formFieldFocus(params) {
16193
16204
  var FieldValidationContext = /* @__PURE__ */ React14.createContext(null);
16194
16205
  var useFieldValidation = () => React14.useContext(FieldValidationContext) || {};
16195
16206
 
16207
+ // ../form-fields/dist/esm/field-error/error-types.js
16208
+ init_esm();
16209
+
16210
+ // ../form-fields/dist/esm/constants/locale.js
16211
+ var TRANSLATIONS_NAMESPACE = "form-viewer";
16212
+
16213
+ // ../form-fields/dist/esm/field-error/get-translated-error.js
16214
+ var defaultErrorKeys = {
16215
+ [ErrorType.UNKNOWN_ERROR]: "input.error.message.unknown-error",
16216
+ [ErrorType.TYPE_ERROR]: "input.error.message.type-error",
16217
+ [ErrorType.REQUIRED_VALUE_ERROR]: "input.error.message.required-error",
16218
+ [ErrorType.UNKNOWN_VALUE_ERROR]: "input.error.message.unknown-value-error",
16219
+ [ErrorType.MAX_LENGTH_ERROR]: "input.error.message.max-length-error",
16220
+ [ErrorType.MIN_LENGTH_ERROR]: "input.error.message.min-length-error",
16221
+ [ErrorType.PATTERN_ERROR]: "input.error.message.pattern-error",
16222
+ [ErrorType.FORMAT_ERROR]: "input.error.message.format-error",
16223
+ [ErrorType.MAX_VALUE_ERROR]: "input.error.message.max-value-error",
16224
+ [ErrorType.MIN_VALUE_ERROR]: "input.error.message.min-value-error",
16225
+ [ErrorType.MULTIPLE_OF_VALUE_ERROR]: "input.error.message.multiple-of-value-error",
16226
+ [ErrorType.MIN_ITEMS_ERROR]: "input.error.message.min-items-error",
16227
+ [ErrorType.MAX_ITEMS_ERROR]: "input.error.message.max-items-error",
16228
+ [ErrorType.NOT_ALLOWED_VALUE_ERROR]: "input.error.message.not-allowed-value",
16229
+ [ErrorType.FIELDS_COMPATIBILITY_ERROR]: "input.error.fields-compatibility-error",
16230
+ [ErrorType.FIELDS_COUNT_RESTRICTIONS_ERROR]: "input.error.fields-count-restrictions-error",
16231
+ [ErrorType.FORMS_COUNT_RESTRICTIONS_ERROR]: "input.error.forms-count-restrictions-error",
16232
+ [ErrorType.STEPS_COUNT_RESTRICTIONS_ERROR]: "input.error.steps-count-restrictions-error",
16233
+ [ErrorType.RULES_COUNT_RESTRICTIONS_ERROR]: "input.error.rules-count-restrictions-error",
16234
+ [ErrorType.FILE_UPLOAD_RESTRICTIONS_ERROR]: "input.error.file-upload-restrictions-error",
16235
+ [ErrorType.DISABLED_FORM_ERROR]: "input.error.disabled-form-error",
16236
+ [ErrorType.INVALID_PHONE_COUNTRY_CODE_ERROR]: "input.error.message.invalid-phone-country-code-error",
16237
+ [ErrorType.INVALID_STAFF_ID_ERROR]: "input.error.message.invalid-staff-id-error",
16238
+ [ErrorType.INVALID_LOCATION_ID_ERROR]: "input.error.message.invalid-location-id-error",
16239
+ [ErrorType.MISSING_SERVICE_OPTION_ERROR]: "TBD",
16240
+ [ErrorType.INVALID_SERVICE_OPTIONS_ERROR]: "TBD",
16241
+ [ErrorType.NO_AVAILABLE_SERVICE_OPTIONS_ERROR]: "TBD",
16242
+ [ErrorType.EXACT_CHARACTER_LENGTH_ERROR]: "input.error.message.exact-character-length-error",
16243
+ [ErrorType.CHARACTER_LENGTH_RANGE_ERROR]: "input.error.message.character-length-range-error",
16244
+ [ErrorType.VALUE_RANGE_ERROR]: "input.error.message.value-range-error",
16245
+ [ErrorType.EXACT_ITEMS_NUMBER_ERROR]: "input.error.message.exact-items-number-error",
16246
+ [ErrorType.DECIMAL_POINT_ERROR]: "input.error.message.decimal_point_error",
16247
+ [ErrorType.INCOMPLETE_DATE_ERROR]: "input.error.message.incomplete-date-error",
16248
+ [ErrorType.INVALID_VALUE_FOR_PATTERN_ERROR]: "input.error.message.invalid-value-for-pattern"
16249
+ };
16250
+ var getTranslatedError = (_ref) => {
16251
+ let {
16252
+ translation,
16253
+ error,
16254
+ fieldType,
16255
+ suffix,
16256
+ currency
16257
+ } = _ref;
16258
+ const {
16259
+ t,
16260
+ i18n
16261
+ } = translation;
16262
+ const formattedFieldType = getFormattedFieldType(fieldType ?? "");
16263
+ const errorKey = defaultErrorKeys[error.errorType];
16264
+ const params = {
16265
+ ...error.params,
16266
+ currency
16267
+ };
16268
+ const fieldErrorKey = `${formattedFieldType}.${errorKey}`;
16269
+ if (suffix) {
16270
+ const fieldErrorKeyWithSuffix = `${fieldErrorKey}.${suffix}`;
16271
+ const errorKeyWithSuffix = `${errorKey}.${suffix}`;
16272
+ if (i18n.exists(`${TRANSLATIONS_NAMESPACE}:${fieldErrorKeyWithSuffix}`)) {
16273
+ return t(fieldErrorKeyWithSuffix, params);
16274
+ }
16275
+ if (i18n.exists(`${TRANSLATIONS_NAMESPACE}:${errorKeyWithSuffix}`)) {
16276
+ return t(errorKeyWithSuffix, params);
16277
+ }
16278
+ }
16279
+ if (i18n.exists(`${TRANSLATIONS_NAMESPACE}:${fieldErrorKey}`)) {
16280
+ return t(fieldErrorKey, params);
16281
+ }
16282
+ return t(defaultErrorKeys[error.errorType], params);
16283
+ };
16284
+ var getFormattedFieldType = (string) => string.toLowerCase().replace(/_/g, "-");
16285
+
16286
+ // ../form-fields/dist/esm/ui/date-field/date-field-utils.js
16287
+ var isDateFieldValidationError2 = (error) => {
16288
+ return (error == null ? void 0 : error.errorType) === ErrorType.INCOMPLETE_DATE_ERROR;
16289
+ };
16290
+ var getDateValidationErrorSuffix = (error) => isDateFieldValidationError2(error) ? error.params.suffix : void 0;
16291
+
16292
+ // ../form-fields/dist/esm/ui/date-time-field/date-time-field-utils.js
16293
+ var isDateTimeFieldValidationError2 = (error) => {
16294
+ return (error == null ? void 0 : error.errorType) === ErrorType.INCOMPLETE_DATE_ERROR;
16295
+ };
16296
+ var getDateTimeValidationErrorSuffix = (error) => isDateTimeFieldValidationError2(error) ? error.params.suffix : void 0;
16297
+
16298
+ // ../form-fields/dist/esm/field-error/use-error.js
16299
+ var getErrorSuffix = (_ref) => {
16300
+ let {
16301
+ fieldType,
16302
+ error,
16303
+ properties
16304
+ } = _ref;
16305
+ switch (fieldType) {
16306
+ case INPUT_FIELD_TYPES.DATE_TIME_INPUT:
16307
+ return getDateTimeValidationErrorSuffix(error);
16308
+ case INPUT_FIELD_TYPES.CONTACTS_BIRTHDATE:
16309
+ case INPUT_FIELD_TYPES.DATE_INPUT:
16310
+ return getDateValidationErrorSuffix(error);
16311
+ case INPUT_FIELD_TYPES.TEXT_INPUT:
16312
+ case INPUT_FIELD_TYPES.QUIZ_SHORT_TEXT:
16313
+ case INPUT_FIELD_TYPES.DEXT_TEXT_INPUT:
16314
+ case INPUT_FIELD_TYPES.DEXT_EMAIL:
16315
+ case INPUT_FIELD_TYPES.CONTACTS_TAX_ID:
16316
+ case INPUT_FIELD_TYPES.CONTACTS_POSITION:
16317
+ case INPUT_FIELD_TYPES.CONTACTS_LAST_NAME:
16318
+ case INPUT_FIELD_TYPES.CONTACTS_FIRST_NAME:
16319
+ case INPUT_FIELD_TYPES.CONTACTS_EMAIL:
16320
+ case INPUT_FIELD_TYPES.CONTACTS_COMPANY:
16321
+ case INPUT_FIELD_TYPES.CONTACTS_ADDRESS:
16322
+ case INPUT_FIELD_TYPES.BOOKINGS_LAST_NAME:
16323
+ case INPUT_FIELD_TYPES.BOOKINGS_FIRST_NAME:
16324
+ case INPUT_FIELD_TYPES.BOOKINGS_EMAIL:
16325
+ case INPUT_FIELD_TYPES.ECOM_PHONE:
16326
+ case INPUT_FIELD_TYPES.ECOM_EMAIL:
16327
+ case INPUT_FIELD_TYPES.ECOM_COMPANY_NAME:
16328
+ case INPUT_FIELD_TYPES.ECOM_ADDITIONAL_INFO:
16329
+ case INPUT_FIELD_TYPES.FULL_NAME_LAST_NAME:
16330
+ case INPUT_FIELD_TYPES.FULL_NAME_FIRST_NAME:
16331
+ case INPUT_FIELD_TYPES.MLA_STREET_NAME:
16332
+ case INPUT_FIELD_TYPES.MLA_ADDRESS_LINE:
16333
+ case INPUT_FIELD_TYPES.MLA_STREET_NUMBER:
16334
+ case INPUT_FIELD_TYPES.MLA_POSTAL_CODE:
16335
+ case INPUT_FIELD_TYPES.MLA_CITY:
16336
+ case INPUT_FIELD_TYPES.MLA_APARTMENT:
16337
+ case INPUT_FIELD_TYPES.MLA_ADDRESS_LINE_2:
16338
+ case INPUT_FIELD_TYPES.IDENTITY_PASSWORD:
16339
+ case INPUT_FIELD_TYPES.RATING_INPUT:
16340
+ case INPUT_FIELD_TYPES.DEXT_RATING_INPUT:
16341
+ case INPUT_FIELD_TYPES.MLA_COUNTRY:
16342
+ case INPUT_FIELD_TYPES.MLA_SUBDIVISION:
16343
+ if (properties && "countryCode" in properties) {
16344
+ const countryCode = properties.countryCode;
16345
+ return typeof countryCode === "string" ? countryCode.toLocaleLowerCase() : void 0;
16346
+ }
16347
+ return void 0;
16348
+ case INPUT_FIELD_TYPES.VAT_ID:
16349
+ if (properties && "country" in properties) {
16350
+ const country = properties.country;
16351
+ return typeof country === "string" ? country.toLocaleLowerCase() : void 0;
16352
+ }
16353
+ return void 0;
16354
+ case INPUT_FIELD_TYPES.SIGNATURE:
16355
+ if (properties && "uploadEnabled" in properties) {
16356
+ return properties.uploadEnabled ? "with-upload" : void 0;
16357
+ }
16358
+ return void 0;
16359
+ default:
16360
+ return void 0;
16361
+ }
16362
+ };
16363
+ var useError = (_ref2) => {
16364
+ let {
16365
+ error,
16366
+ customErrors,
16367
+ fieldType,
16368
+ properties,
16369
+ validationError
16370
+ } = _ref2;
16371
+ const {
16372
+ currency
16373
+ } = useConfig();
16374
+ const {
16375
+ t,
16376
+ i18n
16377
+ } = useTranslation();
16378
+ const forcedState = useForcedState();
16379
+ if (forcedState.includes(ForcedState.INPUT_FIELDS_ERROR)) {
16380
+ return {
16381
+ hasError: true,
16382
+ errorMessage: t("input.error.message.required-error-forced")
16383
+ };
16384
+ }
16385
+ if (!error) {
16386
+ return {
16387
+ hasError: false
16388
+ };
16389
+ }
16390
+ const customErrorMessage = (error == null ? void 0 : error.useCustomErrorMessage) && (error == null ? void 0 : error.errorMessage) || (customErrors == null ? void 0 : customErrors[error.errorType]);
16391
+ const suffix = fieldType ? getErrorSuffix({
16392
+ fieldType,
16393
+ error: validationError,
16394
+ properties
16395
+ }) : void 0;
16396
+ const errorMessage = customErrorMessage ?? getTranslatedError({
16397
+ translation: {
16398
+ i18n,
16399
+ t
16400
+ },
16401
+ error,
16402
+ fieldType,
16403
+ suffix,
16404
+ currency: currency == null ? void 0 : currency.sign
16405
+ });
16406
+ return {
16407
+ hasError: true,
16408
+ errorMessage
16409
+ };
16410
+ };
16411
+
16196
16412
  // ../form-fields/dist/esm/ui/form/components/form/input-field.js
16197
16413
  var InputField = (_ref) => {
16414
+ var _field$properties;
16198
16415
  let {
16199
16416
  field,
16200
16417
  errors,
@@ -16249,6 +16466,16 @@ var InputField = (_ref) => {
16249
16466
  }
16250
16467
  onFieldChange == null || onFieldChange(field.target, value);
16251
16468
  }, [onFieldChange, field, fieldError, validateFields2]);
16469
+ const {
16470
+ hasError,
16471
+ errorMessage
16472
+ } = useError({
16473
+ error: fieldError,
16474
+ customErrors: (_field$properties = field.properties) == null ? void 0 : _field$properties.customErrors,
16475
+ fieldType: field.fieldType,
16476
+ properties: field.properties,
16477
+ validationError: fieldError
16478
+ });
16252
16479
  const FieldComponent = componentsById[field.fieldType];
16253
16480
  if (!FieldComponent) {
16254
16481
  return null;
@@ -16257,6 +16484,8 @@ var InputField = (_ref) => {
16257
16484
  onChange: handleChange,
16258
16485
  onBlur: _onBlur,
16259
16486
  onFocus: _onFocus,
16487
+ hasError,
16488
+ errorMessage,
16260
16489
  error: fieldError,
16261
16490
  errors: fieldErrors,
16262
16491
  value: fieldValue,
@@ -17737,7 +17966,7 @@ var ExplanationTextKey = "explanationText";
17737
17966
  var MediaKey = "media";
17738
17967
  var UploadEnabledKey = "uploadEnabled";
17739
17968
  var FirstDayOfWeekKey = "firstDayOfWeek";
17740
- var DefaultCountryCodeKey = "defaultCountryCode";
17969
+ var DefaultCountryCodeKey = "defaultCountry";
17741
17970
  var ImageResizeKey = "imageResize";
17742
17971
  var ShowFlagKey = "showFlag";
17743
17972
  var NameKey = "name";
@@ -21424,11 +21653,11 @@ var TextAreaMapper = (props) => ({
21424
21653
  ...BaseMapper(props)
21425
21654
  });
21426
21655
  var PhoneInputMapper = (props) => {
21427
- const { defaultCountry, validation } = props;
21656
+ const { defaultCountry, defaultCountryCode, validation } = props;
21428
21657
  return {
21429
21658
  ...props,
21430
21659
  ...BaseMapper(props),
21431
- defaultCountryCode: defaultCountry,
21660
+ defaultCountryCode: defaultCountry ?? defaultCountryCode,
21432
21661
  allowedCountryCodes: validation?.string?.phoneOptions?.allowedCountryCodes
21433
21662
  };
21434
21663
  };