@wix/form-public 0.53.0 → 0.55.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
@@ -3,9 +3,9 @@
3
3
  var React14 = require('react');
4
4
  var camelCase = require('lodash.camelcase');
5
5
  var mapKeys = require('lodash.mapkeys');
6
- var jsxRuntime = require('react/jsx-runtime');
7
6
  var i18next = require('i18next');
8
7
  var reactI18next = require('react-i18next');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
@@ -16675,6 +16675,386 @@ var useError = (_ref2) => {
16675
16675
  errorMessage
16676
16676
  };
16677
16677
  };
16678
+ var FieldPropsContext = /* @__PURE__ */ React14.createContext(null);
16679
+ function useFieldProps() {
16680
+ const context = React14.useContext(FieldPropsContext);
16681
+ if (context === null) {
16682
+ throw new Error("useFieldProps must be used within a FieldPropsProvider");
16683
+ }
16684
+ return context;
16685
+ }
16686
+
16687
+ // ../form-fields/dist/esm/mappers/public-props-map.js
16688
+ init_esm();
16689
+ var allCallingCountryCodes = Object.keys(CALLING_COUNTRY_CODES);
16690
+ var MinMaxLengthMapper = (validation) => {
16691
+ var _validation$string, _validation$string2;
16692
+ return {
16693
+ maxLength: validation == null || (_validation$string = validation.string) == null ? void 0 : _validation$string.maxLength,
16694
+ minLength: validation == null || (_validation$string2 = validation.string) == null ? void 0 : _validation$string2.minLength
16695
+ };
16696
+ };
16697
+ var MinMaxItemsMapper = (validation) => {
16698
+ var _validation$array, _validation$array2;
16699
+ return {
16700
+ minItems: validation == null || (_validation$array = validation.array) == null ? void 0 : _validation$array.minItems,
16701
+ maxItems: validation == null || (_validation$array2 = validation.array) == null ? void 0 : _validation$array2.maxItems
16702
+ };
16703
+ };
16704
+ var MinMaxValuesMapper = (validation) => {
16705
+ var _validation$predefine, _validation$predefine2;
16706
+ return {
16707
+ minValue: validation == null || (_validation$predefine = validation.predefined) == null || (_validation$predefine = _validation$predefine.paymentOptions) == null || (_validation$predefine = _validation$predefine.products) == null || (_validation$predefine = _validation$predefine[0]) == null ? void 0 : _validation$predefine.dynamicPriceOptions.minPrice,
16708
+ maxValue: validation == null || (_validation$predefine2 = validation.predefined) == null || (_validation$predefine2 = _validation$predefine2.paymentOptions) == null || (_validation$predefine2 = _validation$predefine2.products) == null || (_validation$predefine2 = _validation$predefine2[0]) == null ? void 0 : _validation$predefine2.dynamicPriceOptions.maxPrice
16709
+ };
16710
+ };
16711
+ var AcceptedDatesMapper = (validation) => {
16712
+ var _validation$string3, _validation$string4;
16713
+ return {
16714
+ acceptedDates: (validation == null || (_validation$string3 = validation.string) == null || (_validation$string3 = _validation$string3.dateOptions) == null ? void 0 : _validation$string3.minimum) === "$now" ? "future" : (validation == null || (_validation$string4 = validation.string) == null || (_validation$string4 = _validation$string4.dateOptions) == null ? void 0 : _validation$string4.maximum) === "$now" ? "past" : "all"
16715
+ };
16716
+ };
16717
+ var CustomOptionMapper = (props) => {
16718
+ const {
16719
+ addOther,
16720
+ addOtherLabel,
16721
+ addOtherPlaceholder
16722
+ } = props;
16723
+ return {
16724
+ customOption: addOther ? {
16725
+ label: addOtherLabel,
16726
+ placeholder: addOtherPlaceholder
16727
+ } : void 0
16728
+ };
16729
+ };
16730
+ var ErrorMapper = (error) => {
16731
+ if (!error) {
16732
+ return void 0;
16733
+ }
16734
+ return error.errorMessage || "Validation error";
16735
+ };
16736
+ var BaseMapper = (props) => {
16737
+ const {
16738
+ hideLabel,
16739
+ error,
16740
+ showLabel,
16741
+ ...rest
16742
+ } = props;
16743
+ return {
16744
+ ...rest,
16745
+ showLabel: hideLabel === void 0 ? true : !hideLabel,
16746
+ error: ErrorMapper(error)
16747
+ };
16748
+ };
16749
+ var TextFieldMapper = (props) => ({
16750
+ ...props,
16751
+ ...MinMaxLengthMapper(props == null ? void 0 : props.validation),
16752
+ ...BaseMapper(props)
16753
+ });
16754
+ var TextAreaMapper = (props) => ({
16755
+ ...props,
16756
+ ...MinMaxLengthMapper(props == null ? void 0 : props.validation),
16757
+ ...BaseMapper(props)
16758
+ });
16759
+ var PhoneInputMapper = (props) => {
16760
+ var _validation$string5;
16761
+ const {
16762
+ defaultCountry,
16763
+ defaultCountryCode,
16764
+ validation
16765
+ } = props;
16766
+ const allowedCountryCodes = validation == null || (_validation$string5 = validation.string) == null || (_validation$string5 = _validation$string5.phoneOptions) == null ? void 0 : _validation$string5.allowedCountryCodes;
16767
+ return {
16768
+ ...props,
16769
+ ...BaseMapper(props),
16770
+ defaultCountryCode: defaultCountry ?? defaultCountryCode,
16771
+ countryCodes: allowedCountryCodes && allowedCountryCodes.length > 0 ? allowedCountryCodes : allCallingCountryCodes
16772
+ };
16773
+ };
16774
+ var MultilineAddressMapper = (props) => {
16775
+ var _view$fieldSettings, _validation$predefine3;
16776
+ const {
16777
+ view,
16778
+ validation
16779
+ } = props;
16780
+ return {
16781
+ ...props,
16782
+ ...BaseMapper(props),
16783
+ showAddressLine2: view == null || (_view$fieldSettings = view.fieldSettings) == null || (_view$fieldSettings = _view$fieldSettings.addressLine2) == null ? void 0 : _view$fieldSettings.show,
16784
+ addressLine2Required: validation == null || (_validation$predefine3 = validation.predefined) == null || (_validation$predefine3 = _validation$predefine3.multilineAddressOptions) == null || (_validation$predefine3 = _validation$predefine3.fields) == null || (_validation$predefine3 = _validation$predefine3.addressLine2) == null ? void 0 : _validation$predefine3.required
16785
+ };
16786
+ };
16787
+ var DateInputMapper = (props) => {
16788
+ const {
16789
+ hidePlaceholder,
16790
+ validation
16791
+ } = props;
16792
+ return {
16793
+ ...props,
16794
+ ...BaseMapper(props),
16795
+ ...AcceptedDatesMapper(validation),
16796
+ showPlaceholder: hidePlaceholder === void 0 ? true : !hidePlaceholder
16797
+ };
16798
+ };
16799
+ var DatePickerMapper = (props) => {
16800
+ const {
16801
+ validation
16802
+ } = props;
16803
+ return {
16804
+ ...props,
16805
+ ...BaseMapper(props),
16806
+ ...AcceptedDatesMapper(validation)
16807
+ };
16808
+ };
16809
+ var DateTimeInputMapper = (props) => {
16810
+ const {
16811
+ hidePlaceholder,
16812
+ validation
16813
+ } = props;
16814
+ return {
16815
+ ...props,
16816
+ ...BaseMapper(props),
16817
+ ...AcceptedDatesMapper(validation),
16818
+ showPlaceholder: hidePlaceholder === void 0 ? true : !hidePlaceholder
16819
+ };
16820
+ };
16821
+ var FileUploadMapper = (props) => {
16822
+ const {
16823
+ valueSliderLimit,
16824
+ uploadFileFormats
16825
+ } = props;
16826
+ return {
16827
+ ...props,
16828
+ ...BaseMapper(props),
16829
+ maxFiles: valueSliderLimit,
16830
+ allowedFileFormats: uploadFileFormats
16831
+ };
16832
+ };
16833
+ var NumberInputMapper = (props) => BaseMapper(props);
16834
+ var CheckboxMapper = (props) => {
16835
+ const {
16836
+ error,
16837
+ ...rest
16838
+ } = props;
16839
+ return {
16840
+ ...rest,
16841
+ error: ErrorMapper(error)
16842
+ };
16843
+ };
16844
+ var SignatureMapper = (props) => {
16845
+ const {
16846
+ uploadEnabled
16847
+ } = props;
16848
+ return {
16849
+ ...props,
16850
+ ...BaseMapper(props),
16851
+ imageUploadEnabled: uploadEnabled
16852
+ };
16853
+ };
16854
+ var RatingInputMapper = (props) => BaseMapper(props);
16855
+ var RadioGroupMapper = (props) => {
16856
+ return {
16857
+ ...props,
16858
+ ...BaseMapper(props),
16859
+ ...CustomOptionMapper(props)
16860
+ };
16861
+ };
16862
+ var CheckboxGroupMapper = (props) => {
16863
+ const {
16864
+ validation
16865
+ } = props;
16866
+ return {
16867
+ ...props,
16868
+ ...BaseMapper(props),
16869
+ ...CustomOptionMapper(props),
16870
+ ...MinMaxItemsMapper(validation)
16871
+ };
16872
+ };
16873
+ var DropdownMapper = (props) => BaseMapper(props);
16874
+ var TagsMapper = (props) => {
16875
+ const {
16876
+ validation
16877
+ } = props;
16878
+ return {
16879
+ ...props,
16880
+ ...BaseMapper(props),
16881
+ ...CustomOptionMapper(props),
16882
+ ...MinMaxItemsMapper(validation)
16883
+ };
16884
+ };
16885
+ var TimeInputMapper = (props) => {
16886
+ const {
16887
+ hidePlaceholder
16888
+ } = props;
16889
+ return {
16890
+ ...props,
16891
+ ...BaseMapper(props),
16892
+ showPlaceholder: hidePlaceholder === void 0 ? true : !hidePlaceholder
16893
+ };
16894
+ };
16895
+ var TextMapper = (props) => props;
16896
+ var SubmitButtonMapper = (props) => {
16897
+ return {
16898
+ ...props
16899
+ };
16900
+ };
16901
+ var ProductListMapper = (props) => {
16902
+ return {
16903
+ ...props,
16904
+ ...BaseMapper(props),
16905
+ ...MinMaxItemsMapper(props == null ? void 0 : props.validation)
16906
+ };
16907
+ };
16908
+ var FixedPaymentMapper = (props) => {
16909
+ var _validation$predefine4, _paymentValidation$fi;
16910
+ const {
16911
+ validation,
16912
+ hideLabel,
16913
+ showLabel,
16914
+ ...rest
16915
+ } = props;
16916
+ const paymentValidation = validation == null || (_validation$predefine4 = validation.predefined) == null || (_validation$predefine4 = _validation$predefine4.paymentOptions) == null || (_validation$predefine4 = _validation$predefine4.products) == null ? void 0 : _validation$predefine4[0];
16917
+ const fixedPaymentValue = paymentValidation == null || (_paymentValidation$fi = paymentValidation.fixedPriceOptions) == null ? void 0 : _paymentValidation$fi.price;
16918
+ return {
16919
+ ...rest,
16920
+ validation,
16921
+ showLabel: hideLabel === void 0 ? true : !hideLabel,
16922
+ amount: fixedPaymentValue
16923
+ };
16924
+ };
16925
+ var PaymentInputMapper = (props) => {
16926
+ const {
16927
+ validation
16928
+ } = props;
16929
+ return {
16930
+ ...props,
16931
+ ...BaseMapper(props),
16932
+ ...MinMaxValuesMapper(validation)
16933
+ };
16934
+ };
16935
+ var DonationMapper = (props) => {
16936
+ return {
16937
+ ...props,
16938
+ ...BaseMapper(props),
16939
+ ...CustomOptionMapper(props)
16940
+ };
16941
+ };
16942
+ var AppointmentMapper = (props) => BaseMapper(props);
16943
+ var ImageChoiceMapper = (props) => {
16944
+ const {
16945
+ isMultipleAnswers,
16946
+ choiceImageResize
16947
+ } = props;
16948
+ return {
16949
+ ...props,
16950
+ ...BaseMapper(props),
16951
+ multiple: isMultipleAnswers,
16952
+ imageAspectRatio: choiceImageResize
16953
+ };
16954
+ };
16955
+ var DefaultMapper = (props) => {
16956
+ const {
16957
+ error,
16958
+ ...rest
16959
+ } = props;
16960
+ return {
16961
+ ...rest,
16962
+ error: ErrorMapper(error)
16963
+ };
16964
+ };
16965
+ var FIELD_PROPS_MAPPERS = {
16966
+ TEXT_INPUT: TextFieldMapper,
16967
+ TEXT_AREA: TextAreaMapper,
16968
+ NUMBER_INPUT: NumberInputMapper,
16969
+ URL_INPUT: TextFieldMapper,
16970
+ DATE_INPUT: DateInputMapper,
16971
+ DATE_PICKER: DatePickerMapper,
16972
+ DATE_TIME_INPUT: DateTimeInputMapper,
16973
+ TIME_INPUT: TimeInputMapper,
16974
+ CONTACTS_COMPANY: TextFieldMapper,
16975
+ CONTACTS_POSITION: TextFieldMapper,
16976
+ CONTACTS_TAX_ID: TextFieldMapper,
16977
+ CONTACTS_FIRST_NAME: TextFieldMapper,
16978
+ CONTACTS_LAST_NAME: TextFieldMapper,
16979
+ CONTACTS_EMAIL: TextFieldMapper,
16980
+ CONTACTS_BIRTHDATE: DateInputMapper,
16981
+ CONTACTS_PHONE: PhoneInputMapper,
16982
+ CONTACTS_ADDRESS: TextFieldMapper,
16983
+ CONTACTS_SUBSCRIBE: CheckboxMapper,
16984
+ RADIO_GROUP: RadioGroupMapper,
16985
+ CHECKBOX: CheckboxMapper,
16986
+ CHECKBOX_GROUP: CheckboxGroupMapper,
16987
+ DROPDOWN: DropdownMapper,
16988
+ TAGS: TagsMapper,
16989
+ QUIZ_IMAGE_CHOICE: ImageChoiceMapper,
16990
+ QUIZ_MULTI_CHOICE: CheckboxGroupMapper,
16991
+ QUIZ_SINGLE_CHOICE: RadioGroupMapper,
16992
+ QUIZ_SHORT_TEXT: TextFieldMapper,
16993
+ QUIZ_LONG_TEXT: TextAreaMapper,
16994
+ QUIZ_NUMBER: NumberInputMapper,
16995
+ QUIZ_FILE_UPLOAD: FileUploadMapper,
16996
+ DEXT_TEXT_INPUT: TextFieldMapper,
16997
+ DEXT_TEXT_AREA: TextAreaMapper,
16998
+ DEXT_DROPDOWN: DropdownMapper,
16999
+ DEXT_URL_INPUT: TextFieldMapper,
17000
+ DEXT_RADIO_GROUP: RadioGroupMapper,
17001
+ DEXT_NUMBER_INPUT: NumberInputMapper,
17002
+ DEXT_CHECKBOX: CheckboxMapper,
17003
+ DEXT_CHECKBOX_GROUP: CheckboxGroupMapper,
17004
+ DEXT_EMAIL: TextFieldMapper,
17005
+ DEXT_PHONE: PhoneInputMapper,
17006
+ DEXT_RATING_INPUT: RatingInputMapper,
17007
+ DEXT_DATE_PICKER: DatePickerMapper,
17008
+ DEXT_TAGS: TagsMapper,
17009
+ MULTILINE_ADDRESS: MultilineAddressMapper,
17010
+ MLA_COUNTRY: DropdownMapper,
17011
+ MLA_CITY: TextFieldMapper,
17012
+ MLA_ADDRESS_LINE: TextFieldMapper,
17013
+ MLA_ADDRESS_LINE_2: TextFieldMapper,
17014
+ MLA_POSTAL_CODE: TextFieldMapper,
17015
+ MLA_SUBDIVISION: DropdownMapper,
17016
+ MLA_STREET_NAME: TextFieldMapper,
17017
+ MLA_STREET_NUMBER: TextFieldMapper,
17018
+ MLA_APARTMENT: TextFieldMapper,
17019
+ FULL_NAME: TextFieldMapper,
17020
+ FULL_NAME_FIRST_NAME: TextFieldMapper,
17021
+ FULL_NAME_LAST_NAME: TextFieldMapper,
17022
+ ECOM_ADDITIONAL_INFO: TextAreaMapper,
17023
+ ECOM_ADDRESS: TextFieldMapper,
17024
+ ECOM_FULL_NAME: TextFieldMapper,
17025
+ ECOM_PHONE: PhoneInputMapper,
17026
+ ECOM_COMPANY_NAME: TextFieldMapper,
17027
+ ECOM_EMAIL: TextFieldMapper,
17028
+ ECOM_SUBSCRIPTION: CheckboxMapper,
17029
+ ECOM_CONTACT_DETAILS: TextMapper,
17030
+ ECOM_SHIPPING_DETAILS: TextMapper,
17031
+ BOOKINGS_FIRST_NAME: TextFieldMapper,
17032
+ BOOKINGS_LAST_NAME: TextFieldMapper,
17033
+ BOOKINGS_EMAIL: TextFieldMapper,
17034
+ BOOKINGS_PHONE: PhoneInputMapper,
17035
+ BOOKINGS_ADDRESS: TextFieldMapper,
17036
+ BOOKINGS_HEADER: TextMapper,
17037
+ BOOKINGS_RICH_TEXT: TextMapper,
17038
+ BOOKINGS_LOGIN_BAR: DefaultMapper,
17039
+ APPOINTMENT: AppointmentMapper,
17040
+ SERVICES_DROPDOWN: DropdownMapper,
17041
+ SERVICES_MULTI_CHOICE: CheckboxGroupMapper,
17042
+ PRODUCT_LIST: ProductListMapper,
17043
+ FIXED_PAYMENT: FixedPaymentMapper,
17044
+ PAYMENT_INPUT: PaymentInputMapper,
17045
+ DONATION: DonationMapper,
17046
+ EVENTS_RSVP: RadioGroupMapper,
17047
+ EVENTS_REPEATER: TextMapper,
17048
+ FILE_UPLOAD: FileUploadMapper,
17049
+ SIGNATURE: SignatureMapper,
17050
+ RATING_INPUT: RatingInputMapper,
17051
+ VAT_ID: TextFieldMapper,
17052
+ NESTED_FORM: DefaultMapper,
17053
+ HEADER: TextMapper,
17054
+ RICH_TEXT: TextMapper,
17055
+ SUBMIT_BUTTON: SubmitButtonMapper,
17056
+ IDENTITY_PASSWORD: DefaultMapper
17057
+ };
16678
17058
 
