@itcase/storybook-config 1.2.71 → 1.2.73

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.
Files changed (32) hide show
  1. package/README.md +9 -0
  2. package/dist/FormSubmitWrapper-kEv1DMjn.js +296 -0
  3. package/dist/{_rollupPluginBabelHelpers-D8XyM9rZ.js → _rollupPluginBabelHelpers-B1r4NF8e.js} +61 -0
  4. package/dist/cjs/components/FormSubmitWrapper.js +2 -2
  5. package/dist/cjs/decorators/withFigmaSourceLink.js +59 -3
  6. package/dist/cjs/decorators/withFormSubmitDecorator.js +1128 -6
  7. package/dist/cjs/decorators/withNextDecorator.js +7 -12
  8. package/dist/cjs/decorators/withUiDecorator.js +4 -9
  9. package/dist/cjs/decorators.js +6 -8
  10. package/dist/components/EmailTemplatePreview.js +2 -2
  11. package/dist/components/FormSubmitWrapper-obAauTlP.js +294 -0
  12. package/dist/components/FormSubmitWrapper.js +2 -2
  13. package/dist/components/{_rollupPluginBabelHelpers-DQ-fuxJg.js → _rollupPluginBabelHelpers-CEVa9ZMs.js} +61 -1
  14. package/dist/components/isArray-CPoGkdXv.js +43 -0
  15. package/dist/config/sourceLink/sourceLink.js +8 -16
  16. package/dist/decorators/withClearStoresDecorator.js +2 -2
  17. package/dist/decorators/withExtraProviders.js +2 -2
  18. package/dist/decorators/withFigmaSourceLink.js +61 -5
  19. package/dist/decorators/withFormSubmitDecorator.js +1131 -9
  20. package/dist/decorators/withLayoutDecorator.js +9 -9
  21. package/dist/decorators/withNextDecorator.js +8 -13
  22. package/dist/decorators/withUiDecorator.js +5 -10
  23. package/dist/decorators.js +6 -8
  24. package/dist/isArray-DJguRq_2.js +47 -0
  25. package/dist/utils/handleMSWParameters.js +20 -8
  26. package/dist/utils/index.js +2 -0
  27. package/dist/utils/storybookServerErrorOnSubmit.js +21 -0
  28. package/package.json +35 -29
  29. package/dist/FormSubmitWrapper-DXUEGLuS.js +0 -247
  30. package/dist/Notification-Cqx2_tCE.js +0 -7945
  31. package/dist/components/FormSubmitWrapper-YokGjDrh.js +0 -245
  32. package/dist/components/Notification-qLYjGbKN.js +0 -7923
