@itcase/storybook-config 1.2.70 → 1.2.71

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.
@@ -3,11 +3,11 @@
3
3
  var _rollupPluginBabelHelpers = require('./_rollupPluginBabelHelpers-D8XyM9rZ.js');
4
4
  var React = require('react');
5
5
 
6
- var SUBMIT_TIMEOUT_MS = 15000;
6
+ var SUBMIT_TIMEOUT_MS = 5000;
7
7
  var SUBMIT_POLL_MS = 50;
8
8
  function getMountRoot() {
9
- var _ref, _document$getElementB;
10
- return (_ref = (_document$getElementB = document.getElementById('storybook-root')) !== null && _document$getElementB !== void 0 ? _document$getElementB : document.getElementById('root')) !== null && _ref !== void 0 ? _ref : document.body;
9
+ var _document$getElementB;
10
+ return (_document$getElementB = document.getElementById('storybook-root')) !== null && _document$getElementB !== void 0 ? _document$getElementB : document.body;
11
11
  }
12
12
  function sleep() {
13
13
  var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SUBMIT_POLL_MS;
@@ -15,145 +15,137 @@ function sleep() {
15
15
  setTimeout(resolve, ms);
16
16
  });
17
17
  }
18
- function prepareFormForAutoSubmit(form) {
19
- var _config$field, _fieldState$value, _config$suffix;
20
- var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
21
- var fieldNames = typeof (form === null || form === void 0 ? void 0 : form.getRegisteredFields) === 'function' ? form.getRegisteredFields() : [];
22
- var fieldName = (_config$field = config.field) !== null && _config$field !== void 0 ? _config$field : fieldNames[0];
23
- if (!fieldName) {
24
- return false;
25
- }
26
- var fieldState = form.getFieldState(fieldName);
27
- var value = (_fieldState$value = fieldState === null || fieldState === void 0 ? void 0 : fieldState.value) !== null && _fieldState$value !== void 0 ? _fieldState$value : '';
28
- var suffix = (_config$suffix = config.suffix) !== null && _config$suffix !== void 0 ? _config$suffix : "\u200B";
29
- var nextValue = "".concat(value).concat(suffix);
30
- if (nextValue === value) {
31
- return false;
32
- }
33
- form.change(fieldName, nextValue);
34
- return true;
35
- }
36
18
  function findSubmitButton(root) {
19
+ var _root$querySelector;
37
20
  if (!root) {
38
21
  return null;
39
22
  }
40
- var byType = root.querySelector('button[type="submit"]');
41
- if (byType) {
42
- return byType;
43
- }
44
- var form = root.querySelector('form[data-testid], form');
45
- if (!form) {
46
- return null;
47
- }
48
- var primaryInGroup = form.querySelector('.form__button .form__button-item, .form__button-item');
49
- if (primaryInGroup) {
50
- return primaryInGroup;
51
- }
52
- var byTestId = form.querySelector('button[data-testid*="Submit"], button[data-testid*="SignIn"], button[data-testid*="Create"]');
53
- return byTestId;
23
+ return (_root$querySelector = root.querySelector('button[type="submit"]')) !== null && _root$querySelector !== void 0 ? _root$querySelector : root.querySelector('button.form__button-item');
54
24
  }
