@itcase/forms 1.1.54 → 1.1.56

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.
@@ -5,40 +5,38 @@ var React = require('react');
5
5
  var finalForm = require('final-form');
6
6
  var reactFinalForm = require('react-final-form');
7
7
  var clsx = require('clsx');
8
- var Checkbox = require('@itcase/ui/components/Checkbox');
8
+ var Checkbox = require('@itcase/ui-web/components/Checkbox');
9
9
  var camelCase = require('lodash/camelCase');
10
10
  var snakeCase = require('lodash/snakeCase');
11
- var Divider = require('@itcase/ui/components/Divider');
12
- var Text = require('@itcase/ui/components/Text');
13
- var useDeviceTargetClass = require('@itcase/ui/hooks/useDeviceTargetClass');
14
- var useStyles = require('@itcase/ui/hooks/useStyles');
15
- var Chips = require('@itcase/ui/components/Chips');
16
- var Choice = require('@itcase/ui/components/Choice');
17
- var Code = require('@itcase/ui/components/Code');
18
- var Icon = require('@itcase/ui/components/Icon');
19
- var Dadata = require('@itcase/ui/components/Dadata');
20
- var DatePicker = require('@itcase/ui/components/DatePicker');
21
- var useDevicePropsGenerator = require('@itcase/ui/hooks/useDevicePropsGenerator');
11
+ var Divider = require('@itcase/ui-web/components/Divider');
12
+ var Text = require('@itcase/ui-web/components/Text');
13
+ var hooks = require('@itcase/ui-core/hooks');
22
14
  var axios = require('axios');
15
+ var createDecorator = require('final-form-focus');
16
+ var Chips = require('@itcase/ui-web/components/Chips');
17
+ var Choice = require('@itcase/ui-web/components/Choice');
18
+ var Code = require('@itcase/ui-web/components/Code');
19
+ var Icon = require('@itcase/ui-web/components/Icon');
20
+ var Dadata = require('@itcase/ui-web/components/Dadata');
21
+ var DatePicker = require('@itcase/ui-web/components/DatePicker');
23
22
  var fileSelector = require('file-selector');
24
23
  var castArray = require('lodash/castArray');
25
24
  var reactDropzone = require('react-dropzone');
26
25
  var common = require('@itcase/common');
27
- var Button = require('@itcase/ui/components/Button');
28
- var Loader = require('@itcase/ui/components/Loader');
29
- var Title = require('@itcase/ui/components/Title');
30
- var Input = require('@itcase/ui/components/Input');
31
- var InputNumber = require('@itcase/ui/components/InputNumber');
26
+ var Button = require('@itcase/ui-web/components/Button');
27
+ var Loader = require('@itcase/ui-web/components/Loader');
28
+ var Title = require('@itcase/ui-web/components/Title');
29
+ var Input = require('@itcase/ui-web/components/Input');
30
+ var InputNumber = require('@itcase/ui-web/components/InputNumber');
32
31
  var reactImask = require('react-imask');
33
- var InputPassword = require('@itcase/ui/components/InputPassword');
34
- var Radio = require('@itcase/ui/components/Radio');
35
- var Segmented = require('@itcase/ui/components/Segmented');
36
- var Select = require('@itcase/ui/components/Select');
37
- var Switch = require('@itcase/ui/components/Switch');
38
- var Textarea = require('@itcase/ui/components/Textarea');
39
- var Group = require('@itcase/ui/components/Group');
40
- var Notification = require('@itcase/ui/components/Notification');
41
- var createDecorator = require('final-form-focus');
32
+ var InputPassword = require('@itcase/ui-web/components/InputPassword');
33
+ var Radio = require('@itcase/ui-web/components/Radio');
34
+ var Segmented = require('@itcase/ui-web/components/Segmented');
35
+ var Select = require('@itcase/ui-web/components/Select');
36
+ var Switch = require('@itcase/ui-web/components/Switch');
37
+ var Textarea = require('@itcase/ui-web/components/Textarea');
38
+ var Group = require('@itcase/ui-web/components/Group');
39
+ var Notification = require('@itcase/ui-web/components/Notification');
42
40
 
43
41
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
44
42
 
@@ -47,8 +45,8 @@ var clsx__default = /*#__PURE__*/_interopDefault(clsx);
47
45
  var camelCase__default = /*#__PURE__*/_interopDefault(camelCase);
48
46
  var snakeCase__default = /*#__PURE__*/_interopDefault(snakeCase);
49
47
  var axios__default = /*#__PURE__*/_interopDefault(axios);
50
- var castArray__default = /*#__PURE__*/_interopDefault(castArray);
51
48
  var createDecorator__default = /*#__PURE__*/_interopDefault(createDecorator);
49
+ var castArray__default = /*#__PURE__*/_interopDefault(castArray);
52
50
 