@@ -1,245 +0,0 @@
1
- import { _ as _asyncToGenerator, c as _regenerator, a as _objectSpread2 } from './_rollupPluginBabelHelpers-DQ-fuxJg.js';
2
- import React__default, { useRef, useEffect } from 'react';
3
-
4
- var SUBMIT_TIMEOUT_MS = 5000;
5
- var SUBMIT_POLL_MS = 50;
6
- function getMountRoot() {
7
- var _document$getElementB;
8
- return (_document$getElementB = document.getElementById('storybook-root')) !== null && _document$getElementB !== void 0 ? _document$getElementB : document.body;
9
- }
10
- function sleep() {
11
- var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SUBMIT_POLL_MS;
12
- return new Promise(function (resolve) {
13
- setTimeout(resolve, ms);
14
- });
15
- }
16
- function findSubmitButton(root) {
17
- var _root$querySelector;
18
- if (!root) {
19
- return null;
20
- }
21
- return (_root$querySelector = root.querySelector('button[type="submit"]')) !== null && _root$querySelector !== void 0 ? _root$querySelector : root.querySelector('button.form__button-item');
22
- }
23
- function isSubmitButton(button) {
24
- return (button === null || button === void 0 ? void 0 : button.type) === 'submit';
25
- }
26
- function canUseFormApi(form) {
27
- return typeof (form === null || form === void 0 ? void 0 : form.submit) === 'function';
28
- }
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;
34
- }
35
- var fieldName = (_config$field = config.field) !== null && _config$field !== void 0 ? _config$field : form.getRegisteredFields()[0];
36
- if (!fieldName) {
37
- return;
38
- }
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);
43
- }
44
- }
45
- function triggerFormSubmit(_ref) {
46
- var _submitButton$closest, _submitButton$closest2;
47
- var form = _ref.form,
48
- submitButton = _ref.submitButton;
49
- if (isSubmitButton(submitButton)) {
50
- submitButton.click();
51
- return;
52
- }
53
- if (canUseFormApi(form)) {
54
- form.submit();
55
- return;
56
- }
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);
58
- }
59
- function getSubmitTarget(formRef) {
60
- var submitButton = findSubmitButton(getMountRoot());
61
- return {
62
- canSubmit: Boolean(submitButton) || canUseFormApi(formRef.current),
63
- form: formRef.current,
64
- submitButton: submitButton
65
- };
66
- }
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) {
95
- return _autoSubmitForm.apply(this, arguments);
96
- }
97
- function _autoSubmitForm() {
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;
108
- return _regenerator().w(function (_context) {
109
- while (1) switch (_context.n) {
110
- case 0:
111
- formSubmitConfig = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
112
- signal = _args.length > 2 ? _args[2] : undefined;
113
- didPrepareUnchangedSubmit = false;
114
- deadline = Date.now() + SUBMIT_TIMEOUT_MS;
115
- case 1:
116
- if (!(Date.now() < deadline && !signal.aborted)) {
117
- _context.n = 6;
118
- break;
119
- }
120
- _getSubmitTarget = getSubmitTarget(formRef), canSubmit = _getSubmitTarget.canSubmit, form = _getSubmitTarget.form, submitButton = _getSubmitTarget.submitButton;
121
- if (canSubmit) {
122
- _context.n = 3;
123
- break;
124
- }
125
- _context.n = 2;
126
- return sleep();
127
- case 2:
128
- return _context.a(3, 1);
129
- case 3:
130
- if (!(formSubmitConfig !== null && formSubmitConfig !== void 0 && formSubmitConfig.allowUnchangedSubmit && !didPrepareUnchangedSubmit)) {
131
- _context.n = 5;
132
- break;
133
- }
134
- prepareFormForAutoSubmit(form, formSubmitConfig);
135
- didPrepareUnchangedSubmit = true;
136
- _context.n = 4;
137
- return sleep();
138
- case 4:
139
- return _context.a(3, 1);
140
- case 5:
141
- triggerFormSubmit({
142
- form: form,
143
- submitButton: submitButton
144
- });
145
- return _context.a(2);
146
- case 6:
147
- return _context.a(2);
148
- }
149
- }, _callee);
150
- }));
151
- return _autoSubmitForm.apply(this, arguments);
152
- }
153
-
154
- function wrapRender(component, render, formRef) {
155
- if (!component || typeof render !== 'function') {
156
- return render;
157
- }
158
- return function renderWithRef(storyArgs) {
159
- var args = _objectSpread2({}, storyArgs !== null && storyArgs !== void 0 ? storyArgs : {});
160
- delete args.ref;
161
- return /*#__PURE__*/React__default.createElement(component, _objectSpread2({
162
- ref: formRef
163
- }, args));
164
- };
165
- }
166
- function withFormRef(children, formRef, bindings) {
167
- var _ref, _children$props, _ref2, _children$props2, _ref3, _children$props3;
168
- var component = bindings.component,
169
- args = bindings.args,
170
- storyRender = bindings.render,
171
- allArgs = bindings.allArgs,
172
- context = bindings.context;
173
- var storyComponent = (_ref = component !== null && component !== void 0 ? component : context === null || context === void 0 ? void 0 : context.component) !== null && _ref !== void 0 ? _ref : children === null || children === void 0 || (_children$props = children.props) === null || _children$props === void 0 ? void 0 : _children$props.component;
174
- var storyRenderFn = (_ref2 = storyRender !== null && storyRender !== void 0 ? storyRender : context === null || context === void 0 ? void 0 : context.render) !== null && _ref2 !== void 0 ? _ref2 : children === null || children === void 0 || (_children$props2 = children.props) === null || _children$props2 === void 0 ? void 0 : _children$props2.render;
175
- var boundRender = wrapRender(storyComponent, storyRenderFn, formRef);
176
- var addRef = function addRef(value) {
177
- return value ? _objectSpread2(_objectSpread2({}, value), {}, {
178
- ref: formRef
179
- }) : value;
180
- };
181
- return /*#__PURE__*/React__default.cloneElement(children, {
182
- component: storyComponent,
183
- args: addRef((_ref3 = args !== null && args !== void 0 ? args : context === null || context === void 0 ? void 0 : context.args) !== null && _ref3 !== void 0 ? _ref3 : children === null || children === void 0 || (_children$props3 = children.props) === null || _children$props3 === void 0 ? void 0 : _children$props3.args),
184
- render: boundRender,
185
- allArgs: addRef(allArgs),
186
- context: context ? _objectSpread2(_objectSpread2({}, context), {}, {
187
- component: storyComponent,
188
- args: addRef(context.args),
189
- render: boundRender,
190
- allArgs: addRef(context.allArgs)
191
- }) : context
192
- });
193
- }
194
-
195
- /**
196
- * Авто-submit для интерактивного Storybook (Require / Validation / ServerError).
197
- * При primaryButtonHtmlType="button" вызывает formRef.current.submit() (final-form API)
198
- * и вешает click на кнопку, чтобы ручной submit тоже работал.
199
- * В Vitest не используется — submit делается в play.
200
- */
201
- function FormSubmitWrapper(props) {
202
- var formRef = useRef(null);
203
- var component = props.component,
204
- args = props.args,
205
- parameters = props.parameters,
206
- render = props.render,
207
- allArgs = props.allArgs,
208
- context = props.context,
209
- _props$submit = props.submit,
210
- submit = _props$submit === void 0 ? true : _props$submit,
211
- children = props.children;
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]);
224
- useEffect(function () {
225
- if (!submit) {
226
- return undefined;
227
- }
228
- var abortController = new AbortController();
229
- autoSubmitForm(formRef, formSubmitConfig, abortController.signal);
230
- return function () {
231
- abortController.abort();
232
- };
233
- }, [formSubmitConfig, submit]);
234
-
235
- // eslint-disable-next-line react-hooks/refs -- ref уходит в createElement внутри bound render
236
- return withFormRef(children, formRef, {
237
- component: component,
238
- args: args,
239
- render: render,
240
- allArgs: allArgs,
241
- context: context
242
- });
243
- }
244
-
245
- export { FormSubmitWrapper as F };