@wix/form-public 0.47.0 → 0.49.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.d.cts CHANGED
@@ -4,6 +4,7 @@ export { FormValues } from './_tsup-dts-rollup.cjs';
4
4
  export { CallingCountryCode } from './_tsup-dts-rollup.cjs';
5
5
  export { useForm } from './_tsup-dts-rollup.cjs';
6
6
  export { FormProvider } from './_tsup-dts-rollup.cjs';
7
+ export { Currency } from './_tsup-dts-rollup.cjs';
7
8
  export { PhoneInputProps } from './_tsup-dts-rollup.cjs';
8
9
  export { MultilineAddressProps } from './_tsup-dts-rollup.cjs';
9
10
  export { TextAreaProps } from './_tsup-dts-rollup.cjs';
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { FormValues } from './_tsup-dts-rollup.js';
4
4
  export { CallingCountryCode } from './_tsup-dts-rollup.js';
5
5
  export { useForm } from './_tsup-dts-rollup.js';
6
6
  export { FormProvider } from './_tsup-dts-rollup.js';
7
+ export { Currency } from './_tsup-dts-rollup.js';
7
8
  export { PhoneInputProps } from './_tsup-dts-rollup.js';
8
9
  export { MultilineAddressProps } from './_tsup-dts-rollup.js';
9
10
  export { TextAreaProps } from './_tsup-dts-rollup.js';
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,
@@ -21775,7 +22004,7 @@ var useForm3 = ({
21775
22004
  fieldsLayout
21776
22005
  } : null;
21777
22006
  };
21778
- var FormProvider = ({ children }) => {
22007
+ var FormProvider = ({ children, currency }) => {
21779
22008
  return /* @__PURE__ */ jsx(
21780
22009
  FormViewerProvider,
21781
22010
  {
@@ -21784,6 +22013,7 @@ var FormProvider = ({ children }) => {
21784
22013
  form: {},
21785
22014
  locale: "en",
21786
22015
  regionalFormat: "en",
22016
+ currency,
21787
22017
  WixRicosViewer: () => null,
21788
22018
  children: /* @__PURE__ */ jsx(ExternalDataProvider, { externalData: {}, children: /* @__PURE__ */ jsx(FormStatusProvider, { children }) })
21789
22019
  }