53
51
  var phoneValidation = function phoneValidation(value) {
54
52
  if (!value) {
@@ -445,8 +443,8 @@ var defaultFieldProps = {
445
443
  direction: 'vertical',
446
444
  labelTextColor: 'surfaceTextPrimary',
447
445
  messageTextColor: 'surfaceTextSecondary',
448
- errorMessageTextColor: 'errorTextSecondary',
449
446
  dividerFill: 'errorPrimary',
447
+ errorMessageTextColor: 'errorTextSecondary',
450
448
  helpTextColor: 'surfaceTextQuaternary',
451
449
  requiredMessageTextColor: 'warningTextSecondary',
452
450
  showMessage: true
@@ -487,6 +485,7 @@ var defaultFieldSizeXL = Object.assign({
487
485
  function FieldWrapperBase(props) {
488
486
  var id = props.id,
489
487
  className = props.className,
488
+ dataTestId = props.dataTestId,
490
489
  dataTour = props.dataTour,
491
490
  type = props.type,
492
491
  label = props.label,
@@ -538,47 +537,47 @@ function FieldWrapperBase(props) {
538
537
  var fieldClass = React.useMemo(function () {
539
538
  return clsx__default.default(fieldClassName, isValidState && fieldClassName + "_state_success", metaActive && fieldClassName + "_state_focus", inputValue && fieldClassName + "_state_filled", isDisabled && fieldClassName + "_state_disabled", isErrorState && fieldClassName + "_state_" + errorKey);
540
539
  }, [fieldClassName, isErrorState, isValidState, metaActive, inputValue, isDisabled, metaError]);
541
- var sizeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
540
+ var sizeClass = hooks.useDeviceTargetClass(props, {
542
541
  prefix: 'form-field_size_',
543
542
  propsKey: 'size'
544
543
  });
545
- var fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
544
+ var fillClass = hooks.useDeviceTargetClass(props, {
546
545
  prefix: 'fill_',
547
546
  propsKey: 'fill'
548
547
  });
549
- var inputFillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
548
+ var inputFillClass = hooks.useDeviceTargetClass(props, {
550
549
  prefix: 'fill_',
551
550
  propsKey: 'inputFill'
552
551
  });
553
- var shapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
552
+ var shapeClass = hooks.useDeviceTargetClass(props, {
554
553
  prefix: 'form-field_shape_',
555
554
  propsKey: 'shape'
556
555
  });
557
- var inputShapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
556
+ var inputShapeClass = hooks.useDeviceTargetClass(props, {
558
557
  prefix: 'form-field__item-value_shape_',
559
558
  propsKey: 'inputShape'
560
559
  });
561
- var directionClass = useDeviceTargetClass.useDeviceTargetClass(props, {
560
+ var directionClass = hooks.useDeviceTargetClass(props, {
562
561
  prefix: 'direction_',
563
562
  propsKey: 'direction'
564
563
  });
565
- var widthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
564
+ var widthClass = hooks.useDeviceTargetClass(props, {
566
565
  prefix: 'width_',
567
566
  propsKey: 'width'
568
567
  });
569
- var _useStyles = useStyles.useStyles(props),
568
+ var _useStyles = hooks.useStyles(props),
570
569
  formFieldStyles = _useStyles.styles;
571
570
  var errorTextSize = props[errorKey + "MessageTextSize"];
572
571
  var errorTextColor = props[errorKey + "MessageTextColor"];
573
572
  var errorTextWeight = props[errorKey + "MessageTextWeight"];
574
573
  return /*#__PURE__*/React__default.default.createElement(Tag, {
575
574
  className: clsx__default.default(formFieldClass, 'form__item', 'form-field', type && "form-field_type_" + type, sizeClass, fillClass, shapeClass, isDisabled && "form-field_state_disabled", isHidden && "form-field_state_hidden", directionClass, widthClass),
576
- "data-testid": inputName + "-field",
575
+ "data-testid": dataTestId,
577
576
  "data-tour": dataTour,
578
577
  style: formFieldStyles
579
578
  }, before, (label || labelHidden) && /*#__PURE__*/React__default.default.createElement("div", {
580
579
  className: clsx__default.default('form-field__label'),
581
- "data-testid": inputName + "-field-label",
580
+ "data-testid": dataTestId + "Label",
582
581
  htmlFor: id
583
582
  }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
584
583
  size: labelTextSize,
@@ -588,7 +587,7 @@ function FieldWrapperBase(props) {
588
587
  sizeTablet: labelTextSizeTablet
589
588
  }, label, labelHidden && "\xA0")), desc && /*#__PURE__*/React__default.default.createElement("div", {
590
589
  className: "form-field__desc",
591
- "data-testid": inputName + "-field-desc"
590
+ "data-testid": dataTestId + "Desc"
592
591
  }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
593
592
  size: descTextSize,
594
593
  textColor: descTextColor,
@@ -609,20 +608,20 @@ function FieldWrapperBase(props) {
609
608
  }, isErrorState && errorMessage && /*#__PURE__*/React__default.default.createElement(Text.Text, {
610
609
  id: inputName + "-error",
611
610
  className: "form-field__message-item form-field__message-item_type-error",
612
- dataTestId: inputName + "-field-message-error",
611
+ dataTestId: dataTestId + "MessageError",
613
612
  size: errorTextSize,
614
613
  textColor: errorTextColor,
615
614
  textWeight: errorTextWeight
616
615
  }, errorMessage), Boolean(helpText) && (!isErrorState || !errorMessage) && /*#__PURE__*/React__default.default.createElement(Text.Text, {
617
616
  className: "form-field__message-item form-field__message-item_type_help-text",
618
- dataTestId: inputName + "-field-message-help-text",
617
+ dataTestId: dataTestId + "MessageHelpText",
619
618
  size: helpTextSize,
620
619
  textColor: isValidState ? helpTextColorSuccess : helpTextColor,
621
620
  textWeight: helpTextWeight,
622
621
  sizeMobile: helpTextSizeMobile
623
622
  }, helpText), (!isErrorState && !helpText || isErrorState && !helpText && !errorMessage) && /*#__PURE__*/React__default.default.createElement(Text.Text, {
624
623
  className: "form-field__message-item form-field__message-item_type_help-text",
625
- dataTestId: inputName + "field-message-help-text",
624
+ dataTestId: dataTestId + "MessageHelpText",
626
625
  size: messageTextSize
627
626
  }, "\xA0")), after);
628
627
  }
@@ -639,16 +638,150 @@ function FieldWrapper(props) {
639
638
  return /*#__PURE__*/React__default.default.createElement(FieldWrapperBase, props);
640
639
  }
641
640
 
641
+ var focusOnError = function focusOnError(formElementsList, errors) {
642
+ var selectsIds = Object.keys(errors).map(function (fieldName) {
643
+ if (fieldName === finalForm.FORM_ERROR) {
644
+ // TODO: get from somewhere
645
+ return 'notification__item_status_error';
646
+ }
647
+ return "react-select-id_" + fieldName + "-input";
648
+ });
649
+ var errorFieldElement = formElementsList.find(function (element) {
650
+ if (element.name) {
651
+ return finalForm.getIn(errors, element.name);
652
+ } else {
653
+ return selectsIds.includes(element.id);
654
+ }
655
+ });
656
+ var errorsList = Object.keys(errors);
657
+ if (!errorFieldElement && errorsList.length) {
658
+ var errorElement;
659
+ try {
660
+ var fieldName = errorsList[0];
661
+ if (fieldName === finalForm.FORM_ERROR) {
662
+ errorElement = document.querySelector('notification__item_status_error');
663
+ } else {
664
+ errorElement = document.querySelector("#" + fieldName + "-error");
665
+ if (!errorElement) {
666
+ errorElement = document.querySelector("#id_" + fieldName);
667
+ }
668
+ }
669
+ } catch (err) {
670
+ console.warn(err);
671
+ }
672
+ if (errorElement) {
673
+ errorElement.scrollIntoView({
674
+ block: 'center'
675
+ }); // , behavior: 'smooth'
676
+ }
677
+ }
678
+
679
+ // The field is covered by the header because header is "sticky",
680
+ // that's we scroll manually so that the field falls into the center of the visible area
681
+ if (errorFieldElement) {
682
+ errorFieldElement.scrollIntoView({
683
+ block: 'center'
684
+ });
685
+ }
686
+ return null;
687
+ };
688
+ var focusOnErrorDecorator = createDecorator__default.default(null, focusOnError);
689
+ var setErrorsMutator = function setErrorsMutator(args, state) {
690
+ var fieldName = args[0],
691
+ data = args[1];
692
+ var submitError = data.submitError;
693
+ var fieldError = data.error;
694
+ if (fieldName === 'non_field_errors' || fieldName === finalForm.FORM_ERROR) {
695
+ // state.formState.invalid = true
696
+ // state.formState.valid = false
697
+ state.formState.error = fieldError;
698
+ state.formState.submitError = submitError;
699
+ } else if (fieldName in state.fields) {
700
+ state.fields[fieldName].touched = true;
701
+
702
+ // TODO: make clear error not by empty string check
703
+ if (fieldError || fieldError === '') {
704
+ var _Object$assign;
705
+ var errorsState = Object.assign({}, state.formState.errors, (_Object$assign = {}, _Object$assign[fieldName] = fieldError, _Object$assign));
706
+ state.fields[fieldName].error = fieldError;
707
+ state.formState.errors = errorsState;
708
+ }
709
+
710
+ // TODO: make clear error not by empty string check
711
+ if (submitError || submitError === '') {
712
+ var _Object$assign2;
713
+ var submitErrorsState = Object.assign({}, state.formState.submitErrors, (_Object$assign2 = {}, _Object$assign2[fieldName] = submitError, _Object$assign2));
714
+ state.fields[fieldName].submitFailed = true;
715
+ state.fields[fieldName].submitSucceeded = false;
716
+ state.fields[fieldName].submitError = submitError;
717
+ state.formState.submitErrors = submitErrorsState;
718
+ state.formState.submitFailed = true;
719
+ state.formState.submitSucceeded = false;
720
+ state.formState.lastSubmittedValues = state.formState.values;
721
+ }
722
+ }
723
+ };
724
+ var sendFormDataToServer = /*#__PURE__*/function () {
725
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(url, data) {
726
+ var response, _error$response, _error$response2, formErrors, _t;
727
+ return _regenerator().w(function (_context) {
728
+ while (1) switch (_context.p = _context.n) {
729
+ case 0:
730
+ _context.p = 0;
731
+ _context.n = 1;
732
+ return axios__default.default({
733
+ url: url,
734
+ method: 'POST',
735
+ data: data
736
+ });
737
+ case 1:
738
+ response = _context.v;
739
+ return _context.a(2, {
740
+ response: response,
741
+ success: true
742
+ });
743
+ case 2:
744
+ _context.p = 2;
745
+ _t = _context.v;
746
+ formErrors = {};
747
+ if (typeof ((_error$response = _t.response) == null ? void 0 : _error$response.data) === 'string') {
748
+ formErrors[finalForm.FORM_ERROR] = 'Something went wrong';
749
+ }
750
+ if (typeof ((_error$response2 = _t.response) == null ? void 0 : _error$response2.data) === 'object') {
751
+ Object.entries(_t.response.data).forEach(function (_ref2) {
752
+ var fieldName = _ref2[0],
753
+ errorsList = _ref2[1];
754
+ formErrors[fieldName] = errorsList[0];
755
+ });
756
+ }
757
+ return _context.a(2, {
758
+ error: _t,
759
+ formErrors: formErrors,
760
+ success: false
761
+ });
762
+ }
763
+ }, _callee, null, [[0, 2]]);
764
+ }));
765
+ return function sendFormDataToServer(_x, _x2) {
766
+ return _ref.apply(this, arguments);
767
+ };
768
+ }();
769
+ var createDataTestIdField = function createDataTestIdField(fieldname, dataTestId) {
770
+ var dataTestIdField = dataTestId + fieldname[0].toUpperCase() + fieldname.slice(1) + 'Field';
771
+ return dataTestIdField;
772
+ };
773
+
642
774
  var FormFieldCheckbox = /*#__PURE__*/React__default.default.memo(function FormFieldCheckbox(props) {
643
- var name = props.name,
775
+ var dataTestId = props.dataTestId,
776
+ name = props.name,
644
777
  initialValue = props.initialValue,
645
- isDisabled = props.isDisabled,
646
778
  classNameGroupItem = props.classNameGroupItem,
647
779
  _props$fieldProps = props.fieldProps,
648
780
  fieldProps = _props$fieldProps === void 0 ? {} : _props$fieldProps,
649
781
  _props$inputProps = props.inputProps,
650
782
  inputProps = _props$inputProps === void 0 ? {} : _props$inputProps,
651
783
  showMessage = props.showMessage,
784
+ isDisabled = props.isDisabled,
652
785
  isRequired = props.isRequired,
653
786
  onChange = props.onChange;
654
787
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
@@ -678,35 +811,37 @@ var FormFieldCheckbox = /*#__PURE__*/React__default.default.memo(function FormFi
678
811
  }),
679
812
  errorKey = _useFieldValidationSt.errorKey,
680
813
  errorMessage = _useFieldValidationSt.errorMessage,
681
- isErrorState = _useFieldValidationSt.isErrorState,
682
814
  successKey = _useFieldValidationSt.successKey,
815
+ isErrorState = _useFieldValidationSt.isErrorState,
683
816
  isValidState = _useFieldValidationSt.isValidState;
684
817
  var updatedInputProps = useValidationAppearanceInputProps({
685
818
  inputProps: inputProps,
686
819
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
687
820
  });
821
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
688
822
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
689
823
  className: clsx__default.default('form-field-checkbox', 'form__item_checkbox', classNameGroupItem),
824
+ dataTestId: dataTestIdField,
690
825
  errorKey: errorKey,
691
826
  errorMessage: errorMessage,
692
- isErrorState: isErrorState,
693
- metaError: meta.error,
694
- isDisabled: isDisabled,
695
827
  fieldClassName: "form-checkbox",
696
828
  inputName: input.name,
697
829
  inputValue: input.checked,
698
830
  metaActive: meta.active,
831
+ metaError: meta.error,
699
832
  showMessage: showMessage,
700
833
  tag: "label",
834
+ isDisabled: isDisabled,
835
+ isErrorState: isErrorState,
701
836
  isRequired: isRequired,
702
837
  isValidState: isValidState
703
838
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(Checkbox.Checkbox, Object.assign({
704
839
  type: "checkbox",
705
840
  name: input.name,
706
- isDisabled: isDisabled,
707
841
  autoComplete: "nope",
708
842
  checked: input.checked,
709
843
  isActive: input.checked,
844
+ isDisabled: isDisabled,
710
845
  onBlur: input.onBlur,
711
846
  onChange: onChangeField,
712
847
  onFocus: input.onFocus
@@ -727,7 +862,8 @@ var defaultChipsProps = {
727
862
  };
728
863
 
729
864
  function FormFieldChips(props) {
730
- var name = props.name,
865
+ var dataTestId = props.dataTestId,
866
+ name = props.name,
731
867
  initialValue = props.initialValue,
732
868
  classNameGroupItem = props.classNameGroupItem,
733
869
  emptyMessage = props.emptyMessage,
@@ -790,8 +926,10 @@ function FormFieldChips(props) {
790
926
  }
791
927
  return emptyOptionsList;
792
928
  }, [input.value]);
929
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
793
930
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
794
931
  className: clsx__default.default('form-field_chips', 'form__item_chips', classNameGroupItem),
932
+ dataTestId: dataTestIdField,
795
933
  errorKey: errorKey,
796
934
  errorMessage: errorMessage,
797
935
  fieldClassName: "form-chips",
@@ -840,17 +978,18 @@ var defaultChoiceProps = {
840
978
  };
841
979
 
842
980
  var FormFieldChoice = /*#__PURE__*/React__default.default.memo(function FormFieldChoice(props) {
843
- var name = props.name,
981
+ var dataTestId = props.dataTestId,
982
+ name = props.name,
844
983
  initialValue = props.initialValue,
845
984
  label = props.label,
846
985
  messageType = props.messageType,
847
- isDisabled = props.isDisabled,
848
986
  classNameGroupItem = props.classNameGroupItem,
849
987
  fieldProps = props.fieldProps,
850
988
  inputProps = props.inputProps,
851
989
  options = props.options,
852
990
  placeholder = props.placeholder,
853
991
  showMessage = props.showMessage,
992
+ isDisabled = props.isDisabled,
854
993
  isCheckbox = props.isCheckbox,
855
994
  isRequired = props.isRequired,
856
995
  onChange = props.onChange;
@@ -863,8 +1002,8 @@ var FormFieldChoice = /*#__PURE__*/React__default.default.memo(function FormFiel
863
1002
  }
864
1003
  }, [change, onChange]);
865
1004
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
866
- initialValue: initialValue,
867
- name: name
1005
+ name: name,
1006
+ initialValue: initialValue
868
1007
  }, function Render(_ref) {
869
1008
  var input = _ref.input,
870
1009
  meta = _ref.meta;
@@ -876,8 +1015,8 @@ var FormFieldChoice = /*#__PURE__*/React__default.default.memo(function FormFiel
876
1015
  */
877
1016
  var activeOption = React.useMemo(function () {
878
1017
  var emptyOption = {
879
- value: null,
880
- label: null
1018
+ label: null,
1019
+ value: null
881
1020
  };
882
1021
  if (input.value) {
883
1022
  var currentOption = options.find(function (option) {
@@ -894,40 +1033,42 @@ var FormFieldChoice = /*#__PURE__*/React__default.default.memo(function FormFiel
894
1033
  }),
895
1034
  errorKey = _useFieldValidationSt.errorKey,
896
1035
  errorMessage = _useFieldValidationSt.errorMessage,
897
- isErrorState = _useFieldValidationSt.isErrorState,
898
1036
  successKey = _useFieldValidationSt.successKey,
1037
+ isErrorState = _useFieldValidationSt.isErrorState,
899
1038
  isValidState = _useFieldValidationSt.isValidState;
900
1039
  var updatedInputProps = useValidationAppearanceInputProps({
901
1040
  inputProps: inputProps,
902
1041
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
903
1042
  });
1043
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
904
1044
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
905
1045
  className: clsx__default.default('form-field_choice', 'form__item_choice', classNameGroupItem),
1046
+ dataTestId: dataTestIdField,
906
1047
  label: label,
907
1048
  messageType: messageType,
908
1049
  errorKey: errorKey,
909
1050
  errorMessage: errorMessage,
910
- isErrorState: isErrorState,
911
- metaError: meta.error,
912
- isDisabled: isDisabled,
913
1051
  fieldClassName: "form-choice",
914
1052
  inputName: input.name,
915
1053
  inputValue: input.value || [],
916
1054
  metaActive: meta.active,
1055
+ metaError: meta.error,
917
1056
  showMessage: showMessage,
1057
+ isDisabled: isDisabled,
1058
+ isErrorState: isErrorState,
918
1059
  isRequired: isRequired,
919
1060
  isValidState: isValidState
920
1061
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(Choice.Choice, Object.assign({
921
1062
  className: clsx__default.default(meta.active && 'form-choice_state_focus', meta.error && meta.touched && "form-choice_state_" + errorKey),
922
1063
  name: input.name,
923
- isDisabled: isDisabled,
924
1064
  active: activeOption,
925
1065
  inputValue: input.value || [],
926
1066
  options: options,
927
1067
  placeholder: placeholder,
928
- setActiveSegment: setActiveSegment,
1068
+ isDisabled: isDisabled,
929
1069
  isCheckbox: isCheckbox,
930
- isRequired: isRequired
1070
+ isRequired: isRequired,
1071
+ setActiveSegment: setActiveSegment
931
1072
  }, updatedInputProps)));
932
1073
  });
933
1074
  });
@@ -942,17 +1083,18 @@ var defaultCodeProps = {
942
1083
  };
943
1084
 
944
1085
  var FormFieldCode = /*#__PURE__*/React__default.default.memo(function FormFieldCode(props) {
945
- var name = props.name,
1086
+ var dataTestId = props.dataTestId,
1087
+ name = props.name,
946
1088
  initialValue = props.initialValue,
947
1089
  label = props.label,
948
1090
  messageType = props.messageType,
949
- isDisabled = props.isDisabled,
950
1091
  classNameGroupItem = props.classNameGroupItem,
951
1092
  _props$fieldProps = props.fieldProps,
952
1093
  fieldProps = _props$fieldProps === void 0 ? {} : _props$fieldProps,
953
1094
  _props$inputProps = props.inputProps,
954
1095
  inputProps = _props$inputProps === void 0 ? {} : _props$inputProps,
955
1096
  showMessage = props.showMessage,
1097
+ isDisabled = props.isDisabled,
956
1098
  isRequired = props.isRequired;
957
1099
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
958
1100
  name: name,
@@ -974,32 +1116,34 @@ var FormFieldCode = /*#__PURE__*/React__default.default.memo(function FormFieldC
974
1116
  }),
975
1117
  errorKey = _useFieldValidationSt.errorKey,
976
1118
  errorMessage = _useFieldValidationSt.errorMessage,
977
- isErrorState = _useFieldValidationSt.isErrorState,
978
1119
  successKey = _useFieldValidationSt.successKey,
1120
+ isErrorState = _useFieldValidationSt.isErrorState,
979
1121
  isValidState = _useFieldValidationSt.isValidState;
980
1122
  var updatedInputProps = useValidationAppearanceInputProps({
981
1123
  inputProps: inputProps,
982
1124
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
983
1125
  });
1126
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
984
1127
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
985
1128
  className: clsx__default.default('form-field-code', 'form__item_code', classNameGroupItem),
1129
+ dataTestId: dataTestIdField,
986
1130
  label: label,
987
1131
  messageType: messageType,
988
1132
  errorKey: errorKey,
989
1133
  errorMessage: errorMessage,
990
- isErrorState: isErrorState,
991
1134
  fieldClassName: 'form-code',
992
1135
  inputName: input.name,
993
1136
  inputValue: input.value,
994
1137
  metaActive: meta.active,
995
1138
  showMessage: showMessage,
1139
+ isErrorState: isErrorState,
996
1140
  isRequired: isRequired,
997
1141
  isValidState: isValidState
998
1142
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(Code.Code, Object.assign({
999
1143
  name: input.name,
1000
1144
  initialValue: input.value,
1001
- isDisabled: isDisabled,
1002
1145
  autoComplete: "nope",
1146
+ isDisabled: isDisabled,
1003
1147
  onBlur: input.onBlur,
1004
1148
  onChange: input.onChange,
1005
1149
  onFocus: input.onFocus
@@ -1008,24 +1152,25 @@ var FormFieldCode = /*#__PURE__*/React__default.default.memo(function FormFieldC
1008
1152
  });
1009
1153
 
1010
1154
  var FormFieldCustom = /*#__PURE__*/React__default.default.memo(function FormFieldCustom(props) {
1011
- var Component = props.Component,
1012
- isDisabled = props.isDisabled,
1013
- isRequired = props.isRequired,
1155
+ var dataTestId = props.dataTestId,
1014
1156
  name = props.name,
1015
1157
  initialValue = props.initialValue,
1016
- _props$fieldProps = props.fieldProps,
1017
- fieldProps = _props$fieldProps === void 0 ? {} : _props$fieldProps,
1018
1158
  classNameGroupItem = props.classNameGroupItem,
1019
- showMessage = props.showMessage,
1020
1159
  clearIcon = props.clearIcon,
1021
1160
  clearIconFill = props.clearIconFill,
1022
1161
  clearIconFillHover = props.clearIconFillHover,
1023
1162
  clearIconShape = props.clearIconShape,
1024
1163
  clearIconSize = props.clearIconSize,
1164
+ Component = props.Component,
1165
+ _props$fieldProps = props.fieldProps,
1166
+ fieldProps = _props$fieldProps === void 0 ? {} : _props$fieldProps,
1167
+ showMessage = props.showMessage,
1168
+ isDisabled = props.isDisabled,
1169
+ isRequired = props.isRequired,
1025
1170
  onClickClearIcon = props.onClickClearIcon;
1026
1171
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
1027
- initialValue: initialValue,
1028
- name: name
1172
+ name: name,
1173
+ initialValue: initialValue
1029
1174
  }, function Render(_ref) {
1030
1175
  var input = _ref.input,
1031
1176
  meta = _ref.meta;
@@ -1041,40 +1186,42 @@ var FormFieldCustom = /*#__PURE__*/React__default.default.memo(function FormFiel
1041
1186
  input: input,
1042
1187
  meta: meta
1043
1188
  }),
1044
- isErrorState = _useFieldValidationSt.isErrorState,
1045
- isValidState = _useFieldValidationSt.isValidState,
1046
1189
  errorKey = _useFieldValidationSt.errorKey,
1047
- errorMessage = _useFieldValidationSt.errorMessage;
1190
+ errorMessage = _useFieldValidationSt.errorMessage,
1191
+ isErrorState = _useFieldValidationSt.isErrorState,
1192
+ isValidState = _useFieldValidationSt.isValidState;
1048
1193
  var updatedInputProps = useValidationAppearanceInputProps({
1049
- validationStateKey: isErrorState ? errorKey : 'success',
1050
1194
  // For "Custom" field we pass all props. Can contain some special props, we don't known.
1051
- inputProps: props
1195
+ inputProps: props,
1196
+ validationStateKey: isErrorState ? errorKey : 'success'
1052
1197
  });
1198
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
1053
1199
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
1054
1200
  className: clsx__default.default('form-field_custom', 'form__item_custom', classNameGroupItem),
1201
+ dataTestId: dataTestIdField,
1055
1202
  errorKey: errorKey,
1056
1203
  errorMessage: errorMessage,
1057
1204
  fieldClassName: 'form-custom',
1058
1205
  inputName: input.name,
1059
1206
  inputValue: input.value,
1207
+ metaActive: meta.active,
1208
+ metaError: meta.error,
1209
+ showMessage: showMessage,
1060
1210
  isDisabled: isDisabled,
1061
1211
  isErrorState: isErrorState,
1062
1212
  isRequired: isRequired,
1063
- isValidState: isValidState,
1064
- metaActive: meta.active,
1065
- metaError: meta.error,
1066
- showMessage: showMessage
1213
+ isValidState: isValidState
1067
1214
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(Component, Object.assign({}, updatedInputProps, {
1068
1215
  input: input,
1069
- isDisabled: isDisabled,
1070
- meta: meta
1216
+ meta: meta,
1217
+ isDisabled: isDisabled
1071
1218
  })), clearIcon && /*#__PURE__*/React__default.default.createElement(Icon.Icon, {
1072
1219
  className: "form-field__icon",
1220
+ size: clearIconSize,
1073
1221
  iconFill: clearIconFill,
1074
1222
  iconFillHover: clearIconFillHover,
1075
1223
  imageSrc: clearIcon,
1076
1224
  shape: clearIconShape,
1077
- size: clearIconSize,
1078
1225
  SvgImage: clearIcon,
1079
1226
  onClick: onClickClearIcon
1080
1227
  }));
@@ -1093,15 +1240,16 @@ var defaultDadataInputProps = {
1093
1240
  };
1094
1241
 
1095
1242
  var FormFieldDadataInput = /*#__PURE__*/React__default.default.memo(function FormFieldDadataInput(props) {
1096
- var name = props.name,
1243
+ var dataTestId = props.dataTestId,
1244
+ name = props.name,
1097
1245
  initialValue = props.initialValue,
1098
- isDisabled = props.isDisabled,
1099
1246
  classNameGroupItem = props.classNameGroupItem,
1100
1247
  fieldProps = props.fieldProps,
1101
1248
  inputProps = props.inputProps,
1102
1249
  parse = props.parse,
1103
1250
  showMessage = props.showMessage,
1104
1251
  token = props.token,
1252
+ isDisabled = props.isDisabled,
1105
1253
  isRequired = props.isRequired,
1106
1254
  onDadataAutocomplete = props.onDadataAutocomplete;
1107
1255
  if (process.env.NODE_ENV === 'development') {
@@ -1136,25 +1284,27 @@ var FormFieldDadataInput = /*#__PURE__*/React__default.default.memo(function For
1136
1284
  }),
1137
1285
  errorKey = _useFieldValidationSt.errorKey,
1138
1286
  errorMessage = _useFieldValidationSt.errorMessage,
1139
- isErrorState = _useFieldValidationSt.isErrorState,
1140
1287
  successKey = _useFieldValidationSt.successKey,
1288
+ isErrorState = _useFieldValidationSt.isErrorState,
1141
1289
  isValidState = _useFieldValidationSt.isValidState;
1142
1290
  var updatedInputProps = useValidationAppearanceInputProps({
1143
1291
  inputProps: inputProps,
1144
1292
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
1145
1293
  });
1294
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
1146
1295
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
1147
1296
  className: clsx__default.default('form-field_input-dadata', 'form__item_input-dadata', classNameGroupItem),
1297
+ dataTestId: dataTestIdField,
1148
1298
  errorKey: errorKey,
1149
1299
  errorMessage: errorMessage,
1150
- isErrorState: isErrorState,
1151
- metaError: meta.error,
1152
- isDisabled: isDisabled,
1153
1300
  fieldClassName: "form-dadata",
1154
1301
  inputName: input.name,
1155
1302
  inputValue: input.value || '',
1156
1303
  metaActive: meta.active,
1304
+ metaError: meta.error,
1157
1305
  showMessage: showMessage,
1306
+ isDisabled: isDisabled,
1307
+ isErrorState: isErrorState,
1158
1308
  isRequired: isRequired,
1159
1309
  isValidState: isValidState
1160
1310
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(Dadata.Dadata
@@ -1167,8 +1317,8 @@ var FormFieldDadataInput = /*#__PURE__*/React__default.default.memo(function For
1167
1317
  input: input,
1168
1318
  inputProps: updatedInputProps,
1169
1319
  meta: meta,
1170
- setValue: onDadataAutocomplete,
1171
- token: token
1320
+ token: token,
1321
+ setValue: onDadataAutocomplete
1172
1322
  }));
1173
1323
  });
1174
1324
  });
@@ -1187,8 +1337,8 @@ var defaultDatepickerProps = {
1187
1337
  };
1188
1338
 
1189
1339
  function FormFieldDatePicker(props) {
1190
- var name = props.name,
1191
- isDisabled = props.isDisabled,
1340
+ var dataTestId = props.dataTestId,
1341
+ name = props.name,
1192
1342
  classNameGroupItem = props.classNameGroupItem,
1193
1343
  datePickerProps = props.datePickerProps,
1194
1344
  _props$fieldProps = props.fieldProps,
@@ -1196,6 +1346,7 @@ function FormFieldDatePicker(props) {
1196
1346
  _props$inputProps = props.inputProps,
1197
1347
  inputProps = _props$inputProps === void 0 ? {} : _props$inputProps,
1198
1348
  showMessage = props.showMessage,
1349
+ isDisabled = props.isDisabled,
1199
1350
  isRequired = props.isRequired,
1200
1351
  onChange = props.onChange;
1201
1352
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
@@ -1233,34 +1384,36 @@ function FormFieldDatePicker(props) {
1233
1384
  }),
1234
1385
  errorKey = _useFieldValidationSt.errorKey,
1235
1386
  errorMessage = _useFieldValidationSt.errorMessage,
1236
- isErrorState = _useFieldValidationSt.isErrorState,
1237
1387
  successKey = _useFieldValidationSt.successKey,
1388
+ isErrorState = _useFieldValidationSt.isErrorState,
1238
1389
  isValidState = _useFieldValidationSt.isValidState;
1239
1390
  var updatedInputProps = useValidationAppearanceInputProps({
1240
1391
  inputProps: inputProps,
1241
1392
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
1242
1393
  });
1394
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
1243
1395
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
1244
1396
  className: clsx__default.default('form-field_datepicker', 'form__item_datepicker', classNameGroupItem),
1397
+ dataTestId: dataTestIdField,
1245
1398
  errorKey: errorKey,
1246
1399
  errorMessage: errorMessage,
1247
- isErrorState: isErrorState,
1248
- metaError: meta.error,
1249
- isDisabled: isDisabled,
1250
1400
  fieldClassName: "form-datepicker",
1251
1401
  inputName: input.name,
1252
1402
  inputValue: input.value || '',
1253
1403
  metaActive: meta.active,
1404
+ metaError: meta.error,
1254
1405
  showMessage: showMessage,
1406
+ isDisabled: isDisabled,
1407
+ isErrorState: isErrorState,
1255
1408
  isRequired: isRequired,
1256
1409
  isValidState: isValidState
1257
1410
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(DatePicker.DatePickerInput, {
1258
1411
  name: input.name,
1259
- isDisabled: isDisabled,
1260
1412
  datePickerProps: datePickerProps,
1261
1413
  endValue: datePickerProps.selectsRange ? input.value.endDate : null,
1262
1414
  inputProps: updatedInputProps,
1263
1415
  value: datePickerProps.selectsRange ? input.value.startDate : input.value,
1416
+ isDisabled: isDisabled,
1264
1417
  onBlur: input.onBlur,
1265
1418
  onChange: onChangeField,
1266
1419
  onFocus: input.onFocus
@@ -1508,7 +1661,7 @@ var FileInputDropzone = /*#__PURE__*/React__default.default.memo(function FileIn
1508
1661
  });
1509
1662
  };
1510
1663
  }, []);
1511
- var propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props);
1664
+ var propsGenerator = hooks.useDevicePropsGenerator(props);
1512
1665
  var fillClass = propsGenerator.fillClass,
1513
1666
  fillHoverClass = propsGenerator.fillHoverClass,
1514
1667
  borderColorClass = propsGenerator.borderColorClass,
@@ -1734,25 +1887,26 @@ function setFileDataURL(file, resolve) {
1734
1887
 
1735
1888
  var FormFieldFileInput = /*#__PURE__*/React__default.default.memo(function FormFieldFileInput(props) {
1736
1889
  var className = props.className,
1890
+ dataTestId = props.dataTestId,
1737
1891
  name = props.name,
1738
1892
  width = props.width,
1739
1893
  maxFiles = props.maxFiles,
1740
1894
  maxSize = props.maxSize,
1741
1895
  label = props.label,
1742
- fileErrorText = props.fileErrorText,
1743
1896
  classNameGroupItem = props.classNameGroupItem,
1744
1897
  dropzoneProps = props.dropzoneProps,
1745
1898
  fieldProps = props.fieldProps,
1899
+ fileErrorText = props.fileErrorText,
1746
1900
  hintDescription = props.hintDescription,
1747
1901
  hintTitle = props.hintTitle,
1748
1902
  showFilename = props.showFilename,
1749
1903
  showMessage = props.showMessage,
1750
1904
  isPreviews = props.isPreviews,
1751
1905
  isRequired = props.isRequired,
1752
- onAddFiles = props.onAddFiles,
1753
1906
  onClickPreview = props.onClickPreview,
1907
+ onAddFiles = props.onAddFiles,
1754
1908
  onDeleteFile = props.onDeleteFile;
1755
- var propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props);
1909
+ var propsGenerator = hooks.useDevicePropsGenerator(props);
1756
1910
  var size = propsGenerator.size,
1757
1911
  fill = propsGenerator.fill,
1758
1912
  fillHover = propsGenerator.fillHover,
@@ -1813,25 +1967,27 @@ var FormFieldFileInput = /*#__PURE__*/React__default.default.memo(function FormF
1813
1967
  inputProps: props,
1814
1968
  validationStateKey: isErrorState ? errorKey : 'success'
1815
1969
  });
1970
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
1816
1971
 
1817
1972
  /** TODO:
1818
1973
  * REFACTOR PROPERTIES
1819
1974
  */
1820
1975
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
1821
1976
  className: clsx__default.default('form-field_type_dropzone', 'form__item_type_dropzone', classNameGroupItem),
1977
+ dataTestId: dataTestIdField,
1822
1978
  width: width,
1823
1979
  label: label,
1824
1980
  labelTextColor: labelTextColor,
1825
1981
  errorKey: errorKey,
1826
1982
  errorMessage: errorMessage,
1827
- isErrorState: isErrorState,
1828
- metaError: meta.error,
1829
1983
  fieldClassName: "form-dropzone",
1830
1984
  inputName: input.name,
1831
1985
  inputValue: input.value,
1832
1986
  metaActive: meta.active,
1987
+ metaError: meta.error,
1833
1988
  metaTouched: meta.touched,
1834
1989
  showMessage: showMessage,
1990
+ isErrorState: isErrorState,
1835
1991
  isRequired: isRequired,
1836
1992
  isValidState: isValidState
1837
1993
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(FileInputDropzone, {
@@ -1845,12 +2001,11 @@ var FormFieldFileInput = /*#__PURE__*/React__default.default.memo(function FormF
1845
2001
  borderColorHover: borderColorHover,
1846
2002
  borderType: borderType,
1847
2003
  borderWidth: borderWidth,
2004
+ dropzoneProps: dropzoneProps,
1848
2005
  errorMessageTextColor: errorMessageTextColor,
1849
2006
  errorMessageTextSize: errorMessageTextSize,
1850
2007
  errorMessageWeight: errorMessageTextWeight,
1851
2008
  fileErrorText: fileErrorText,
1852
- metaError: meta.error,
1853
- dropzoneProps: dropzoneProps,
1854
2009
  hintDescription: hintDescription,
1855
2010
  hintDescriptionTextColor: hintDescriptionTextColor,
1856
2011
  hintDescriptionTextSize: hintDescriptionTextSize,
@@ -1863,6 +2018,7 @@ var FormFieldFileInput = /*#__PURE__*/React__default.default.memo(function FormF
1863
2018
  hintTitleTextWrap: hintTitleTextWrap,
1864
2019
  inputName: input.name,
1865
2020
  inputValue: input.value,
2021
+ metaError: meta.error,
1866
2022
  metaTouched: meta.touched,
1867
2023
  removeThumbAppearance: removeThumbAppearance,
1868
2024
  removeThumbShape: removeThumbShape,
@@ -1881,8 +2037,8 @@ var FormFieldFileInput = /*#__PURE__*/React__default.default.memo(function FormF
1881
2037
  thumbNameTextWeight: thumbNameTextWeight,
1882
2038
  thumbNameTextWrap: thumbNameTextWrap,
1883
2039
  isPreviews: isPreviews,
1884
- onAddFiles: onAddFiles,
1885
2040
  onClickPreview: onClickPreview,
2041
+ onAddFiles: onAddFiles,
1886
2042
  onDeleteFile: onDeleteFile
1887
2043
  }));
1888
2044
  });
@@ -1901,8 +2057,9 @@ var defaultGroupProps = {
1901
2057
  };
1902
2058
 
1903
2059
  var FormBlockGroup = /*#__PURE__*/React__default.default.memo(function Group(props) {
1904
- var dataTour = props.dataTour,
1905
- className = props.className,
2060
+ var className = props.className,
2061
+ dataTestId = props.dataTestId,
2062
+ dataTour = props.dataTour,
1906
2063
  name = props.name,
1907
2064
  title = props.title,
1908
2065
  titleTextColor = props.titleTextColor,
@@ -1924,8 +2081,9 @@ var FormBlockGroup = /*#__PURE__*/React__default.default.memo(function Group(pro
1924
2081
  children = props.children;
1925
2082
 
1926
2083
  // @ts-expect-error
1927
- var _useStyles = useStyles.useStyles(props),
2084
+ var _useStyles = hooks.useStyles(props),
1928
2085
  styles = _useStyles.styles;
2086
+ var dataTestIdField = createDataTestIdField(name, dataTestId);
1929
2087
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
1930
2088
  name: name
1931
2089
  }, function Render(_ref) {
@@ -1952,6 +2110,7 @@ var FormBlockGroup = /*#__PURE__*/React__default.default.memo(function Group(pro
1952
2110
  });
1953
2111
  return /*#__PURE__*/React__default.default.createElement("div", {
1954
2112
  className: clsx__default.default('form__group', className, isHidden && 'form__group_hidden', column && "form__group_column_" + column),
2113
+ "data-test-id": dataTestIdField,
1955
2114
  "data-tour": dataTour,
1956
2115
  style: styles
1957
2116
  }, /*#__PURE__*/React__default.default.createElement("div", {
@@ -1959,12 +2118,14 @@ var FormBlockGroup = /*#__PURE__*/React__default.default.memo(function Group(pro
1959
2118
  }, before, title && /*#__PURE__*/React__default.default.createElement("div", {
1960
2119
  className: "form__group-title"
1961
2120
  }, /*#__PURE__*/React__default.default.createElement(Title.Title, {
2121
+ dataTestId: dataTestIdField + "Title",
1962
2122
  size: titleTextSize,
1963
2123
  textColor: titleTextColor,
1964
2124
  textWeight: titleTextWeight
1965
2125
  }, title)), label && /*#__PURE__*/React__default.default.createElement("div", {
1966
2126
  className: "form__group-label"
1967
2127
  }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
2128
+ dataTestId: dataTestIdField + "Label",
1968
2129
  size: labelTextSize,
1969
2130
  textColor: labelTextColor,
1970
2131
  textWeight: labelTextWeight
@@ -1973,11 +2134,13 @@ var FormBlockGroup = /*#__PURE__*/React__default.default.memo(function Group(pro
1973
2134
  }, children), after), showGroupMessage && /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, isErrorState && errorMessage && /*#__PURE__*/React__default.default.createElement(Text.Text, {
1974
2135
  id: name + "-error",
1975
2136
  className: "form__group-message form__group-message_type-" + errorKey,
2137
+ dataTestId: dataTestIdField + "MessageError",
1976
2138
  size: updatedProps.messageTextSize,
1977
2139
  textColor: updatedProps.messageTextColor,
1978
2140
  textWeight: updatedProps.messageTextWeight
1979
2141
  }, errorMessage), Boolean(message) && (!isErrorState || !errorMessage) && /*#__PURE__*/React__default.default.createElement(Text.Text, {
1980
2142
  className: "form__group-message",
2143
+ dataTestId: name + "GroupMessage",
1981
2144
  size: messageTextSize,
1982
2145
  textColor: messageTextColor,
1983
2146
  textWeight: messageTextWeight
@@ -2001,7 +2164,8 @@ var defaultInputProps = {
2001
2164
  };
2002
2165
 
2003
2166
  var FormFieldInput = /*#__PURE__*/React__default.default.memo(function FormFieldInput(props) {
2004
- var name = props.name,
2167
+ var dataTestId = props.dataTestId,
2168
+ name = props.name,
2005
2169
  initialValue = props.initialValue,
2006
2170
  classNameGroupItem = props.classNameGroupItem,
2007
2171
  clearIcon = props.clearIcon,
@@ -2053,8 +2217,10 @@ var FormFieldInput = /*#__PURE__*/React__default.default.memo(function FormField
2053
2217
  inputProps: inputProps,
2054
2218
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
2055
2219
  });
2220
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
2056
2221
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2057
2222
  className: clsx__default.default('form-field_input', 'form__item_input', classNameGroupItem),
2223
+ dataTestId: dataTestIdField,
2058
2224
  errorKey: errorKey,
2059
2225
  errorMessage: errorMessage,
2060
2226
  fieldClassName: "form-input",
@@ -2069,7 +2235,7 @@ var FormFieldInput = /*#__PURE__*/React__default.default.memo(function FormField
2069
2235
  isValidState: isValidState
2070
2236
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(Input.Input, Object.assign({
2071
2237
  className: clsx__default.default(meta.active && 'input_state_focus', meta.error && meta.touched && "input_state_" + errorKey),
2072
- dataTestId: input.name + "-field-input",
2238
+ dataTestId: dataTestIdField + "Input",
2073
2239
  type: "text",
2074
2240
  name: input.name,
2075
2241
  autoComplete: "nope",
@@ -2080,6 +2246,7 @@ var FormFieldInput = /*#__PURE__*/React__default.default.memo(function FormField
2080
2246
  onFocus: input.onFocus
2081
2247
  }, updatedInputProps)), clearIcon && /*#__PURE__*/React__default.default.createElement(Icon.Icon, {
2082
2248
  className: "form-field__icon",
2249
+ dataTestId: dataTestIdField + "InputIcon",
2083
2250
  size: clearIconSize,
2084
2251
  iconFill: clearIconFill,
2085
2252
  iconFillHover: clearIconFillHover,
@@ -2097,7 +2264,8 @@ var defaultInputNumberProps = {
2097
2264
  };
2098
2265
 
2099
2266
  var FormFieldInputNumber = /*#__PURE__*/React__default.default.memo(function FormFieldInputNumber(props) {
2100
- var _props$type = props.type,
2267
+ var dataTestId = props.dataTestId,
2268
+ _props$type = props.type,
2101
2269
  type = _props$type === void 0 ? 'custom' : _props$type,
2102
2270
  name = props.name,
2103
2271
  initialValue = props.initialValue,
@@ -2136,8 +2304,10 @@ var FormFieldInputNumber = /*#__PURE__*/React__default.default.memo(function For
2136
2304
  var updatedInputProps = useValidationAppearanceInputProps({
2137
2305
  inputProps: inputProps
2138
2306
  });
2307
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
2139
2308
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2140
2309
  className: clsx__default.default('form-field_input-number', 'form__item_input-number', classNameGroupItem),
2310
+ dataTestId: dataTestIdField,
2141
2311
  errorKey: errorKey,
2142
2312
  errorMessage: errorMessage,
2143
2313
  fieldClassName: "form-input-number",
@@ -2152,7 +2322,7 @@ var FormFieldInputNumber = /*#__PURE__*/React__default.default.memo(function For
2152
2322
  isValidState: isValidState
2153
2323
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(InputNumber.InputNumber, Object.assign({
2154
2324
  className: clsx__default.default(meta.active && 'input_state_focus', (meta.submitFailed || meta.touched) && meta.error && "input_state_" + errorKey),
2155
- dataTestId: input.name + "FieldInputNumber",
2325
+ dataTestId: dataTestIdField + "InputNumber",
2156
2326
  type: type,
2157
2327
  name: input.name,
2158
2328
  value: input.value || 0,
@@ -2162,7 +2332,8 @@ var FormFieldInputNumber = /*#__PURE__*/React__default.default.memo(function For
2162
2332
  });
2163
2333
 
2164
2334
  var FormFieldMaskedInput = /*#__PURE__*/React__default.default.memo(function FormFieldMaskedInput(props) {
2165
- var name = props.name,
2335
+ var dataTestId = props.dataTestId,
2336
+ name = props.name,
2166
2337
  initialValue = props.initialValue,
2167
2338
  classNameGroupItem = props.classNameGroupItem,
2168
2339
  clearIcon = props.clearIcon,
@@ -2224,8 +2395,10 @@ var FormFieldMaskedInput = /*#__PURE__*/React__default.default.memo(function For
2224
2395
  inputProps: inputProps,
2225
2396
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
2226
2397
  });
2398
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
2227
2399
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2228
2400
  className: clsx__default.default('form-field-masked-input', 'form__item_masked-input', classNameGroupItem),
2401
+ dataTestId: dataTestIdField,
2229
2402
  errorKey: errorKey,
2230
2403
  errorMessage: errorMessage,
2231
2404
  fieldClassName: 'form-maskedInput',
@@ -2269,7 +2442,8 @@ var defaultPasswordProps = {
2269
2442
  };
2270
2443
 
2271
2444
  var FormFieldPassword = /*#__PURE__*/React__default.default.memo(function FormFieldPassword(props) {
2272
- var name = props.name,
2445
+ var dataTestId = props.dataTestId,
2446
+ name = props.name,
2273
2447
  initialValue = props.initialValue,
2274
2448
  classNameGroupItem = props.classNameGroupItem,
2275
2449
  fieldProps = props.fieldProps,
@@ -2313,8 +2487,10 @@ var FormFieldPassword = /*#__PURE__*/React__default.default.memo(function FormFi
2313
2487
  inputProps: inputProps,
2314
2488
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
2315
2489
  });
2490
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
2316
2491
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2317
2492
  className: clsx__default.default('form-field_input-password', 'form__item_input-password', classNameGroupItem),
2493
+ dataTestId: dataTestIdField,
2318
2494
  errorKey: errorKey,
2319
2495
  errorMessage: errorMessage,
2320
2496
  fieldClassName: "form-password",
@@ -2329,7 +2505,7 @@ var FormFieldPassword = /*#__PURE__*/React__default.default.memo(function FormFi
2329
2505
  isValidState: isValidState
2330
2506
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(InputPassword.InputPassword, Object.assign({
2331
2507
  className: clsx__default.default(meta.active && 'input-password_state_focus', meta.error && meta.touched && "input-password_state_" + errorKey),
2332
- dataTestId: input.name + "-field-input-password",
2508
+ dataTestId: dataTestIdField + "InputPassword",
2333
2509
  name: input.name,
2334
2510
  autoComplete: "nope",
2335
2511
  value: input.value || '',
@@ -2384,8 +2560,9 @@ function FormFieldRadioGroupList(props) {
2384
2560
  }
2385
2561
 
2386
2562
  var FormFieldRadioGroup = /*#__PURE__*/React__default.default.memo(function FormFieldRadioGroup(props) {
2387
- var name = props.name,
2388
- isDisabled = props.isDisabled,
2563
+ var dataTestId = props.dataTestId,
2564
+ name = props.name,
2565
+ classNameGroupItem = props.classNameGroupItem,
2389
2566
  _props$editableProps = props.editableProps,
2390
2567
  editableProps = _props$editableProps === void 0 ? {} : _props$editableProps,
2391
2568
  _props$fieldProps = props.fieldProps,
@@ -2394,8 +2571,8 @@ var FormFieldRadioGroup = /*#__PURE__*/React__default.default.memo(function Form
2394
2571
  inputProps = _props$inputProps === void 0 ? {} : _props$inputProps,
2395
2572
  _props$options = props.options,
2396
2573
  options = _props$options === void 0 ? [] : _props$options,
2397
- classNameGroupItem = props.classNameGroupItem,
2398
2574
  showMessage = props.showMessage,
2575
+ isDisabled = props.isDisabled,
2399
2576
  isRequired = props.isRequired,
2400
2577
  onChange = props.onChange;
2401
2578
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
@@ -2423,26 +2600,28 @@ var FormFieldRadioGroup = /*#__PURE__*/React__default.default.memo(function Form
2423
2600
  inputProps: inputProps,
2424
2601
  validationStateKey: isErrorState ? errorKey : 'success'
2425
2602
  });
2603
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
2426
2604
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2427
2605
  className: clsx__default.default('form-field_radio', 'form__item_radio', classNameGroupItem),
2606
+ dataTestId: dataTestIdField,
2428
2607
  errorKey: errorKey,
2429
2608
  errorMessage: errorMessage,
2430
- isErrorState: isErrorState,
2431
- metaError: meta.error,
2432
- isDisabled: isDisabled,
2433
2609
  fieldClassName: 'form-radio',
2434
2610
  inputName: input.name,
2435
2611
  inputValue: input.value || '',
2436
2612
  metaActive: meta.active,
2613
+ metaError: meta.error,
2437
2614
  showMessage: showMessage,
2615
+ isDisabled: isDisabled,
2616
+ isErrorState: isErrorState,
2438
2617
  isRequired: isRequired,
2439
2618
  isValidState: isValidState
2440
2619
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(FormFieldRadioGroupList, {
2441
- isDisabled: isDisabled,
2442
2620
  editableProps: editableProps,
2443
2621
  input: input,
2444
2622
  inputProps: updatedInputProps,
2445
2623
  options: options,
2624
+ isDisabled: isDisabled,
2446
2625
  onChange: onChange
2447
2626
  }));
2448
2627
  });
@@ -2459,12 +2638,13 @@ var defaultSegmentedProps = {
2459
2638
  };
2460
2639
 
2461
2640
  function FormFieldSegmented(props) {
2462
- var name = props.name,
2463
- isDisabled = props.isDisabled,
2641
+ var dataTestId = props.dataTestId,
2642
+ name = props.name,
2464
2643
  fieldProps = props.fieldProps,
2465
2644
  inputProps = props.inputProps,
2466
2645
  options = props.options,
2467
2646
  showMessage = props.showMessage,
2647
+ isDisabled = props.isDisabled,
2468
2648
  isRequired = props.isRequired;
2469
2649
  var _useForm = reactFinalForm.useForm(),
2470
2650
  change = _useForm.change;
@@ -2503,31 +2683,33 @@ function FormFieldSegmented(props) {
2503
2683
  }),
2504
2684
  errorKey = _useFieldValidationSt.errorKey,
2505
2685
  errorMessage = _useFieldValidationSt.errorMessage,
2506
- isErrorState = _useFieldValidationSt.isErrorState,
2507
2686
  successKey = _useFieldValidationSt.successKey,
2687
+ isErrorState = _useFieldValidationSt.isErrorState,
2508
2688
  isValidState = _useFieldValidationSt.isValidState;
2509
2689
  var updatedInputProps = useValidationAppearanceInputProps({
2510
2690
  inputProps: inputProps,
2511
2691
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
2512
2692
  });
2693
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
2513
2694
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2514
2695
  className: clsx__default.default('form-field_segmented', 'form__item_segmented'),
2696
+ dataTestId: dataTestIdField,
2515
2697
  errorKey: errorKey,
2516
2698
  errorMessage: errorMessage,
2517
- isErrorState: isErrorState,
2518
- metaError: meta.error,
2519
- isDisabled: isDisabled,
2520
2699
  fieldClassName: "form-segmented",
2521
2700
  inputName: input.name,
2522
2701
  inputValue: input.value || [],
2523
2702
  metaActive: meta.active,
2703
+ metaError: meta.error,
2524
2704
  showMessage: showMessage,
2705
+ isDisabled: isDisabled,
2706
+ isErrorState: isErrorState,
2525
2707
  isRequired: isRequired,
2526
2708
  isValidState: isValidState
2527
2709
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(Segmented.Segmented, Object.assign({
2528
- isDisabled: isDisabled,
2529
2710
  activeSegment: activeOption,
2530
2711
  segments: options,
2712
+ isDisabled: isDisabled,
2531
2713
  setActiveSegment: setActiveSegment
2532
2714
  }, updatedInputProps)));
2533
2715
  });
@@ -2563,17 +2745,18 @@ function getDefaultValue(options, selectValue) {
2563
2745
  return result;
2564
2746
  }
2565
2747
  var FormFieldSelect = /*#__PURE__*/React__default.default.memo(function FormFieldSelect(props) {
2566
- var isDisabled = props.isDisabled,
2567
- isRequired = props.isRequired,
2748
+ var dataTestId = props.dataTestId,
2749
+ name = props.name,
2750
+ initialValue = props.initialValue,
2568
2751
  classNameGroupItem = props.classNameGroupItem,
2569
2752
  fieldProps = props.fieldProps,
2570
- initialValue = props.initialValue,
2571
- name = props.name,
2572
2753
  _props$options = props.options,
2573
2754
  options = _props$options === void 0 ? [] : _props$options,
2574
2755
  selectProps = props.selectProps,
2575
2756
  selectRef = props.selectRef,
2576
2757
  showMessage = props.showMessage,
2758
+ isDisabled = props.isDisabled,
2759
+ isRequired = props.isRequired,
2577
2760
  onChange = props.onChange,
2578
2761
  onInputChange = props.onInputChange;
2579
2762
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
@@ -2625,34 +2808,36 @@ var FormFieldSelect = /*#__PURE__*/React__default.default.memo(function FormFiel
2625
2808
  }),
2626
2809
  errorKey = _useFieldValidationSt.errorKey,
2627
2810
  errorMessage = _useFieldValidationSt.errorMessage,
2628
- isErrorState = _useFieldValidationSt.isErrorState,
2629
2811
  successKey = _useFieldValidationSt.successKey,
2812
+ isErrorState = _useFieldValidationSt.isErrorState,
2630
2813
  isValidState = _useFieldValidationSt.isValidState;
2631
2814
  var updatedSelectProps = useValidationAppearanceInputProps({
2632
2815
  inputProps: selectProps,
2633
2816
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
2634
2817
  });
2818
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
2635
2819
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2636
2820
  className: clsx__default.default('form-field_select', 'form__item_select', classNameGroupItem),
2821
+ dataTestId: dataTestIdField,
2637
2822
  errorKey: errorKey,
2638
2823
  errorMessage: errorMessage,
2639
- isErrorState: isErrorState,
2640
- metaError: meta.error,
2641
- isDisabled: isDisabled,
2642
2824
  fieldClassName: 'form-select',
2643
2825
  inputName: input.name,
2644
2826
  inputValue: input.value,
2645
2827
  metaActive: meta.active,
2828
+ metaError: meta.error,
2646
2829
  showMessage: showMessage,
2830
+ isDisabled: isDisabled,
2831
+ isErrorState: isErrorState,
2647
2832
  isRequired: isRequired,
2648
2833
  isValidState: isValidState
2649
2834
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(Select.Select, Object.assign({
2650
2835
  className: "form-select-item",
2651
2836
  ref: selectRef,
2652
- isDisabled: isDisabled,
2653
2837
  instanceId: "id_" + input.name,
2654
2838
  options: options,
2655
2839
  value: selectedOptions,
2840
+ isDisabled: isDisabled,
2656
2841
  onChange: onChangeValue,
2657
2842
  onInputChange: onInputChange
2658
2843
  }, updatedSelectProps)));
@@ -2667,14 +2852,15 @@ var defaultSwitchProps = {
2667
2852
  };
2668
2853
 
2669
2854
  var FormFieldSwitch = /*#__PURE__*/React__default.default.memo(function FormFieldSwitch(props) {
2670
- var name = props.name,
2671
- isDisabled = props.isDisabled,
2855
+ var dataTestId = props.dataTestId,
2856
+ name = props.name,
2672
2857
  classNameGroupItem = props.classNameGroupItem,
2673
2858
  _props$fieldProps = props.fieldProps,
2674
2859
  fieldProps = _props$fieldProps === void 0 ? {} : _props$fieldProps,
2675
2860
  _props$inputProps = props.inputProps,
2676
2861
  inputProps = _props$inputProps === void 0 ? {} : _props$inputProps,
2677
2862
  showMessage = props.showMessage,
2863
+ isDisabled = props.isDisabled,
2678
2864
  isRequired = props.isRequired,
2679
2865
  onChange = props.onChange;
2680
2866
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
@@ -2703,34 +2889,36 @@ var FormFieldSwitch = /*#__PURE__*/React__default.default.memo(function FormFiel
2703
2889
  }),
2704
2890
  errorKey = _useFieldValidationSt.errorKey,
2705
2891
  errorMessage = _useFieldValidationSt.errorMessage,
2706
- isErrorState = _useFieldValidationSt.isErrorState,
2707
2892
  successKey = _useFieldValidationSt.successKey,
2893
+ isErrorState = _useFieldValidationSt.isErrorState,
2708
2894
  isValidState = _useFieldValidationSt.isValidState;
2709
2895
  var updatedInputProps = useValidationAppearanceInputProps({
2710
2896
  inputProps: inputProps,
2711
2897
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
2712
2898
  });
2899
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
2713
2900
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2714
2901
  className: clsx__default.default('form-field-switch', 'form__item_switch', classNameGroupItem),
2902
+ dataTestId: dataTestIdField,
2715
2903
  errorKey: errorKey,
2716
2904
  errorMessage: errorMessage,
2717
- isErrorState: isErrorState,
2718
- metaError: meta.error,
2719
- isDisabled: isDisabled,
2720
2905
  fieldClassName: "form-switch",
2721
2906
  inputName: input.name,
2722
2907
  inputValue: input.checked,
2723
2908
  metaActive: meta.active,
2909
+ metaError: meta.error,
2724
2910
  showMessage: showMessage,
2725
2911
  tag: "label",
2912
+ isDisabled: isDisabled,
2913
+ isErrorState: isErrorState,
2726
2914
  isRequired: isRequired,
2727
2915
  isValidState: isValidState
2728
2916
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(Switch.Switch, Object.assign({
2729
2917
  type: "checkbox",
2730
2918
  name: input.name,
2731
- isDisabled: isDisabled,
2732
2919
  autoComplete: "nope",
2733
2920
  isActive: input.checked,
2921
+ isDisabled: isDisabled,
2734
2922
  onBlur: input.onBlur,
2735
2923
  onChange: onChangeField,
2736
2924
  onFocus: input.onFocus
@@ -2750,7 +2938,8 @@ var defaultTextareaProps = {
2750
2938
  };
2751
2939
 
2752
2940
  var FormFieldTextarea = /*#__PURE__*/React__default.default.memo(function FormFieldTextarea(props) {
2753
- var name = props.name,
2941
+ var dataTestId = props.dataTestId,
2942
+ name = props.name,
2754
2943
  classNameGroupItem = props.classNameGroupItem,
2755
2944
  _props$fieldProps = props.fieldProps,
2756
2945
  fieldProps = _props$fieldProps === void 0 ? {} : _props$fieldProps,
@@ -2785,8 +2974,10 @@ var FormFieldTextarea = /*#__PURE__*/React__default.default.memo(function FormFi
2785
2974
  inputProps: inputProps,
2786
2975
  validationStateKey: isErrorState ? errorKey : isValidState ? successKey : null
2787
2976
  });
2977
+ var dataTestIdField = createDataTestIdField(input.name, dataTestId);
2788
2978
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2789
2979
  className: clsx__default.default('form-field_textarea', 'form__item_textarea', classNameGroupItem),
2980
+ dataTestId: dataTestIdField,
2790
2981
  errorKey: errorKey,
2791
2982
  errorMessage: errorMessage,
2792
2983
  fieldClassName: 'form-textarea',
@@ -2801,7 +2992,7 @@ var FormFieldTextarea = /*#__PURE__*/React__default.default.memo(function FormFi
2801
2992
  isValidState: isValidState
2802
2993
  }, fieldProps), /*#__PURE__*/React__default.default.createElement(Textarea.Textarea, Object.assign({
2803
2994
  className: clsx__default.default(meta.active && 'textarea_state_focus', meta.error && meta.touched && "textarea_state_" + errorKey),
2804
- dataTestId: input.name + "-field-textarea",
2995
+ dataTestId: dataTestIdField + "Textarea",
2805
2996
  name: input.name,
2806
2997
  autoComplete: "nope",
2807
2998
  value: input.value || '',
@@ -2834,115 +3025,151 @@ var formTypes = {
2834
3025
  select: 'select',
2835
3026
  "switch": 'switch'
2836
3027
  };
2837
- function generateField(field, config, props) {
3028
+ function generateField(field, config, dataTestId) {
2838
3029
  switch (field.type) {
2839
3030
  case formTypes.password:
2840
3031
  {
2841
3032
  return /*#__PURE__*/React__default.default.createElement(FormFieldPassword, Object.assign({
2842
3033
  key: config.key
2843
- }, field, props));
3034
+ }, field, {
3035
+ dataTestId: dataTestId
3036
+ }));
2844
3037
  }
2845
3038
  case formTypes.checkbox:
2846
3039
  {
2847
3040
  return /*#__PURE__*/React__default.default.createElement(FormFieldCheckbox, Object.assign({
2848
3041
  key: config.key
2849
- }, field, props));
3042
+ }, field, {
3043
+ dataTestId: dataTestId
3044
+ }));
2850
3045
  }
2851
3046
  case formTypes.choice:
2852
3047
  {
2853
3048
  return /*#__PURE__*/React__default.default.createElement(FormFieldChoice, Object.assign({
2854
3049
  key: config.key
2855
- }, field, props));
3050
+ }, field, {
3051
+ dataTestId: dataTestId
3052
+ }));
2856
3053
  }
2857
3054
  case formTypes.code:
2858
3055
  {
2859
3056
  return /*#__PURE__*/React__default.default.createElement(FormFieldCode, Object.assign({
2860
3057
  key: config.key
2861
- }, field, props));
3058
+ }, field, {
3059
+ dataTestId: dataTestId
3060
+ }));
2862
3061
  }
2863
3062
  case formTypes.chips:
2864
3063
  {
2865
3064
  return /*#__PURE__*/React__default.default.createElement(FormFieldChips, Object.assign({
2866
3065
  key: config.key
2867
- }, field, props));
3066
+ }, field, {
3067
+ dataTestId: dataTestId
3068
+ }));
2868
3069
  }
2869
3070
  case formTypes["switch"]:
2870
3071
  {
2871
3072
  return /*#__PURE__*/React__default.default.createElement(FormFieldSwitch, Object.assign({
2872
3073
  key: config.key
2873
- }, field, props));
3074
+ }, field, {
3075
+ dataTestId: dataTestId
3076
+ }));
2874
3077
  }
2875
3078
  case formTypes.segmented:
2876
3079
  {
2877
3080
  return /*#__PURE__*/React__default.default.createElement(FormFieldSegmented, Object.assign({
2878
3081
  key: config.key
2879
- }, field, props));
3082
+ }, field, {
3083
+ dataTestId: dataTestId
3084
+ }));
2880
3085
  }
2881
3086
  case formTypes.datePicker:
2882
3087
  {
2883
3088
  return /*#__PURE__*/React__default.default.createElement(FormFieldDatePicker, Object.assign({
2884
3089
  key: config.key
2885
- }, field, props));
3090
+ }, field, {
3091
+ dataTestId: dataTestId
3092
+ }));
2886
3093
  }
2887
3094
  case formTypes.fileInput:
2888
3095
  {
2889
3096
  return /*#__PURE__*/React__default.default.createElement(FormFieldFileInput, Object.assign({
2890
3097
  key: config.key
2891
- }, field, props));
3098
+ }, field, {
3099
+ dataTestId: dataTestId
3100
+ }));
2892
3101
  }
2893
3102
  case formTypes.radioGroup:
2894
3103
  {
2895
3104
  return /*#__PURE__*/React__default.default.createElement(FormFieldRadioGroup, Object.assign({
2896
3105
  key: config.key
2897
- }, field, props));
3106
+ }, field, {
3107
+ dataTestId: dataTestId
3108
+ }));
2898
3109
  }
2899
3110
  case formTypes.select:
2900
3111
  {
2901
3112
  return /*#__PURE__*/React__default.default.createElement(FormFieldSelect, Object.assign({
2902
3113
  key: config.key
2903
- }, field, props));
3114
+ }, field, {
3115
+ dataTestId: dataTestId
3116
+ }));
2904
3117
  }
2905
3118
  case formTypes.text:
2906
3119
  {
2907
3120
  return /*#__PURE__*/React__default.default.createElement(FormFieldInput, Object.assign({
2908
3121
  key: config.key
2909
- }, field, props));
3122
+ }, field, {
3123
+ dataTestId: dataTestId
3124
+ }));
2910
3125
  }
2911
3126
  case formTypes.textarea:
2912
3127
  {
2913
3128
  return /*#__PURE__*/React__default.default.createElement(FormFieldTextarea, Object.assign({
2914
3129
  key: config.key
2915
- }, field, props));
3130
+ }, field, {
3131
+ dataTestId: dataTestId
3132
+ }));
2916
3133
  }
2917
3134
  case formTypes.maskedInput:
2918
3135
  {
2919
3136
  return /*#__PURE__*/React__default.default.createElement(FormFieldMaskedInput, Object.assign({
2920
3137
  key: config.key
2921
- }, field, props));
3138
+ }, field, {
3139
+ dataTestId: dataTestId
3140
+ }));
2922
3141
  }
