@bigbinary/neetoui 5.0.9 → 5.0.11

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/README.md CHANGED
@@ -195,6 +195,8 @@ The `Form` component accepts the following props:
195
195
  - `className`: You can use this prop to provide a custom class to the form.
196
196
  - `formProps`: Form props object. You can pass `className`, `style` etc. as
197
197
  props to the `Form` component.
198
+ - `scrollToErrorField`: To specify whether scroll to error field on clicking
199
+ submit button is enabled or not. Default value is true.
198
200
 
199
201
  ---
200
202
 
package/formik.cjs.js CHANGED
@@ -1533,6 +1533,37 @@ function _objectAssign(target) {
1533
1533
 
1534
1534
  var _objectAssign$1 = typeof Object.assign === 'function' ? Object.assign : _objectAssign;
1535
1535
 
1536
+ /**
1537
+ * See if an object (i.e. `val`) is an instance of the supplied constructor. This
1538
+ * function will check up the inheritance chain, if any.
1539
+ * If `val` was created using `Object.create`, `R.is(Object, val) === true`.
1540
+ *
1541
+ * @func
1542
+ * @memberOf R
1543
+ * @since v0.3.0
1544
+ * @category Type
1545
+ * @sig (* -> {*}) -> a -> Boolean
1546
+ * @param {Object} ctor A constructor
1547
+ * @param {*} val The value to test
1548
+ * @return {Boolean}
1549
+ * @example
1550
+ *
1551
+ * R.is(Object, {}); //=> true
1552
+ * R.is(Number, 1); //=> true
1553
+ * R.is(Object, 1); //=> false
1554
+ * R.is(String, 's'); //=> true
1555
+ * R.is(String, new String('')); //=> true
1556
+ * R.is(Object, new String('')); //=> true
1557
+ * R.is(Object, 's'); //=> false
1558
+ * R.is(Number, {}); //=> false
1559
+ */
1560
+
1561
+ var is =
1562
+ /*#__PURE__*/
1563
+ _curry2(function is(Ctor, val) {
1564
+ return val instanceof Ctor || val != null && (val.constructor === Ctor || Ctor.name === 'Object' && typeof val === 'object');
1565
+ });
1566
+
1536
1567
  /**
1537
1568
  * Returns `true` if the given value is its type's empty value; `false`
1538
1569
  * otherwise.
@@ -14062,7 +14093,7 @@ var FormikButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
14062
14093
  values = _useFormikContext.values,
14063
14094
  initialValues = _useFormikContext.initialValues,
14064
14095
  isValid = _useFormikContext.isValid;
14065
- var isDisabled = disabled !== null && disabled !== void 0 ? disabled : isSubmitting || !isValid || equals(values, initialValues);
14096
+ var isDisabled = disabled !== null && disabled !== void 0 ? disabled : isSubmitting || equals(values, initialValues);
14066
14097
  return /*#__PURE__*/React__default["default"].createElement(Button, _extends$2({
14067
14098
  disabled: isDisabled,
14068
14099
  loading: isSubmitting && isValid,
@@ -17504,8 +17535,9 @@ var BlockNavigation = function BlockNavigation(_ref) {
17504
17535
  };
17505
17536
  return /*#__PURE__*/React__default["default"].createElement(Alert, {
17506
17537
  isOpen: isBlocked,
17507
- message: "Are you sure you want to continue? All of your unsaved changes will be lost.",
17508
- title: "You have unsaved changes!",
17538
+ message: "All of your unsaved changes will be lost. This can't be undone.",
17539
+ submitButtonLabel: "Discard changes",
17540
+ title: "You have unsaved changes",
17509
17541
  onClose: hidePrompt,
17510
17542
  onSubmit: continueAction
17511
17543
  });
@@ -18119,12 +18151,76 @@ try {
18119
18151
  }
18120
18152
  }
18121
18153
 
18154
+ function _arrayWithoutHoles$1(arr) {
18155
+ if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
18156
+ }
18157
+
18158
+ function _iterableToArray$1(iter) {
18159
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
18160
+ }
18161
+
18162
+ function _nonIterableSpread$1() {
18163
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
18164
+ }
18165
+
18166
+ function _toConsumableArray$1(arr) {
18167
+ return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread$1();
18168
+ }
18169
+
18170
+ var transformObjectToDotNotation = function transformObjectToDotNotation(object) {
18171
+ var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
18172
+ var result = [];
18173
+ Object.entries(object).forEach(function (_ref) {
18174
+ var _ref2 = _slicedToArray$1(_ref, 2),
18175
+ key = _ref2[0],
18176
+ value = _ref2[1];
18177
+ if (value) {
18178
+ var nextKey = prefix ? "".concat(prefix, ".").concat(key) : key;
18179
+ if (is(Object, value)) {
18180
+ result.push.apply(result, _toConsumableArray$1(transformObjectToDotNotation(value, nextKey)));
18181
+ } else {
18182
+ result.push(nextKey);
18183
+ }
18184
+ }
18185
+ });
18186
+ return result;
18187
+ };
18188
+ var getErrorFieldName = function getErrorFieldName(formikErrors) {
18189
+ var _transformObjectToDot;
18190
+ return (_transformObjectToDot = transformObjectToDotNotation(formikErrors)) === null || _transformObjectToDot === void 0 ? void 0 : _transformObjectToDot[0];
18191
+ };
18192
+
18193
+ var ScrollToErrorField = function ScrollToErrorField(_ref) {
18194
+ var formRef = _ref.formRef;
18195
+ var _useFormikContext = formik.useFormikContext(),
18196
+ submitCount = _useFormikContext.submitCount,
18197
+ isValid = _useFormikContext.isValid,
18198
+ errors = _useFormikContext.errors;
18199
+ var isValidatedReference = React.useRef(false);
18200
+ React.useEffect(function () {
18201
+ isValidatedReference.current = false;
18202
+ }, [submitCount]);
18203
+ React.useEffect(function () {
18204
+ if (!formRef.current || isValidatedReference.current || isValid) return;
18205
+ isValidatedReference.current = true;
18206
+ var fieldErrorName = getErrorFieldName(errors);
18207
+ if (!fieldErrorName) return;
18208
+ var errorFormElement = formRef.current.querySelector("[name=".concat(fieldErrorName, "]"));
18209
+ errorFormElement === null || errorFormElement === void 0 ? void 0 : errorFormElement.scrollIntoView({
18210
+ behavior: "smooth",
18211
+ block: "center"
18212
+ });
18213
+ }, [submitCount, errors]);
18214
+ return null;
18215
+ };
18216
+
18122
18217
  var _excluded$j = ["values", "validateForm", "setErrors", "setTouched"];
18123
18218
  var FormWrapper = /*#__PURE__*/React.forwardRef(function (_ref, formRef) {
18124
18219
  var className = _ref.className,
18125
18220
  formProps = _ref.formProps,
18126
18221
  children = _ref.children,
18127
- onSubmit = _ref.onSubmit;
18222
+ onSubmit = _ref.onSubmit,
18223
+ scrollToErrorField = _ref.scrollToErrorField;
18128
18224
  var _useFormikContext = formik.useFormikContext(),
18129
18225
  values = _useFormikContext.values,
18130
18226
  validateForm = _useFormikContext.validateForm,
@@ -18133,6 +18229,7 @@ var FormWrapper = /*#__PURE__*/React.forwardRef(function (_ref, formRef) {
18133
18229
  formikBag = _objectWithoutProperties$1(_useFormikContext, _excluded$j);
18134
18230
  var isFormDirty = formikBag.dirty,
18135
18231
  isSubmitting = formikBag.isSubmitting;
18232
+ var formRefForScrollToErrorFiled = React.useRef();
18136
18233
  var handleKeyDown = React.useCallback( /*#__PURE__*/function () {
18137
18234
  var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(event) {
18138
18235
  var isEventFromEditorOrTextarea, errors;
@@ -18197,9 +18294,11 @@ var FormWrapper = /*#__PURE__*/React.forwardRef(function (_ref, formRef) {
18197
18294
  noValidate: true,
18198
18295
  className: className,
18199
18296
  "data-testid": "neeto-ui-form-wrapper",
18200
- ref: formRef,
18297
+ ref: formRef || formRefForScrollToErrorFiled,
18201
18298
  onKeyDown: handleKeyDown
18202
- }, formProps), children);
18299
+ }, formProps), scrollToErrorField && /*#__PURE__*/React__default["default"].createElement(ScrollToErrorField, {
18300
+ formRef: formRef || formRefForScrollToErrorFiled
18301
+ }), children);
18203
18302
  });
18204
18303
  FormWrapper.displayName = "FormWrapper";
18205
18304
 
@@ -18207,12 +18306,15 @@ var Form = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
18207
18306
  var className = _ref.className,
18208
18307
  children = _ref.children,
18209
18308
  formikProps = _ref.formikProps,
18210
- formProps = _ref.formProps;
18309
+ formProps = _ref.formProps,
18310
+ _ref$scrollToErrorFie = _ref.scrollToErrorField,
18311
+ scrollToErrorField = _ref$scrollToErrorFie === void 0 ? true : _ref$scrollToErrorFie;
18211
18312
  return /*#__PURE__*/React__default["default"].createElement(formik.Formik, formikProps, function (props) {
18212
18313
  return /*#__PURE__*/React__default["default"].createElement(FormWrapper, {
18213
18314
  className: className,
18214
18315
  formProps: formProps,
18215
18316
  ref: ref,
18317
+ scrollToErrorField: scrollToErrorField,
18216
18318
  onSubmit: formikProps === null || formikProps === void 0 ? void 0 : formikProps.onSubmit
18217
18319
  }, typeof children === "function" ? children(props) : children);
18218
18320
  });
@@ -18238,7 +18340,11 @@ Form.propTypes = {
18238
18340
  * Refer to the Formik docs for more details
18239
18341
  * https://formik.org/docs/api/form
18240
18342
  **/
18241
- formProps: propTypes.exports.object
18343
+ formProps: propTypes.exports.object,
18344
+ /**
18345
+ * Props to be passed for scrolling to error field on submit button click.
18346
+ **/
18347
+ scrollToErrorField: propTypes.exports.bool
18242
18348
  };
18243
18349
 
18244
18350
  var _excluded$i = ["size", "type", "label", "error", "suffix", "prefix", "disabled", "helpText", "className", "nakedInput", "contentSize", "required", "maxLength", "unlimitedChars", "labelProps"];
@@ -18373,22 +18479,6 @@ FormikInput.propTypes = {
18373
18479
  name: propTypes.exports.string
18374
18480
  };
18375
18481
 
18376
- function _arrayWithoutHoles$1(arr) {
18377
- if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
18378
- }
18379
-
18380
- function _iterableToArray$1(iter) {
18381
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
18382
- }
18383
-
18384
- function _nonIterableSpread$1() {
18385
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
18386
- }
18387
-
18388
- function _toConsumableArray$1(arr) {
18389
- return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread$1();
18390
- }
18391
-
18392
18482
  function _extends() {
18393
18483
  _extends = Object.assign ? Object.assign.bind() : function (target) {
18394
18484
  for (var i = 1; i < arguments.length; i++) {