@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.
- package/README.md +9 -0
- package/dist/FormSubmitWrapper-kEv1DMjn.js +296 -0
- package/dist/{_rollupPluginBabelHelpers-D8XyM9rZ.js → _rollupPluginBabelHelpers-B1r4NF8e.js} +61 -0
- package/dist/cjs/components/FormSubmitWrapper.js +2 -2
- package/dist/cjs/decorators/withFigmaSourceLink.js +59 -3
- package/dist/cjs/decorators/withFormSubmitDecorator.js +1128 -6
- package/dist/cjs/decorators/withNextDecorator.js +7 -12
- package/dist/cjs/decorators/withUiDecorator.js +4 -9
- package/dist/cjs/decorators.js +6 -8
- package/dist/components/EmailTemplatePreview.js +2 -2
- package/dist/components/FormSubmitWrapper-obAauTlP.js +294 -0
- package/dist/components/FormSubmitWrapper.js +2 -2
- package/dist/components/{_rollupPluginBabelHelpers-DQ-fuxJg.js → _rollupPluginBabelHelpers-CEVa9ZMs.js} +61 -1
- package/dist/components/isArray-CPoGkdXv.js +43 -0
- package/dist/config/sourceLink/sourceLink.js +8 -16
- package/dist/decorators/withClearStoresDecorator.js +2 -2
- package/dist/decorators/withExtraProviders.js +2 -2
- package/dist/decorators/withFigmaSourceLink.js +61 -5
- package/dist/decorators/withFormSubmitDecorator.js +1131 -9
- package/dist/decorators/withLayoutDecorator.js +9 -9
- package/dist/decorators/withNextDecorator.js +8 -13
- package/dist/decorators/withUiDecorator.js +5 -10
- package/dist/decorators.js +6 -8
- package/dist/isArray-DJguRq_2.js +47 -0
- package/dist/utils/handleMSWParameters.js +20 -8
- package/dist/utils/index.js +2 -0
- package/dist/utils/storybookServerErrorOnSubmit.js +21 -0
- package/package.json +35 -29
- package/dist/FormSubmitWrapper-DXUEGLuS.js +0 -247
- package/dist/Notification-Cqx2_tCE.js +0 -7945
- package/dist/components/FormSubmitWrapper-YokGjDrh.js +0 -245
- 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 };
|