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