16679
17059
  // ../form-fields/dist/esm/ui/form/components/form/input-field.js
16680
17060
  var InputField = (_ref) => {
@@ -16701,6 +17081,7 @@ var InputField = (_ref) => {
16701
17081
  requiredIndicator,
16702
17082
  requiredIndicatorPlacement
16703
17083
  } = form.requiredIndicatorProperties || {};
17084
+ const propsMapper = FIELD_PROPS_MAPPERS[field.fieldType];
16704
17085
  const _onBlur = () => {
16705
17086
  bi == null || bi.report(formFieldFocus({
16706
17087
  action_type: "blur",
@@ -16747,7 +17128,28 @@ var InputField = (_ref) => {
16747
17128
  if (!FieldComponent) {
16748
17129
  return null;
16749
17130
  }
16750
- return /* @__PURE__ */ React14__default.default.createElement(FieldComponent, (0, import_extends.default)({}, field.properties, {
17131
+ return /* @__PURE__ */ React14__default.default.createElement(FieldPropsContext.Provider, {
17132
+ value: {
17133
+ ...propsMapper({
17134
+ ...field.properties,
17135
+ id: field.id,
17136
+ target: field.target,
17137
+ path: field.path,
17138
+ error: fieldError,
17139
+ errors: fieldErrors,
17140
+ value: fieldValue,
17141
+ externalData,
17142
+ fieldType: field.fieldType,
17143
+ requiredIndicatorType: requiredIndicator,
17144
+ requiredIndicatorPlacement
17145
+ }),
17146
+ onChange: handleChange,
17147
+ onBlur: _onBlur,
17148
+ onFocus: _onFocus,
17149
+ hasError,
17150
+ errorMessage
17151
+ }
17152
+ }, /* @__PURE__ */ React14__default.default.createElement(FieldComponent, (0, import_extends.default)({}, field.properties, {
16751
17153
  onChange: handleChange,
16752
17154
  onBlur: _onBlur,
16753
17155
  onFocus: _onFocus,
@@ -16764,7 +17166,7 @@ var InputField = (_ref) => {
16764
17166
  FieldLayout,
16765
17167
  requiredIndicatorType: requiredIndicator,
16766
17168
  requiredIndicatorPlacement
16767
- }));
17169
+ })));
16768
17170
  };
16769
17171
 
16770
17172
  // ../form-fields/dist/esm/ui/form/components/form/read-only-field.js
@@ -16781,18 +17183,30 @@ var ReadOnlyField = (_ref) => {
16781
17183
  requiredIndicator,
16782
17184
  requiredIndicatorPlacement
16783
17185
  } = form.requiredIndicatorProperties || {};
17186
+ const propsMapper = FIELD_PROPS_MAPPERS[field.fieldType];
16784
17187
  const FieldComponent = componentsById[field.fieldType];
16785
17188
  if (!FieldComponent) {
16786
17189
  return null;
16787
17190
  }
16788
- return /* @__PURE__ */ React14__default.default.createElement(FieldComponent, (0, import_extends2.default)({}, field.properties, {
17191
+ return /* @__PURE__ */ React14__default.default.createElement(FieldPropsContext.Provider, {
17192
+ value: {
17193
+ ...propsMapper({
17194
+ ...field.properties,
17195
+ id: field.id,
17196
+ externalData,
17197
+ fieldType: field.fieldType,
17198
+ requiredIndicatorType: requiredIndicator,
17199
+ requiredIndicatorPlacement
17200
+ })
17201
+ }
17202
+ }, /* @__PURE__ */ React14__default.default.createElement(FieldComponent, (0, import_extends2.default)({}, field.properties, {
16789
17203
  id: field.id,
16790
17204
  externalData,
16791
17205
  fieldType: field.fieldType,
16792
17206
  FieldLayout,
16793
17207
  requiredIndicatorType: requiredIndicator,
16794
17208
  requiredIndicatorPlacement
16795
- }));
17209
+ })));
16796
17210
  };
16797
17211
 
16798
17212
  // ../form-fields/dist/esm/ui/form/components/form/nested-form-field.js
@@ -16817,6 +17231,7 @@ var NestedFormField = (_ref) => {
16817
17231
  requiredIndicator,
16818
17232
  requiredIndicatorPlacement
16819
17233
  } = form.requiredIndicatorProperties || {};
17234
+ const propsMapper = FIELD_PROPS_MAPPERS[field.fieldType];
16820
17235
  const handleChange = React14.useCallback((value) => {
16821
17236
  if (!value) {
16822
17237
  value = null;
@@ -16827,7 +17242,24 @@ var NestedFormField = (_ref) => {
16827
17242
  if (!FieldComponent) {
16828
17243
  return null;
16829
17244
  }
16830
- return /* @__PURE__ */ React14__default.default.createElement(FieldComponent, (0, import_extends3.default)({}, field.properties, {
17245
+ return /* @__PURE__ */ React14__default.default.createElement(FieldPropsContext.Provider, {
17246
+ value: {
17247
+ ...propsMapper({
17248
+ ...field.properties,
17249
+ id: field.id,
17250
+ target: field.target,
17251
+ path: field.path,
17252
+ error: fieldError,
17253
+ errors: fieldErrors,
17254
+ value: fieldValue,
17255
+ externalData,
17256
+ fieldType: field.fieldType,
17257
+ requiredIndicatorType: requiredIndicator,
17258
+ requiredIndicatorPlacement
17259
+ }),
17260
+ onChange: handleChange
17261
+ }
17262
+ }, /* @__PURE__ */ React14__default.default.createElement(FieldComponent, (0, import_extends3.default)({}, field.properties, {
16831
17263
  onChange: handleChange,
16832
17264
  error: fieldError,
16833
17265
  errors: fieldErrors,
@@ -16840,7 +17272,7 @@ var NestedFormField = (_ref) => {
16840
17272
  FieldLayout,
16841
17273
  requiredIndicatorType: requiredIndicator,
16842
17274
  requiredIndicatorPlacement
16843
- }));
17275
+ })));
16844
17276
  };
16845
17277
 
16846
17278
  // ../form-fields/dist/esm/ui/form/components/form/submit-button-field.js
@@ -16947,11 +17379,33 @@ var SubmitButtonField = (_ref) => {
16947
17379
  const submitButtonText = submitText || text || "";
16948
17380
  const previousButtonText = previousText || "";
16949
17381
  const nextButtonText = nextText || "";
17382
+ const propsMapper = FIELD_PROPS_MAPPERS[field.fieldType];
16950
17383
  const FieldComponent = componentsById[field.fieldType];
16951
17384
  if (!FieldComponent) {
16952
17385
  return null;
16953
17386
  }
16954
- return /* @__PURE__ */ React14__default.default.createElement(FieldComponent, (0, import_extends4.default)({}, field.properties, {
17387
+ return /* @__PURE__ */ React14__default.default.createElement(FieldPropsContext.Provider, {
17388
+ value: {
17389
+ ...propsMapper({
17390
+ ...field.properties,
17391
+ id: field.id,
17392
+ externalData,
17393
+ fieldType: field.fieldType,
17394
+ hasSteps,
17395
+ isDisabled,
17396
+ isInProgress,
17397
+ showPreviousButton,
17398
+ showNextButton,
17399
+ showSubmitButton,
17400
+ submitText: submitButtonText,
17401
+ previousText: previousButtonText,
17402
+ nextText: nextButtonText,
17403
+ onSubmitClick: handleSubmitClick,
17404
+ onPreviousClick: () => actions == null ? void 0 : actions.setPreviousStep(),
17405
+ onNextClick: () => actions == null ? void 0 : actions.setNextStep()
17406
+ })
17407
+ }
17408
+ }, /* @__PURE__ */ React14__default.default.createElement(FieldComponent, (0, import_extends4.default)({}, field.properties, {
16955
17409
  id: field.id,
16956
17410
  externalData,
16957
17411
  fieldType: field.fieldType,
@@ -16968,7 +17422,7 @@ var SubmitButtonField = (_ref) => {
16968
17422
  onSubmitClick: handleSubmitClick,
16969
17423
  onPreviousClick: () => actions == null ? void 0 : actions.setPreviousStep(),
16970
17424
  onNextClick: () => actions == null ? void 0 : actions.setNextStep()
16971
- }));
17425
+ })));
16972
17426
  };
16973
17427
 
16974
17428
  // ../form-fields/dist/esm/services/multiline-address.js
@@ -21869,232 +22323,6 @@ function normalizeSchema(obj) {
21869
22323
  return obj;
21870
22324
  }
21871
22325
 
21872
- // src/mappers/props-map.ts
21873
- var MinMaxLengthMapper = (validation) => ({
21874
- maxLength: validation?.string?.maxLength,
21875
- minLength: validation?.string?.minLength
21876
- });
21877
- var MinMaxItemsMapper = (validation) => ({
21878
- minItems: validation?.array?.minItems,
21879
- maxItems: validation?.array?.maxItems
21880
- });
21881
- var MinMaxValuesMapper = (validation) => ({
21882
- minValue: validation.predefined.paymentOptions.products[0].dynamicPriceOptions.minPrice,
21883
- maxValue: validation.predefined.paymentOptions.products[0].dynamicPriceOptions.maxPrice
21884
- });
21885
- var AcceptedDatesMapper = (validation) => ({
21886
- acceptedDates: validation?.string?.dateOptions?.minimum === "$now" ? "future" : validation?.string?.dateOptions?.maximum === "$now" ? "past" : "all"
21887
- });
21888
- var CustomOptionMapper = (props) => {
21889
- const { addOther, addOtherLabel, addOtherPlaceholder } = props;
21890
- return {
21891
- customOption: addOther ? {
21892
- label: addOtherLabel,
21893
- placeholder: addOtherPlaceholder
21894
- } : void 0
21895
- };
21896
- };
21897
- var ErrorMapper = (props) => {
21898
- return {
21899
- ...props,
21900
- // TODO
21901
- error: ""
21902
- };
21903
- };
21904
- var BaseMapper = (props) => {
21905
- const { hideLabel } = props;
21906
- return {
21907
- ...props,
21908
- showLabel: hideLabel === void 0 ? true : !hideLabel,
21909
- ...ErrorMapper(props)
21910
- };
21911
- };
21912
- var TextFieldMapper = (props) => ({
21913
- ...props,
21914
- ...MinMaxLengthMapper(props?.validation),
21915
- ...BaseMapper(props)
21916
- });
21917
- var TextAreaMapper = (props) => ({
21918
- ...props,
21919
- ...MinMaxLengthMapper(props?.validation),
21920
- ...BaseMapper(props)
21921
- });
21922
- var PhoneInputMapper = (props) => {
21923
- const { defaultCountry, defaultCountryCode, validation } = props;
21924
- return {
21925
- ...props,
21926
- ...BaseMapper(props),
21927
- defaultCountryCode: defaultCountry ?? defaultCountryCode,
21928
- allowedCountryCodes: validation?.string?.phoneOptions?.allowedCountryCodes
21929
- };
21930
- };
21931
- var MultilineAddressMapper = (props) => {
21932
- const { view, validation } = props;
21933
- return {
21934
- ...props,
21935
- ...BaseMapper(props),
21936
- showAddressLine2: view?.fieldSettings?.addressLine2?.show,
21937
- addressLine2Required: validation?.predefined?.multilineAddressOptions?.fields?.addressLine2?.required
21938
- };
21939
- };
21940
- var DateInputMapper = (props) => {
21941
- const { hidePlaceholder, validation } = props;
21942
- return {
21943
- ...props,
21944
- ...BaseMapper(props),
21945
- ...AcceptedDatesMapper(validation),
21946
- showPlaceholder: hidePlaceholder === void 0 ? true : !hidePlaceholder
21947
- };
21948
- };
21949
- var DatePickerMapper = (props) => {
21950
- const { validation } = props;
21951
- return {
21952
- ...props,
21953
- ...BaseMapper(props),
21954
- ...AcceptedDatesMapper(validation)
21955
- };
21956
- };
21957
- var DateTimeInputMapper = (props) => {
21958
- const { hidePlaceholder, validation } = props;
21959
- return {
21960
- ...props,
21961
- ...BaseMapper(props),
21962
- ...AcceptedDatesMapper(validation),
21963
- showPlaceholder: hidePlaceholder === void 0 ? true : !hidePlaceholder
21964
- };
21965
- };
21966
- var FileUploadMapper = (props) => {
21967
- const { valueSliderLimit, uploadFileFormats } = props;
21968
- return {
21969
- ...props,
21970
- ...BaseMapper(props),
21971
- maxFiles: valueSliderLimit,
21972
- allowedFileFormats: uploadFileFormats
21973
- };
21974
- };
21975
- var NumberInputMapper = (props) => BaseMapper(props);
21976
- var CheckboxMapper = (props) => ErrorMapper(props);
21977
- var SignatureMapper = (props) => {
21978
- const { uploadEnabled } = props;
21979
- return {
21980
- ...props,
21981
- ...BaseMapper(props),
21982
- imageUploadEnabled: uploadEnabled
21983
- };
21984
- };
21985
- var RatingInputMapper = (props) => BaseMapper(props);
21986
- var RadioGroupMapper = (props) => {
21987
- return {
21988
- ...props,
21989
- ...BaseMapper(props),
21990
- ...CustomOptionMapper(props)
21991
- };
21992
- };
21993
- var CheckboxGroupMapper = (props) => {
21994
- const { validation } = props;
21995
- return {
21996
- ...props,
21997
- ...BaseMapper(props),
21998
- ...CustomOptionMapper(props),
21999
- ...MinMaxItemsMapper(validation)
22000
- };
22001
- };
22002
- var DropdownMapper = (props) => BaseMapper(props);
22003
- var TagsMapper = (props) => {
22004
- const { validation } = props;
22005
- return {
22006
- ...props,
22007
- ...BaseMapper(props),
22008
- ...CustomOptionMapper(props),
22009
- ...MinMaxItemsMapper(validation)
22010
- };
22011
- };
22012
- var TimeInputMapper = (props) => {
22013
- const { hidePlaceholder } = props;
22014
- return {
22015
- ...props,
22016
- ...BaseMapper(props),
22017
- showPlaceholder: hidePlaceholder === void 0 ? true : !hidePlaceholder
22018
- };
22019
- };
22020
- var TextMapper = (props) => props;
22021
- var SubmitButtonMapper = (props) => {
22022
- return {
22023
- ...props
22024
- };
22025
- };
22026
- var ProductListMapper = (props) => {
22027
- return {
22028
- ...props,
22029
- ...BaseMapper(props),
22030
- ...MinMaxItemsMapper(props?.validation)
22031
- };
22032
- };
22033
- var FixedPaymentMapper = (props) => {
22034
- const { validation, hideLabel } = props;
22035
- const paymentValidation = validation?.predefined?.paymentOptions?.products?.[0];
22036
- const fixedPaymentValue = paymentValidation?.fixedPriceOptions?.price;
22037
- return {
22038
- ...props,
22039
- showLabel: hideLabel === void 0 ? true : !hideLabel,
22040
- amount: fixedPaymentValue
22041
- };
22042
- };
22043
- var PaymentInputMapper = (props) => {
22044
- const { validation } = props;
22045
- return {
22046
- ...props,
22047
- ...BaseMapper(props),
22048
- ...MinMaxValuesMapper(validation)
22049
- };
22050
- };
22051
- var DonationMapper = (props) => {
22052
- return {
22053
- ...props,
22054
- ...BaseMapper(props),
22055
- ...CustomOptionMapper(props)
22056
- };
22057
- };
22058
- var AppointmentMapper = (props) => BaseMapper(props);
22059
- var ImageChoiceMapper = (props) => {
22060
- const { isMultipleAnswers, choiceImageResize } = props;
22061
- return {
22062
- ...props,
22063
- ...BaseMapper(props),
22064
- multiple: isMultipleAnswers,
22065
- imageAspectRatio: choiceImageResize
22066
- };
22067
- };
22068
- var FIELD_PROP_MAP = {
22069
- TEXT_INPUT: TextFieldMapper,
22070
- TEXT_AREA: TextAreaMapper,
22071
- PHONE_INPUT: PhoneInputMapper,
22072
- MULTILINE_ADDRESS: MultilineAddressMapper,
22073
- DATE_INPUT: DateInputMapper,
22074
- DATE_PICKER: DatePickerMapper,
22075
- DATE_TIME_INPUT: DateTimeInputMapper,
22076
- FILE_UPLOAD: FileUploadMapper,
22077
- NUMBER_INPUT: NumberInputMapper,
22078
- CHECKBOX: CheckboxMapper,
22079
- SIGNATURE: SignatureMapper,
22080
- RATING_INPUT: RatingInputMapper,
22081
- RADIO_GROUP: RadioGroupMapper,
22082
- CHECKBOX_GROUP: CheckboxGroupMapper,
22083
- DROPDOWN: DropdownMapper,
22084
- TAGS: TagsMapper,
22085
- TIME_INPUT: TimeInputMapper,
22086
- TEXT: TextMapper,
22087
- SUBMIT_BUTTON: SubmitButtonMapper,
22088
- PRODUCT_LIST: ProductListMapper,
22089
- FIXED_PAYMENT: FixedPaymentMapper,
22090
- PAYMENT_INPUT: PaymentInputMapper,
22091
- DONATION: DonationMapper,
22092
- APPOINTMENT: AppointmentMapper,
22093
- IMAGE_CHOICE: ImageChoiceMapper,
22094
- // fields that have not been implemented
22095
- "": () => ({})
22096
- };
22097
-
22098
22326
  // src/mappers/field-type-map.ts
22099
22327
  var FIELD_TYPE_MAP = {
22100
22328
  // CONTACTS_FIELD_TYPES
@@ -22195,21 +22423,12 @@ var FIELD_TYPE_MAP = {
22195
22423
  SUBMIT_BUTTON: "SUBMIT_BUTTON",
22196
22424
  SERVICES_MULTI_CHOICE: "CHECKBOX_GROUP",
22197
22425
  // fields that have not been implemented
22198
- NESTED_FORM: "",
22199
- IDENTITY_PASSWORD: "",
22200
- BOOKINGS_LOGIN_BAR: ""
22426
+ NESTED_FORM: "TEXT_INPUT",
22427
+ IDENTITY_PASSWORD: "TEXT_INPUT",
22428
+ BOOKINGS_LOGIN_BAR: "TEXT_INPUT"
22201
22429
  };
22202
- var mapFieldProps = (fields, mappers) => Object.fromEntries(
22203
- Object.entries(fields).map(([fieldType, Component]) => [
22204
- fieldType,
22205
- mappers[fieldType] ? (props) => /* @__PURE__ */ jsxRuntime.jsx(
22206
- Component,
22207
- {
22208
- ...mappers[fieldType](props)
22209
- }
22210
- ) : Component
22211
- ])
22212
- );
22430
+
22431
+ // src/utils/mappers.tsx
22213
22432
  var mapFieldTypes = (fields, typeMap) => ({
22214
22433
  ...fields,
22215
22434
  ...Object.fromEntries(
@@ -22235,13 +22454,9 @@ var useForm3 = ({
22235
22454
  console.log("upload file not implemented");
22236
22455
  }
22237
22456
  };
22238
- const mappedFieldProps = React14.useMemo(
22239
- () => mapFieldProps(fields, FIELD_PROP_MAP),
22240
- [fields]
22241
- );
22242
22457
  const mappedFieldTypes = React14.useMemo(
22243
- () => mapFieldTypes(mappedFieldProps, FIELD_TYPE_MAP),
22244
- [mappedFieldProps]
22458
+ () => mapFieldTypes(fields, FIELD_TYPE_MAP),
22459
+ [fields]
22245
22460
  );
22246
22461
  const { currentView, formFields } = useForm2({
22247
22462
  form,
@@ -22339,7 +22554,9 @@ async function createI18n(locale) {
22339
22554
  lng: locale,
22340
22555
  fallbackLng: "en",
22341
22556
  interpolation: {
22342
- escapeValue: false
22557
+ escapeValue: false,
22558
+ prefix: "{",
22559
+ suffix: "}"
22343
22560
  },
22344
22561
  keySeparator: false,
22345
22562
  nsSeparator: ":",
@@ -22401,6 +22618,7 @@ var FormProvider = ({
22401
22618
  */
22402
22619
 
22403
22620
  exports.FormProvider = FormProvider;
22621
+ exports.useFieldProps = useFieldProps;
22404
22622
  exports.useForm = useForm3;
22405
22623
  //# sourceMappingURL=index.cjs.map
22406
22624
  //# sourceMappingURL=index.cjs.map