55
- function canSubmitFormApi(form) {
56
- return typeof (form === null || form === void 0 ? void 0 : form.submit) === 'function' && typeof (form === null || form === void 0 ? void 0 : form.getRegisteredFields) === 'function' && form.getRegisteredFields().length > 0;
25
+ function isSubmitButton(button) {
26
+ return (button === null || button === void 0 ? void 0 : button.type) === 'submit';
57
27
  }
58
- function isNativeSubmitButton(button) {
59
- if (!button) {
60
- return false;
61
- }
62
- var type = button.type || button.getAttribute('type');
63
- return type === 'submit';
28
+ function canUseFormApi(form) {
29
+ return typeof (form === null || form === void 0 ? void 0 : form.submit) === 'function';
64
30
  }
65
- function triggerFormSubmit(_ref2) {
66
- var form = _ref2.form,
67
- submitButton = _ref2.submitButton;
68
- if (isNativeSubmitButton(submitButton)) {
69
- submitButton.click();
70
- return true;
31
+ function prepareFormForAutoSubmit(form) {
32
+ var _config$field, _form$getFieldState$v, _form$getFieldState, _config$suffix;
33
+ var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
34
+ if (!canUseFormApi(form) || typeof form.getRegisteredFields !== 'function') {
35
+ return;
71
36
  }
72
- if (canSubmitFormApi(form)) {
73
- form.submit();
74
- return true;
37
+ var fieldName = (_config$field = config.field) !== null && _config$field !== void 0 ? _config$field : form.getRegisteredFields()[0];
38
+ if (!fieldName) {
39
+ return;
75
40
  }
76
- var htmlForm = submitButton === null || submitButton === void 0 ? void 0 : submitButton.closest('form');
77
- if (htmlForm && typeof htmlForm.requestSubmit === 'function') {
78
- htmlForm.requestSubmit();
79
- return true;
41
+ var value = (_form$getFieldState$v = (_form$getFieldState = form.getFieldState(fieldName)) === null || _form$getFieldState === void 0 ? void 0 : _form$getFieldState.value) !== null && _form$getFieldState$v !== void 0 ? _form$getFieldState$v : '';
42
+ var nextValue = "".concat(value).concat((_config$suffix = config.suffix) !== null && _config$suffix !== void 0 ? _config$suffix : "\u200B");
43
+ if (nextValue !== value) {
44
+ form.change(fieldName, nextValue);
80
45
  }
81
- if (submitButton) {
46
+ }
47
+ function triggerFormSubmit(_ref) {
48
+ var _submitButton$closest, _submitButton$closest2;
49
+ var form = _ref.form,
50
+ submitButton = _ref.submitButton;
51
+ if (isSubmitButton(submitButton)) {
82
52
  submitButton.click();
83
- return true;
53
+ return;
54
+ }
55
+ if (canUseFormApi(form)) {
56
+ form.submit();
57
+ return;
84
58
  }
85
- return false;
59
+ submitButton === null || submitButton === void 0 || (_submitButton$closest = submitButton.closest('form')) === null || _submitButton$closest === void 0 || (_submitButton$closest2 = _submitButton$closest.requestSubmit) === null || _submitButton$closest2 === void 0 || _submitButton$closest2.call(_submitButton$closest);
86
60
  }
87
- function getFormSubmitTarget(formRef) {
88
- var root = getMountRoot();
89
- var submitButton = findSubmitButton(root);
90
- var form = formRef.current;
91
- var hasFields = typeof (form === null || form === void 0 ? void 0 : form.getRegisteredFields) === 'function' && form.getRegisteredFields().length > 0;
61
+ function getSubmitTarget(formRef) {
62
+ var submitButton = findSubmitButton(getMountRoot());
92
63
  return {
93
- canMarkForm: Boolean(form && hasFields),
94
- canSubmit: Boolean(submitButton) || canSubmitFormApi(form),
95
- form: form,
64
+ canSubmit: Boolean(submitButton) || canUseFormApi(formRef.current),
65
+ form: formRef.current,
96
66
  submitButton: submitButton
97
67
  };
98
68
  }
99
- function autoSubmitForm(_x, _x2, _x3) {
69
+ function bindSubmitButtonClick(formRef, signal) {
70
+ var root = getMountRoot();
71
+ if (!root) {
72
+ return undefined;
73
+ }
74
+ var handler = function handler(event) {
75
+ if (signal.aborted) {
76
+ return;
77
+ }
78
+ var submitButton = findSubmitButton(root);
79
+ if (!submitButton || isSubmitButton(submitButton)) {
80
+ return;
81
+ }
82
+ if (event.target !== submitButton && !submitButton.contains(event.target)) {
83
+ return;
84
+ }
85
+ event.preventDefault();
86
+ triggerFormSubmit({
87
+ form: formRef.current,
88
+ submitButton: submitButton
89
+ });
90
+ };
91
+ root.addEventListener('click', handler, true);
92
+ return function () {
93
+ root.removeEventListener('click', handler, true);
94
+ };
95
+ }
96
+ function autoSubmitForm(_x) {
100
97
  return _autoSubmitForm.apply(this, arguments);
101
98
  }
102
99
  function _autoSubmitForm() {
103
- _autoSubmitForm = _rollupPluginBabelHelpers._asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers._regenerator().m(function _callee(formRef, formSubmitConfig, signal) {
104
- var deadline, didPrepareUnchangedSubmit, _getFormSubmitTarget, canMarkForm, canSubmit, form, submitButton;
100
+ _autoSubmitForm = _rollupPluginBabelHelpers._asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers._regenerator().m(function _callee(formRef) {
101
+ var formSubmitConfig,
102
+ signal,
103
+ didPrepareUnchangedSubmit,
104
+ deadline,
105
+ _getSubmitTarget,
106
+ canSubmit,
107
+ form,
108
+ submitButton,
109
+ _args = arguments;
105
110
  return _rollupPluginBabelHelpers._regenerator().w(function (_context) {
106
111
  while (1) switch (_context.n) {
107
112
  case 0:
108
- deadline = Date.now() + SUBMIT_TIMEOUT_MS;
113
+ formSubmitConfig = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
114
+ signal = _args.length > 2 ? _args[2] : undefined;
109
115
  didPrepareUnchangedSubmit = false;
116
+ deadline = Date.now() + SUBMIT_TIMEOUT_MS;
110
117
  case 1:
111
- if (!(Date.now() < deadline)) {
112
- _context.n = 9;
113
- break;
114
- }
115
- if (!signal.aborted) {
116
- _context.n = 2;
118
+ if (!(Date.now() < deadline && !signal.aborted)) {
119
+ _context.n = 6;
117
120
  break;
118
121
  }
119
- return _context.a(2);
120
- case 2:
121
- _getFormSubmitTarget = getFormSubmitTarget(formRef), canMarkForm = _getFormSubmitTarget.canMarkForm, canSubmit = _getFormSubmitTarget.canSubmit, form = _getFormSubmitTarget.form, submitButton = _getFormSubmitTarget.submitButton;
122
+ _getSubmitTarget = getSubmitTarget(formRef), canSubmit = _getSubmitTarget.canSubmit, form = _getSubmitTarget.form, submitButton = _getSubmitTarget.submitButton;
122
123
  if (canSubmit) {
123
- _context.n = 4;
124
+ _context.n = 3;
124
125
  break;
125
126
  }
126
- _context.n = 3;
127
+ _context.n = 2;
127
128
  return sleep();
128
- case 3:
129
+ case 2:
129
130
  return _context.a(3, 1);
130
- case 4:
131
+ case 3:
131
132
  if (!(formSubmitConfig !== null && formSubmitConfig !== void 0 && formSubmitConfig.allowUnchangedSubmit && !didPrepareUnchangedSubmit)) {
132
- _context.n = 8;
133
- break;
134
- }
135
- if (!canMarkForm) {
136
- _context.n = 6;
133
+ _context.n = 5;
137
134
  break;
138
135
  }
139
136
  prepareFormForAutoSubmit(form, formSubmitConfig);
140
137
  didPrepareUnchangedSubmit = true;
141
- _context.n = 5;
138
+ _context.n = 4;
142
139
  return sleep();
143
- case 5:
144
- return _context.a(3, 1);
145
- case 6:
146
- _context.n = 7;
147
- return sleep();
148
- case 7:
140
+ case 4:
149
141
  return _context.a(3, 1);
150
- case 8:
142
+ case 5:
151
143
  triggerFormSubmit({
152
144
  form: form,
153
145
  submitButton: submitButton
154
146
  });
155
147
  return _context.a(2);
156
- case 9:
148
+ case 6:
157
149
  return _context.a(2);
158
150
  }
159
151
  }, _callee);
@@ -204,7 +196,8 @@ function withFormRef(children, formRef, bindings) {
204
196
 
205
197
  /**
206
198
  * Авто-submit для интерактивного Storybook (Require / Validation / ServerError).
207
- * При type="button" вызывает formRef.current.submit() (final-form API).
199
+ * При primaryButtonHtmlType="button" вызывает formRef.current.submit() (final-form API)
200
+ * и вешает click на кнопку, чтобы ручной submit тоже работал.
208
201
  * В Vitest не используется — submit делается в play.
209
202
  */
210
203
  function FormSubmitWrapper(props) {
@@ -219,6 +212,17 @@ function FormSubmitWrapper(props) {
219
212
  submit = _props$submit === void 0 ? true : _props$submit,
220
213
  children = props.children;
221
214
  var formSubmitConfig = parameters === null || parameters === void 0 ? void 0 : parameters.formSubmit;
215
+ React.useEffect(function () {
216
+ if (!submit) {
217
+ return undefined;
218
+ }
219
+ var abortController = new AbortController();
220
+ var unbindClick = bindSubmitButtonClick(formRef, abortController.signal);
221
+ return function () {
222
+ abortController.abort();
223
+ unbindClick === null || unbindClick === void 0 || unbindClick();
224
+ };
225
+ }, [formSubmitConfig, submit]);
222
226
  React.useEffect(function () {
223
227
  if (!submit) {
224
228
  return undefined;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var FormSubmitWrapper = require('../../FormSubmitWrapper-DA2tkSEl.js');
3
+ var FormSubmitWrapper = require('../../FormSubmitWrapper-DXUEGLuS.js');
4
4
  require('../../_rollupPluginBabelHelpers-D8XyM9rZ.js');
5
5
  require('react');
6
6
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var FormSubmitWrapper = require('../../FormSubmitWrapper-DA2tkSEl.js');
4
+ var FormSubmitWrapper = require('../../FormSubmitWrapper-DXUEGLuS.js');
5
5
  require('lodash/camelCase');
6
6
  require('@itcase/common');
7
7
  require('msw');
@@ -10,7 +10,7 @@ var withUiDecorator = require('./decorators/withUiDecorator.js');
10
10
  require('react');
11
11
  require('../_rollupPluginBabelHelpers-D8XyM9rZ.js');
12
12
  require('lodash/castArray');
13
- require('../FormSubmitWrapper-DA2tkSEl.js');
13
+ require('../FormSubmitWrapper-DXUEGLuS.js');
14
14
  require('lodash/camelCase');
15
15
  require('@itcase/common');
16
16
  require('msw');
@@ -1,11 +1,11 @@
1
1
  import { _ as _asyncToGenerator, c as _regenerator, a as _objectSpread2 } from './_rollupPluginBabelHelpers-DQ-fuxJg.js';
2
2
  import React__default, { useRef, useEffect } from 'react';
3
3
 
4
- var SUBMIT_TIMEOUT_MS = 15000;
4
+ var SUBMIT_TIMEOUT_MS = 5000;
5
5
  var SUBMIT_POLL_MS = 50;
6
6
  function getMountRoot() {
7
- var _ref, _document$getElementB;
8
- return (_ref = (_document$getElementB = document.getElementById('storybook-root')) !== null && _document$getElementB !== void 0 ? _document$getElementB : document.getElementById('root')) !== null && _ref !== void 0 ? _ref : document.body;
7
+ var _document$getElementB;
8
+ return (_document$getElementB = document.getElementById('storybook-root')) !== null && _document$getElementB !== void 0 ? _document$getElementB : document.body;
9
9
  }
10
10
  function sleep() {
11
11
  var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SUBMIT_POLL_MS;
@@ -13,145 +13,137 @@ function sleep() {
13
13
  setTimeout(resolve, ms);
14
14
  });
15
15
  }
16
- function prepareFormForAutoSubmit(form) {
17
- var _config$field, _fieldState$value, _config$suffix;
18
- var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
19
- var fieldNames = typeof (form === null || form === void 0 ? void 0 : form.getRegisteredFields) === 'function' ? form.getRegisteredFields() : [];
20
- var fieldName = (_config$field = config.field) !== null && _config$field !== void 0 ? _config$field : fieldNames[0];
21
- if (!fieldName) {
22
- return false;
23
- }
24
- var fieldState = form.getFieldState(fieldName);
25
- var value = (_fieldState$value = fieldState === null || fieldState === void 0 ? void 0 : fieldState.value) !== null && _fieldState$value !== void 0 ? _fieldState$value : '';
26
- var suffix = (_config$suffix = config.suffix) !== null && _config$suffix !== void 0 ? _config$suffix : "\u200B";
27
- var nextValue = "".concat(value).concat(suffix);
28
- if (nextValue === value) {
29
- return false;
30
- }
31
- form.change(fieldName, nextValue);
32
- return true;
33
- }
34
16
  function findSubmitButton(root) {
17
+ var _root$querySelector;
35
18
  if (!root) {
36
19
  return null;
37
20
  }
38
- var byType = root.querySelector('button[type="submit"]');
39
- if (byType) {
40
- return byType;
41
- }
42
- var form = root.querySelector('form[data-testid], form');
43
- if (!form) {
44
- return null;
45
- }
46
- var primaryInGroup = form.querySelector('.form__button .form__button-item, .form__button-item');
47
- if (primaryInGroup) {
48
- return primaryInGroup;
49
- }
50
- var byTestId = form.querySelector('button[data-testid*="Submit"], button[data-testid*="SignIn"], button[data-testid*="Create"]');
51
- return byTestId;
21
+ return (_root$querySelector = root.querySelector('button[type="submit"]')) !== null && _root$querySelector !== void 0 ? _root$querySelector : root.querySelector('button.form__button-item');
52
22
  }
53
- function canSubmitFormApi(form) {
54
- return typeof (form === null || form === void 0 ? void 0 : form.submit) === 'function' && typeof (form === null || form === void 0 ? void 0 : form.getRegisteredFields) === 'function' && form.getRegisteredFields().length > 0;
23
+ function isSubmitButton(button) {
24
+ return (button === null || button === void 0 ? void 0 : button.type) === 'submit';
55
25
  }
56
- function isNativeSubmitButton(button) {
57
- if (!button) {
58
- return false;
59
- }
60
- var type = button.type || button.getAttribute('type');
61
- return type === 'submit';
26
+ function canUseFormApi(form) {
27
+ return typeof (form === null || form === void 0 ? void 0 : form.submit) === 'function';
62
28
  }
63
- function triggerFormSubmit(_ref2) {
64
- var form = _ref2.form,
65
- submitButton = _ref2.submitButton;
66
- if (isNativeSubmitButton(submitButton)) {
67
- submitButton.click();
68
- return true;
29
+ function prepareFormForAutoSubmit(form) {
30
+ var _config$field, _form$getFieldState$v, _form$getFieldState, _config$suffix;
31
+ var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
32
+ if (!canUseFormApi(form) || typeof form.getRegisteredFields !== 'function') {
33
+ return;
69
34
  }
70
- if (canSubmitFormApi(form)) {
71
- form.submit();
72
- return true;
35
+ var fieldName = (_config$field = config.field) !== null && _config$field !== void 0 ? _config$field : form.getRegisteredFields()[0];
36
+ if (!fieldName) {
37
+ return;
73
38
  }
74
- var htmlForm = submitButton === null || submitButton === void 0 ? void 0 : submitButton.closest('form');
75
- if (htmlForm && typeof htmlForm.requestSubmit === 'function') {
76
- htmlForm.requestSubmit();
77
- return true;
39
+ var value = (_form$getFieldState$v = (_form$getFieldState = form.getFieldState(fieldName)) === null || _form$getFieldState === void 0 ? void 0 : _form$getFieldState.value) !== null && _form$getFieldState$v !== void 0 ? _form$getFieldState$v : '';
40
+ var nextValue = "".concat(value).concat((_config$suffix = config.suffix) !== null && _config$suffix !== void 0 ? _config$suffix : "\u200B");
41
+ if (nextValue !== value) {
42
+ form.change(fieldName, nextValue);
78
43
  }
79
- if (submitButton) {
44
+ }
45
+ function triggerFormSubmit(_ref) {
46
+ var _submitButton$closest, _submitButton$closest2;
47
+ var form = _ref.form,
48
+ submitButton = _ref.submitButton;
49
+ if (isSubmitButton(submitButton)) {
80
50
  submitButton.click();
81
- return true;
51
+ return;
52
+ }
53
+ if (canUseFormApi(form)) {
54
+ form.submit();
55
+ return;
82
56
  }
83
- return false;
57
+ submitButton === null || submitButton === void 0 || (_submitButton$closest = submitButton.closest('form')) === null || _submitButton$closest === void 0 || (_submitButton$closest2 = _submitButton$closest.requestSubmit) === null || _submitButton$closest2 === void 0 || _submitButton$closest2.call(_submitButton$closest);
84
58
  }
85
- function getFormSubmitTarget(formRef) {
86
- var root = getMountRoot();
87
- var submitButton = findSubmitButton(root);
88
- var form = formRef.current;
89
- var hasFields = typeof (form === null || form === void 0 ? void 0 : form.getRegisteredFields) === 'function' && form.getRegisteredFields().length > 0;
59
+ function getSubmitTarget(formRef) {
60
+ var submitButton = findSubmitButton(getMountRoot());
90
61
  return {
91
- canMarkForm: Boolean(form && hasFields),
92
- canSubmit: Boolean(submitButton) || canSubmitFormApi(form),
93
- form: form,
62
+ canSubmit: Boolean(submitButton) || canUseFormApi(formRef.current),
63
+ form: formRef.current,
94
64
  submitButton: submitButton
95
65
  };
96
66
  }
97
- function autoSubmitForm(_x, _x2, _x3) {
67
+ function bindSubmitButtonClick(formRef, signal) {
68
+ var root = getMountRoot();
69
+ if (!root) {
70
+ return undefined;
71
+ }
72
+ var handler = function handler(event) {
73
+ if (signal.aborted) {
74
+ return;
75
+ }
76
+ var submitButton = findSubmitButton(root);
77
+ if (!submitButton || isSubmitButton(submitButton)) {
78
+ return;
79
+ }
80
+ if (event.target !== submitButton && !submitButton.contains(event.target)) {
81
+ return;
82
+ }
83
+ event.preventDefault();
84
+ triggerFormSubmit({
85
+ form: formRef.current,
86
+ submitButton: submitButton
87
+ });
88
+ };
89
+ root.addEventListener('click', handler, true);
90
+ return function () {
91
+ root.removeEventListener('click', handler, true);
92
+ };
93
+ }
94
+ function autoSubmitForm(_x) {
98
95
  return _autoSubmitForm.apply(this, arguments);
99
96
  }
100
97
  function _autoSubmitForm() {
101
- _autoSubmitForm = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(formRef, formSubmitConfig, signal) {
102
- var deadline, didPrepareUnchangedSubmit, _getFormSubmitTarget, canMarkForm, canSubmit, form, submitButton;
98
+ _autoSubmitForm = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(formRef) {
99
+ var formSubmitConfig,
100
+ signal,
101
+ didPrepareUnchangedSubmit,
102
+ deadline,
103
+ _getSubmitTarget,
104
+ canSubmit,
105
+ form,
106
+ submitButton,
107
+ _args = arguments;
103
108
  return _regenerator().w(function (_context) {
104
109
  while (1) switch (_context.n) {
105
110
  case 0:
106
- deadline = Date.now() + SUBMIT_TIMEOUT_MS;
111
+ formSubmitConfig = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
112
+ signal = _args.length > 2 ? _args[2] : undefined;
107
113
  didPrepareUnchangedSubmit = false;
114
+ deadline = Date.now() + SUBMIT_TIMEOUT_MS;
108
115
  case 1:
109
- if (!(Date.now() < deadline)) {
110
- _context.n = 9;
111
- break;
112
- }
113
- if (!signal.aborted) {
114
- _context.n = 2;
116
+ if (!(Date.now() < deadline && !signal.aborted)) {
117
+ _context.n = 6;
115
118
  break;
116
119
  }
117
- return _context.a(2);
118
- case 2:
119
- _getFormSubmitTarget = getFormSubmitTarget(formRef), canMarkForm = _getFormSubmitTarget.canMarkForm, canSubmit = _getFormSubmitTarget.canSubmit, form = _getFormSubmitTarget.form, submitButton = _getFormSubmitTarget.submitButton;
120
+ _getSubmitTarget = getSubmitTarget(formRef), canSubmit = _getSubmitTarget.canSubmit, form = _getSubmitTarget.form, submitButton = _getSubmitTarget.submitButton;
120
121
  if (canSubmit) {
121
- _context.n = 4;
122
+ _context.n = 3;
122
123
  break;
123
124
  }
124
- _context.n = 3;
125
+ _context.n = 2;
125
126
  return sleep();
126
- case 3:
127
+ case 2:
127
128
  return _context.a(3, 1);
128
- case 4:
129
+ case 3:
129
130
  if (!(formSubmitConfig !== null && formSubmitConfig !== void 0 && formSubmitConfig.allowUnchangedSubmit && !didPrepareUnchangedSubmit)) {
130
- _context.n = 8;
131
- break;
132
- }
133
- if (!canMarkForm) {
134
- _context.n = 6;
131
+ _context.n = 5;
135
132
  break;
136
133
  }
137
134
  prepareFormForAutoSubmit(form, formSubmitConfig);
138
135
  didPrepareUnchangedSubmit = true;
139
- _context.n = 5;
136
+ _context.n = 4;
140
137
  return sleep();
141
- case 5:
142
- return _context.a(3, 1);
143
- case 6:
144
- _context.n = 7;
145
- return sleep();
146
- case 7:
138
+ case 4:
147
139
  return _context.a(3, 1);
148
- case 8:
140
+ case 5:
149
141
  triggerFormSubmit({
150
142
  form: form,
151
143
  submitButton: submitButton
152
144
  });
153
145
  return _context.a(2);
154
- case 9:
146
+ case 6:
155
147
  return _context.a(2);
156
148
  }
157
149
  }, _callee);
@@ -202,7 +194,8 @@ function withFormRef(children, formRef, bindings) {
202
194
 
203
195
  /**
204
196
  * Авто-submit для интерактивного Storybook (Require / Validation / ServerError).
205
- * При type="button" вызывает formRef.current.submit() (final-form API).
197
+ * При primaryButtonHtmlType="button" вызывает formRef.current.submit() (final-form API)
198
+ * и вешает click на кнопку, чтобы ручной submit тоже работал.
206
199
  * В Vitest не используется — submit делается в play.
207
200
  */
208
201
  function FormSubmitWrapper(props) {
@@ -217,6 +210,17 @@ function FormSubmitWrapper(props) {
217
210
  submit = _props$submit === void 0 ? true : _props$submit,
218
211
  children = props.children;
219
212
  var formSubmitConfig = parameters === null || parameters === void 0 ? void 0 : parameters.formSubmit;
213
+ useEffect(function () {
214
+ if (!submit) {
215
+ return undefined;
216
+ }
217
+ var abortController = new AbortController();
218
+ var unbindClick = bindSubmitButtonClick(formRef, abortController.signal);
219
+ return function () {
220
+ abortController.abort();
221
+ unbindClick === null || unbindClick === void 0 || unbindClick();
222
+ };
223
+ }, [formSubmitConfig, submit]);
220
224
  useEffect(function () {
221
225
  if (!submit) {
222
226
  return undefined;
@@ -1,3 +1,3 @@
1
- export { F as FormSubmitWrapper } from './FormSubmitWrapper--d5p3re1.js';
1
+ export { F as FormSubmitWrapper } from './FormSubmitWrapper-YokGjDrh.js';
2
2
  import './_rollupPluginBabelHelpers-DQ-fuxJg.js';
3
3
  import 'react';
@@ -1,5 +1,5 @@
1
1
  import React__default from 'react';
2
- import { F as FormSubmitWrapper } from '../components/FormSubmitWrapper--d5p3re1.js';
2
+ import { F as FormSubmitWrapper } from '../components/FormSubmitWrapper-YokGjDrh.js';
3
3
  import 'lodash/camelCase';
4
4
  import '@itcase/common';
5
5
  import 'msw';
@@ -8,7 +8,7 @@ export { withUiDecorator } from './decorators/withUiDecorator.js';
8
8
  import 'react';
9
9
  import './components/_rollupPluginBabelHelpers-DQ-fuxJg.js';
10
10
  import 'lodash/castArray';
11
- import './components/FormSubmitWrapper--d5p3re1.js';
11
+ import './components/FormSubmitWrapper-YokGjDrh.js';
12
12
  import 'lodash/camelCase';
13
13
  import '@itcase/common';
14
14
  import 'msw';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itcase/storybook-config",
3
- "version": "1.2.70",
3
+ "version": "1.2.71",
4
4
  "author": "ITCase",
5
5
  "description": "Storybook configuration package",
6
6
  "engines": {
@@ -157,8 +157,6 @@
157
157
  "@storybook/addon-docs": "^10.4.1",
158
158
  "@types/react": "^18",
159
159
  "@types/react-dom": "^18",
160
- "react-docgen": "^8.0.3",
161
- "react-docgen-typescript": "^2.4.0",
162
160
  "babel-plugin-transform-inline-environment-variables": "^0.4.4",
163
161
  "conventional-changelog-conventionalcommits": "^9.3.1",
164
162
  "eslint": "9.39.2",
@@ -168,6 +166,8 @@
168
166
  "next": "^16.2.6",
169
167
  "prettier": "^3.8.3",
170
168
  "react": "^18",
169
+ "react-docgen": "^8.0.3",
170
+ "react-docgen-typescript": "^2.4.0",
171
171
  "react-dom": "^18",
172
172
  "react-native": "0.85.3",
173
173
  "react-native-web": "^0.21.2",