2923
3142
  case formTypes.custom:
2924
3143
  {
2925
3144
  return /*#__PURE__*/React__default.default.createElement(FormFieldCustom, Object.assign({
2926
3145
  key: config.key
2927
- }, field, props));
3146
+ }, field, {
3147
+ dataTestId: dataTestId
3148
+ }));
2928
3149
  }
2929
3150
  case formTypes.dadataInput:
2930
3151
  {
2931
3152
  return /*#__PURE__*/React__default.default.createElement(FormFieldDadataInput, Object.assign({
2932
3153
  key: config.key
2933
- }, field, props));
3154
+ }, field, {
3155
+ dataTestId: dataTestId
3156
+ }));
2934
3157
  }
2935
3158
  case formTypes.inputNumber:
2936
3159
  {
2937
3160
  return /*#__PURE__*/React__default.default.createElement(FormFieldInputNumber, Object.assign({
2938
3161
  key: config.key
2939
- }, field, props));
3162
+ }, field, {
3163
+ dataTestId: dataTestId
3164
+ }));
2940
3165
  }
2941
3166
  case formTypes.group:
2942
3167
  {
2943
3168
  return /*#__PURE__*/React__default.default.createElement(FormBlockGroup, Object.assign({
2944
3169
  key: config.key
2945
- }, field, props), Object.entries(field.group).map(function (_ref) {
3170
+ }, field, {
3171
+ dataTestId: dataTestId
3172
+ }), Object.entries(field.group).map(function (_ref) {
2946
3173
  var key = _ref[0],
2947
3174
  value = _ref[1];
2948
3175
  var groupProps = Object.assign({}, value, {
@@ -2951,147 +3178,17 @@ function generateField(field, config, props) {
2951
3178
  });
2952
3179
  return generateField(groupProps, {
2953
3180
  key: key + '_form_group'
2954
- }, props);
3181
+ }, dataTestId);
2955
3182
  }));
2956
3183
  }
2957
3184
  }
2958
3185
  }
2959
3186
 
2960
- var focusOnError = function focusOnError(formElementsList, errors) {
2961
- var selectsIds = Object.keys(errors).map(function (fieldName) {
2962
- if (fieldName === finalForm.FORM_ERROR) {
2963
- // TODO: get from somewhere
2964
- return 'notification__item_status_error';
2965
- }
2966
- return "react-select-id_" + fieldName + "-input";
2967
- });
2968
- var errorFieldElement = formElementsList.find(function (element) {
2969
- if (element.name) {
2970
- return finalForm.getIn(errors, element.name);
2971
- } else {
2972
- return selectsIds.includes(element.id);
2973
- }
2974
- });
2975
- var errorsList = Object.keys(errors);
2976
- if (!errorFieldElement && errorsList.length) {
2977
- var errorElement;
2978
- try {
2979
- var fieldName = errorsList[0];
2980
- if (fieldName === finalForm.FORM_ERROR) {
2981
- errorElement = document.querySelector('notification__item_status_error');
2982
- } else {
2983
- errorElement = document.querySelector("#" + fieldName + "-error");
2984
- if (!errorElement) {
2985
- errorElement = document.querySelector("#id_" + fieldName);
2986
- }
2987
- }
2988
- } catch (err) {
2989
- console.warn(err);
2990
- }
2991
- if (errorElement) {
2992
- errorElement.scrollIntoView({
2993
- block: 'center'
2994
- }); // , behavior: 'smooth'
2995
- }
2996
- }
2997
-
2998
- // The field is covered by the header because header is "sticky",
2999
- // that's we scroll manually so that the field falls into the center of the visible area
3000
- if (errorFieldElement) {
3001
- errorFieldElement.scrollIntoView({
3002
- block: 'center'
3003
- });
3004
- }
3005
- return null;
3006
- };
3007
- var focusOnErrorDecorator = createDecorator__default.default(null, focusOnError);
3008
- var setErrorsMutator = function setErrorsMutator(args, state) {
3009
- var fieldName = args[0],
3010
- data = args[1];
3011
- var submitError = data.submitError;
3012
- var fieldError = data.error;
3013
- if (fieldName === 'non_field_errors' || fieldName === finalForm.FORM_ERROR) {
3014
- // state.formState.invalid = true
3015
- // state.formState.valid = false
3016
- state.formState.error = fieldError;
3017
- state.formState.submitError = submitError;
3018
- } else if (fieldName in state.fields) {
3019
- state.fields[fieldName].touched = true;
3020
-
3021
- // TODO: make clear error not by empty string check
3022
- if (fieldError || fieldError === '') {
3023
- var _Object$assign;
3024
- var errorsState = Object.assign({}, state.formState.errors, (_Object$assign = {}, _Object$assign[fieldName] = fieldError, _Object$assign));
3025
- state.fields[fieldName].error = fieldError;
3026
- state.formState.errors = errorsState;
3027
- }
3028
-
3029
- // TODO: make clear error not by empty string check
3030
- if (submitError || submitError === '') {
3031
- var _Object$assign2;
3032
- var submitErrorsState = Object.assign({}, state.formState.submitErrors, (_Object$assign2 = {}, _Object$assign2[fieldName] = submitError, _Object$assign2));
3033
- state.fields[fieldName].submitFailed = true;
3034
- state.fields[fieldName].submitSucceeded = false;
3035
- state.fields[fieldName].submitError = submitError;
3036
- state.formState.submitErrors = submitErrorsState;
3037
- state.formState.submitFailed = true;
3038
- state.formState.submitSucceeded = false;
3039
- state.formState.lastSubmittedValues = state.formState.values;
3040
- }
3041
- }
3042
- };
3043
- var sendFormDataToServer = /*#__PURE__*/function () {
3044
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(url, data) {
3045
- var response, _error$response, _error$response2, formErrors, _t;
3046
- return _regenerator().w(function (_context) {
3047
- while (1) switch (_context.p = _context.n) {
3048
- case 0:
3049
- _context.p = 0;
3050
- _context.n = 1;
3051
- return axios__default.default({
3052
- url: url,
3053
- method: 'POST',
3054
- data: data
3055
- });
3056
- case 1:
3057
- response = _context.v;
3058
- return _context.a(2, {
3059
- success: true,
3060
- response: response
3061
- });
3062
- case 2:
3063
- _context.p = 2;
3064
- _t = _context.v;
3065
- formErrors = {};
3066
- if (typeof ((_error$response = _t.response) == null ? void 0 : _error$response.data) === 'string') {
3067
- formErrors[finalForm.FORM_ERROR] = 'Something went wrong';
3068
- }
3069
- if (typeof ((_error$response2 = _t.response) == null ? void 0 : _error$response2.data) === 'object') {
3070
- Object.entries(_t.response.data).forEach(function (_ref2) {
3071
- var fieldName = _ref2[0],
3072
- errorsList = _ref2[1];
3073
- formErrors[fieldName] = errorsList[0];
3074
- });
3075
- }
3076
- return _context.a(2, {
3077
- error: _t,
3078
- success: false,
3079
- formErrors: formErrors
3080
- });
3081
- }
3082
- }, _callee, null, [[0, 2]]);
3083
- }));
3084
- return function sendFormDataToServer(_x, _x2) {
3085
- return _ref.apply(this, arguments);
3086
- };
3087
- }();
3088
-
3089
3187
  var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalForm(props, ref) {
3090
3188
  var className = props.className,
3091
3189
  dataTestId = props.dataTestId,
3092
3190
  dataTour = props.dataTour,
3093
3191
  type = props.type,
3094
- name = props.name,
3095
3192
  initialValues = props.initialValues,
3096
3193
  initialValuesEqual = props.initialValuesEqual,
3097
3194
  config = props.config,
@@ -3106,10 +3203,9 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3106
3203
  descSize = props.descSize,
3107
3204
  descTextColor = props.descTextColor,
3108
3205
  descTextWeight = props.descTextWeight,
3109
- buttonGap = props.buttonGap,
3110
- _props$additionalProp = props.additionalProps,
3111
- additionalProps = _props$additionalProp === void 0 ? {} : _props$additionalProp,
3112
- _props$buttonDirectio = props.buttonDirection,
3206
+ buttonGap = props.buttonGap;
3207
+ props.additionalProps;
3208
+ var _props$buttonDirectio = props.buttonDirection,
3113
3209
  buttonDirection = _props$buttonDirectio === void 0 ? 'vertical' : _props$buttonDirectio,
3114
3210
  buttonFill = props.buttonFill,
3115
3211
  buttonJustifyContent = props.buttonJustifyContent,
@@ -3126,7 +3222,6 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3126
3222
  _props$disableFieldsA = props.disableFieldsAutoComplete,
3127
3223
  disableFieldsAutoComplete = _props$disableFieldsA === void 0 ? false : _props$disableFieldsA,
3128
3224
  fieldsGap = props.fieldsGap,
3129
- formName = props.formName,
3130
3225
  groupGap = props.groupGap,
3131
3226
  heightClass = props.heightClass,
3132
3227
  language = props.language,
@@ -3141,7 +3236,7 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3141
3236
  loaderSize = _props$loaderSize === void 0 ? 'l' : _props$loaderSize,
3142
3237
  loaderText = props.loaderText,
3143
3238
  _props$loaderType = props.loaderType,
3144
- loaderType = _props$loaderType === void 0 ? 'simple' : _props$loaderType,
3239
+ loaderType = _props$loaderType === void 0 ? 'dot' : _props$loaderType,
3145
3240
  mutators = props.mutators,
3146
3241
  notificationCloseButton = props.notificationCloseButton,
3147
3242
  notificationType = props.notificationType,
@@ -3175,6 +3270,7 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3175
3270
  secondaryButtonSize = props.secondaryButtonSize,
3176
3271
  shapeStrengthClass = props.shapeStrengthClass,
3177
3272
  tertiaryButton = props.tertiaryButton,
3273
+ tertiaryButtonAppearance = props.tertiaryButtonAppearance,
3178
3274
  tertiaryButtonFill = props.tertiaryButtonFill,
3179
3275
  tertiaryButtonFillHover = props.tertiaryButtonFillHover,
3180
3276
  tertiaryButtonLabel = props.tertiaryButtonLabel,
@@ -3196,12 +3292,12 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3196
3292
  ref.current = formInstance;
3197
3293
  }
3198
3294
  }, [ref]);
3199
- var propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props);
3295
+ var propsGenerator = hooks.useDevicePropsGenerator(props);
3200
3296
  var directionClass = propsGenerator.directionClass,
3201
3297
  fillClass = propsGenerator.fillClass,
3202
3298
  elevationClass = propsGenerator.elevationClass,
3203
3299
  shapeClass = propsGenerator.shapeClass;
3204
- var _useStyles = useStyles.useStyles(props),
3300
+ var _useStyles = hooks.useStyles(props),
3205
3301
  formStyles = _useStyles.styles,
3206
3302
  wrapperStyles = _useStyles.wrapper;
3207
3303
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Form, {
@@ -3213,8 +3309,7 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3213
3309
  modifiedSinceLastSubmit = _ref.modifiedSinceLastSubmit,
3214
3310
  submitError = _ref.submitError;
3215
3311
  return /*#__PURE__*/React__default.default.createElement("form", {
3216
- className: clsx__default.default(className, 'form', type && "form_type_" + type, widthClass && "width_" + widthClass, heightClass && "height_" + heightClass, titlePosition && "form_title-position_" + titlePosition, buttonPosition && "form_button-position_" + buttonPosition, directionClass && "direction_" + directionClass, fillClass && "fill_" + fillClass, shapeClass && "shape_" + shapeClass, shapeStrengthClass && "shape-strength_" + shapeStrengthClass, elevationClass && "elevation_" + elevationClass),
3217
- name: formName || 'form'
3312
+ className: clsx__default.default(className, 'form', type && "form_type_" + type, widthClass && "width_" + widthClass, heightClass && "height_" + heightClass, titlePosition && "form_title-position_" + titlePosition, buttonPosition && "form_button-position_" + buttonPosition, directionClass && "direction_" + directionClass, fillClass && "fill_" + fillClass, shapeClass && "shape_" + shapeClass, shapeStrengthClass && "shape-strength_" + shapeStrengthClass, elevationClass && "elevation_" + elevationClass)
3218
3313
  // We no need set reference to html element, we need reference to "final-form" instance
3219
3314
  ,
3220
3315
  ref: function ref() {
@@ -3223,7 +3318,7 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3223
3318
  autoCapitalize: disableFieldsAutoComplete ? 'off' : undefined,
3224
3319
  autoComplete: disableFieldsAutoComplete ? 'off' : undefined,
3225
3320
  autoCorrect: disableFieldsAutoComplete ? 'off' : undefined,
3226
- "data-testid": dataTestId || name,
3321
+ "data-testid": dataTestId || 'Form',
3227
3322
  "data-tour": dataTour,
3228
3323
  spellCheck: disableFieldsAutoComplete ? 'false' : undefined,
3229
3324
  style: formStyles,
@@ -3233,12 +3328,14 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3233
3328
  size: titleTextSize,
3234
3329
  fill: titleFill,
3235
3330
  textColor: titleTextColor,
3236
- textWeight: titleTextWeight
3331
+ textWeight: titleTextWeight,
3332
+ "data-testid": dataTestId ? dataTestId + "Title" : 'FormTitle'
3237
3333
  }, title), desc && /*#__PURE__*/React__default.default.createElement(Text.Text, {
3238
3334
  className: "form__desc",
3239
3335
  size: descSize,
3240
3336
  textColor: descTextColor,
3241
- textWeight: descTextWeight
3337
+ textWeight: descTextWeight,
3338
+ "data-testid": dataTestId ? dataTestId + "Desc" : 'FormDesc'
3242
3339
  }, desc), submitError && !modifiedSinceLastSubmit && /*#__PURE__*/React__default.default.createElement("div", {
3243
3340
  className: clsx__default.default('notification', 'form-notification', notificationType ? "form-notification_" + notificationType : 'form-notification_global')
3244
3341
  }, /*#__PURE__*/React__default.default.createElement(Notification.Notification, {
@@ -3260,7 +3357,7 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3260
3357
  }, Object.keys(config).map(function (key) {
3261
3358
  return generateField(config[key], {
3262
3359
  key: key
3263
- }, additionalProps[config[key].name]);
3360
+ }, dataTestId);
3264
3361
  }), isLoading && (loader || /*#__PURE__*/React__default.default.createElement(Loader.Loader, {
3265
3362
  appearance: loaderAppearance,
3266
3363
  className: "form__loader",
@@ -3268,11 +3365,12 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3268
3365
  size: loaderSize,
3269
3366
  fill: loaderFill,
3270
3367
  text: loaderText,
3368
+ "data-testid": dataTestId + "Loader",
3271
3369
  itemFill: loaderItemFill,
3272
3370
  shape: loaderShape
3273
3371
  }))))), (primaryButtonLabel || primaryButton || secondaryButtonLabel || secondaryButton || tertiaryButton || tertiaryButtonLabel) && /*#__PURE__*/React__default.default.createElement(Group.Group, {
3274
3372
  className: "form__button",
3275
- dataTestId: dataTestIdButtons,
3373
+ dataTestId: dataTestIdButtons || dataTestId + "Buttons",
3276
3374
  dataTour: dataTourButtons,
3277
3375
  direction: buttonDirection,
3278
3376
  justifyContent: buttonJustifyContent,
@@ -3282,7 +3380,7 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3282
3380
  }, primaryButtonLabel ? /*#__PURE__*/React__default.default.createElement(Button.Button, {
3283
3381
  appearance: primaryButtonAppearance,
3284
3382
  className: "form__button-item",
3285
- dataTestId: dataTestIdPrimaryButton || (name ? name + "-primary" : 'form-primary'),
3383
+ dataTestId: dataTestIdPrimaryButton || dataTestId && dataTestId + "PrimaryButton" || 'FormPrimaryButton',
3286
3384
  dataTour: dataTourPrimaryButton,
3287
3385
  width: "fill",
3288
3386
  size: primaryButtonSize,
@@ -3298,7 +3396,7 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3298
3396
  }) : primaryButton, secondaryButtonLabel ? /*#__PURE__*/React__default.default.createElement(Button.Button, {
3299
3397
  appearance: secondaryButtonAppearance,
3300
3398
  className: "form__button-item",
3301
- dataTestId: dataTestIdSecondaryButton || (name ? name + "-secondary" : 'form-secondary'),
3399
+ dataTestId: dataTestIdSecondaryButton || dataTestId && dataTestId + "SecondaryButton" || 'FormSecondaryButton',
3302
3400
  dataTour: dataTourSecondaryButton,
3303
3401
  width: "fill",
3304
3402
  size: secondaryButtonSize,
@@ -3313,8 +3411,9 @@ var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalFor
3313
3411
  isDisabled: secondaryButtonIsDisabled,
3314
3412
  onClick: onClickSecondaryButton
3315
3413
  }) : secondaryButton, tertiaryButtonLabel ? /*#__PURE__*/React__default.default.createElement(Button.Button, {
3414
+ appearance: tertiaryButtonAppearance,
3316
3415
  className: "form__button-item",
3317
- dataTestId: dataTestIdTertiaryButton,
3416
+ dataTestId: dataTestIdTertiaryButton || dataTestId && dataTestId + "TertiaryButton" || 'FormTertiaryButton',
3318
3417
  dataTour: dataTourTertiaryButton,
3319
3418
  width: "fill",
3320
3419
  size: tertiaryButtonSize,
@@ -3618,6 +3717,7 @@ exports.FormFieldSelect = FormFieldSelect;
3618
3717
  exports.FormFieldSwitch = FormFieldSwitch;
3619
3718
  exports.FormFieldTextarea = FormFieldTextarea;
3620
3719
  exports.addRequiredFieldsParamToSchema = addRequiredFieldsParamToSchema;
3720
+ exports.createDataTestIdField = createDataTestIdField;
3621
3721
  exports.dateValidation = dateValidation;
3622
3722
  exports.defaultCheckboxProps = defaultCheckboxProps;
3623
3723
  exports.defaultChipsProps = defaultChipsProps;