@rolder-kit/ui 0.1.0-alpha.9 → 0.1.0-beta.1

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.
@@ -0,0 +1,610 @@
1
+ import * as __rspack_external__testing_library_react_f5b64048 from "@testing-library/react";
2
+ import * as __rspack_external_react_jsx_runtime_225474f2 from "react/jsx-runtime";
3
+ import * as __rspack_external_vitest from "vitest";
4
+ var __webpack_modules__ = {
5
+ "./src/__tests__/formFields.test.tsx" (module, __webpack_exports__, __webpack_require__) {
6
+ __webpack_require__.a(module, async function(__rspack_load_async_deps, __rspack_async_done) {
7
+ try {
8
+ __webpack_require__.r(__webpack_exports__);
9
+ var react_jsx_runtime__rspack_import_0 = __webpack_require__("react/jsx-runtime");
10
+ var _testing_library_react__rspack_import_1 = __webpack_require__("@testing-library/react");
11
+ var vitest__rspack_import_2 = __webpack_require__("vitest");
12
+ const mockField = {
13
+ name: 'testField',
14
+ state: {
15
+ value: 'initial',
16
+ meta: {
17
+ errors: []
18
+ }
19
+ },
20
+ handleChange: vitest__rspack_import_2.vi.fn(),
21
+ handleBlur: vitest__rspack_import_2.vi.fn(),
22
+ setValue: vitest__rspack_import_2.vi.fn()
23
+ };
24
+ vitest__rspack_import_2.vi.mock('../form/context', ()=>({
25
+ useFieldContext: ()=>mockField
26
+ }));
27
+ vitest__rspack_import_2.vi.mock('@mantine/core', ()=>({
28
+ TextInput: ({ name, value, onChange, onBlur, error, rightSection, ...props })=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsxs)("div", {
29
+ children: [
30
+ /*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("input", {
31
+ "data-testid": "text-input",
32
+ name: name,
33
+ value: value,
34
+ onChange: onChange,
35
+ onBlur: onBlur,
36
+ "data-error": error || '',
37
+ ...props
38
+ }),
39
+ rightSection
40
+ ]
41
+ }),
42
+ NumberInput: ({ name, value, onChange, onBlur, error, ...props })=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("input", {
43
+ "data-testid": "number-input",
44
+ name: name,
45
+ value: value,
46
+ onChange: ()=>onChange(42),
47
+ onBlur: onBlur,
48
+ "data-error": error || '',
49
+ ...props
50
+ }),
51
+ Textarea: ({ name, value, onChange, onBlur, error, ...props })=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("textarea", {
52
+ "data-testid": "textarea",
53
+ name: name,
54
+ value: value,
55
+ onChange: onChange,
56
+ onBlur: onBlur,
57
+ "data-error": error || '',
58
+ ...props
59
+ }),
60
+ PasswordInput: ({ name, value, onChange, onBlur, error, label, placeholder, size, ...props })=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("input", {
61
+ "data-testid": "password-input",
62
+ type: "password",
63
+ name: name,
64
+ value: value,
65
+ onChange: onChange,
66
+ onBlur: onBlur,
67
+ "data-error": error || '',
68
+ "data-label": label,
69
+ "data-placeholder": placeholder,
70
+ "data-size": size,
71
+ ...props
72
+ }),
73
+ Select: ({ name, value, onChange, onBlur, error, ...props })=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("select", {
74
+ "data-testid": "select",
75
+ name: name,
76
+ value: value || '',
77
+ onChange: ()=>onChange('option1'),
78
+ onBlur: onBlur,
79
+ "data-error": error || '',
80
+ ...props
81
+ }),
82
+ MultiSelect: ({ name, value, onChange, onBlur, error, ...props })=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("div", {
83
+ "data-testid": "multi-select",
84
+ "data-name": name,
85
+ "data-value": JSON.stringify(value),
86
+ "data-error": error || '',
87
+ onClick: ()=>onChange([
88
+ 'a',
89
+ 'b'
90
+ ]),
91
+ ...props
92
+ }),
93
+ Switch: ({ name, checked, onChange, error, w, ...props })=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("input", {
94
+ "data-testid": "switch",
95
+ type: "checkbox",
96
+ name: name,
97
+ checked: checked,
98
+ onChange: onChange,
99
+ "data-error": error || '',
100
+ "data-w": w,
101
+ ...props
102
+ }),
103
+ ActionIcon: ({ children, onClick, ...props })=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("button", {
104
+ "data-testid": "action-icon",
105
+ onClick: onClick,
106
+ ...props,
107
+ children: children
108
+ })
109
+ }));
110
+ vitest__rspack_import_2.vi.mock('@tabler/icons-react', ()=>({
111
+ IconRefresh: ()=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("span", {
112
+ "data-testid": "refresh-icon"
113
+ })
114
+ }));
115
+ vitest__rspack_import_2.vi.mock('omgopass', ()=>({
116
+ default: vitest__rspack_import_2.vi.fn(()=>'generated-password')
117
+ }));
118
+ vitest__rspack_import_2.vi.mock('@uiw/react-codemirror', ()=>({
119
+ default: (props)=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("div", {})
120
+ }));
121
+ vitest__rspack_import_2.vi.mock('@codemirror/commands', ()=>({
122
+ indentSelection: vitest__rspack_import_2.vi.fn()
123
+ }));
124
+ vitest__rspack_import_2.vi.mock('@codemirror/lang-json', ()=>({
125
+ json: vitest__rspack_import_2.vi.fn(),
126
+ jsonParseLinter: vitest__rspack_import_2.vi.fn(()=>vitest__rspack_import_2.vi.fn())
127
+ }));
128
+ vitest__rspack_import_2.vi.mock('@codemirror/lint', ()=>({
129
+ linter: vitest__rspack_import_2.vi.fn()
130
+ }));
131
+ vitest__rspack_import_2.vi.mock('@codemirror/view', ()=>({
132
+ keymap: {
133
+ of: vitest__rspack_import_2.vi.fn()
134
+ }
135
+ }));
136
+ vitest__rspack_import_2.vi.mock('@rolder-kit/tanstack/cookie', ()=>({
137
+ getCookie: vitest__rspack_import_2.vi.fn(()=>'dark')
138
+ }));
139
+ vitest__rspack_import_2.vi.mock('@uiw/codemirror-theme-vscode', ()=>({
140
+ vscodeDark: 'dark',
141
+ vscodeLight: 'light'
142
+ }));
143
+ vitest__rspack_import_2.vi.mock('../JsonInput', ()=>({
144
+ JsonInput: ({ value, onChange, onBlur, ...props })=>/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)("textarea", {
145
+ "data-testid": "json-input",
146
+ value: value,
147
+ onChange: (e)=>onChange(e.target.value),
148
+ onBlur: onBlur,
149
+ ...props
150
+ })
151
+ }));
152
+ const { TextField } = await import("../form/fields/TextField.js");
153
+ const { NumberField } = await import("../form/fields/NumberField.js");
154
+ const { TextareaField } = await import("../form/fields/TextareaField.js");
155
+ const { PasswordField } = await import("../form/fields/PasswordField.js");
156
+ const { TextPasswordField } = await import("../form/fields/TextPasswordField.js");
157
+ const { SelectField } = await import("../form/fields/SelectField.js");
158
+ const { MultiSelectField } = await import("../form/fields/MultiSelectField.js");
159
+ const { SwitchField } = await import("../form/fields/SwitchField.js");
160
+ const { JsonField } = await import("../form/fields/JsonField.js");
161
+ (0, vitest__rspack_import_2.describe)('TextField', ()=>{
162
+ (0, vitest__rspack_import_2.afterEach)(()=>{
163
+ (0, _testing_library_react__rspack_import_1.cleanup)();
164
+ vitest__rspack_import_2.vi.clearAllMocks();
165
+ });
166
+ (0, vitest__rspack_import_2.it)('renders with field value', ()=>{
167
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextField, {}));
168
+ const input = _testing_library_react__rspack_import_1.screen.getByTestId('text-input');
169
+ (0, vitest__rspack_import_2.expect)(input.value).toBe('initial');
170
+ });
171
+ (0, vitest__rspack_import_2.it)('calls handleChange on input', ()=>{
172
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextField, {}));
173
+ const input = _testing_library_react__rspack_import_1.screen.getByTestId('text-input');
174
+ _testing_library_react__rspack_import_1.fireEvent.change(input, {
175
+ target: {
176
+ value: 'new'
177
+ }
178
+ });
179
+ (0, vitest__rspack_import_2.expect)(mockField.handleChange).toHaveBeenCalledWith('new');
180
+ });
181
+ (0, vitest__rspack_import_2.it)('calls handleBlur on blur', ()=>{
182
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextField, {}));
183
+ _testing_library_react__rspack_import_1.fireEvent.blur(_testing_library_react__rspack_import_1.screen.getByTestId('text-input'));
184
+ (0, vitest__rspack_import_2.expect)(mockField.handleBlur).toHaveBeenCalled();
185
+ });
186
+ (0, vitest__rspack_import_2.it)('shows errors joined by comma', ()=>{
187
+ mockField.state.meta.errors = [
188
+ {
189
+ message: 'err1'
190
+ },
191
+ {
192
+ message: 'err2'
193
+ }
194
+ ];
195
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextField, {}));
196
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('text-input').getAttribute('data-error')).toBe('err1, err2');
197
+ mockField.state.meta.errors = [];
198
+ });
199
+ (0, vitest__rspack_import_2.it)('uses empty string for falsy value', ()=>{
200
+ mockField.state.value = '';
201
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextField, {}));
202
+ const input = _testing_library_react__rspack_import_1.screen.getByTestId('text-input');
203
+ (0, vitest__rspack_import_2.expect)(input.value).toBe('');
204
+ mockField.state.value = 'initial';
205
+ });
206
+ });
207
+ (0, vitest__rspack_import_2.describe)('NumberField', ()=>{
208
+ (0, vitest__rspack_import_2.afterEach)(()=>{
209
+ (0, _testing_library_react__rspack_import_1.cleanup)();
210
+ vitest__rspack_import_2.vi.clearAllMocks();
211
+ });
212
+ (0, vitest__rspack_import_2.it)('renders with field value', ()=>{
213
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(NumberField, {}));
214
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('number-input')).toBeDefined();
215
+ });
216
+ (0, vitest__rspack_import_2.it)('calls handleChange with number value', ()=>{
217
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(NumberField, {}));
218
+ _testing_library_react__rspack_import_1.fireEvent.change(_testing_library_react__rspack_import_1.screen.getByTestId('number-input'), {
219
+ target: {
220
+ value: '42'
221
+ }
222
+ });
223
+ (0, vitest__rspack_import_2.expect)(mockField.handleChange).toHaveBeenCalledWith(42);
224
+ });
225
+ (0, vitest__rspack_import_2.it)('shows error messages', ()=>{
226
+ mockField.state.meta.errors = [
227
+ {
228
+ message: 'invalid'
229
+ }
230
+ ];
231
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(NumberField, {}));
232
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('number-input').getAttribute('data-error')).toBe('invalid');
233
+ mockField.state.meta.errors = [];
234
+ });
235
+ (0, vitest__rspack_import_2.it)('calls handleBlur on blur', ()=>{
236
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(NumberField, {}));
237
+ _testing_library_react__rspack_import_1.fireEvent.blur(_testing_library_react__rspack_import_1.screen.getByTestId('number-input'));
238
+ (0, vitest__rspack_import_2.expect)(mockField.handleBlur).toHaveBeenCalled();
239
+ });
240
+ });
241
+ (0, vitest__rspack_import_2.describe)('TextareaField', ()=>{
242
+ (0, vitest__rspack_import_2.afterEach)(()=>{
243
+ (0, _testing_library_react__rspack_import_1.cleanup)();
244
+ vitest__rspack_import_2.vi.clearAllMocks();
245
+ });
246
+ (0, vitest__rspack_import_2.it)('renders textarea', ()=>{
247
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextareaField, {}));
248
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('textarea')).toBeDefined();
249
+ });
250
+ (0, vitest__rspack_import_2.it)('calls handleChange with text value', ()=>{
251
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextareaField, {}));
252
+ _testing_library_react__rspack_import_1.fireEvent.change(_testing_library_react__rspack_import_1.screen.getByTestId('textarea'), {
253
+ target: {
254
+ value: 'text'
255
+ }
256
+ });
257
+ (0, vitest__rspack_import_2.expect)(mockField.handleChange).toHaveBeenCalledWith('text');
258
+ });
259
+ (0, vitest__rspack_import_2.it)('shows error messages', ()=>{
260
+ mockField.state.meta.errors = [
261
+ {
262
+ message: 'too long'
263
+ }
264
+ ];
265
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextareaField, {}));
266
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('textarea').getAttribute('data-error')).toBe('too long');
267
+ mockField.state.meta.errors = [];
268
+ });
269
+ (0, vitest__rspack_import_2.it)('calls handleBlur on blur', ()=>{
270
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextareaField, {}));
271
+ _testing_library_react__rspack_import_1.fireEvent.blur(_testing_library_react__rspack_import_1.screen.getByTestId('textarea'));
272
+ (0, vitest__rspack_import_2.expect)(mockField.handleBlur).toHaveBeenCalled();
273
+ });
274
+ });
275
+ (0, vitest__rspack_import_2.describe)('PasswordField', ()=>{
276
+ (0, vitest__rspack_import_2.afterEach)(()=>{
277
+ (0, _testing_library_react__rspack_import_1.cleanup)();
278
+ vitest__rspack_import_2.vi.clearAllMocks();
279
+ });
280
+ (0, vitest__rspack_import_2.it)('renders with fixed label and placeholder', ()=>{
281
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(PasswordField, {}));
282
+ const input = _testing_library_react__rspack_import_1.screen.getByTestId('password-input');
283
+ (0, vitest__rspack_import_2.expect)(input.getAttribute('data-label')).toBe('Пароль');
284
+ (0, vitest__rspack_import_2.expect)(input.getAttribute('data-placeholder')).toBe('Введите пароль');
285
+ });
286
+ (0, vitest__rspack_import_2.it)('renders with size lg', ()=>{
287
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(PasswordField, {}));
288
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('password-input').getAttribute('data-size')).toBe('lg');
289
+ });
290
+ (0, vitest__rspack_import_2.it)('calls handleChange on input', ()=>{
291
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(PasswordField, {}));
292
+ _testing_library_react__rspack_import_1.fireEvent.change(_testing_library_react__rspack_import_1.screen.getByTestId('password-input'), {
293
+ target: {
294
+ value: 'secret'
295
+ }
296
+ });
297
+ (0, vitest__rspack_import_2.expect)(mockField.handleChange).toHaveBeenCalledWith('secret');
298
+ });
299
+ (0, vitest__rspack_import_2.it)('calls handleBlur on blur', ()=>{
300
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(PasswordField, {}));
301
+ _testing_library_react__rspack_import_1.fireEvent.blur(_testing_library_react__rspack_import_1.screen.getByTestId('password-input'));
302
+ (0, vitest__rspack_import_2.expect)(mockField.handleBlur).toHaveBeenCalled();
303
+ });
304
+ (0, vitest__rspack_import_2.it)('shows error messages', ()=>{
305
+ mockField.state.meta.errors = [
306
+ {
307
+ message: 'too short'
308
+ }
309
+ ];
310
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(PasswordField, {}));
311
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('password-input').getAttribute('data-error')).toBe('too short');
312
+ mockField.state.meta.errors = [];
313
+ });
314
+ });
315
+ (0, vitest__rspack_import_2.describe)('TextPasswordField', ()=>{
316
+ (0, vitest__rspack_import_2.afterEach)(()=>{
317
+ (0, _testing_library_react__rspack_import_1.cleanup)();
318
+ vitest__rspack_import_2.vi.clearAllMocks();
319
+ });
320
+ (0, vitest__rspack_import_2.it)('renders text input with refresh button', ()=>{
321
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextPasswordField, {}));
322
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('text-input')).toBeDefined();
323
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('action-icon')).toBeDefined();
324
+ });
325
+ (0, vitest__rspack_import_2.it)('generates password on refresh click', ()=>{
326
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextPasswordField, {}));
327
+ _testing_library_react__rspack_import_1.fireEvent.click(_testing_library_react__rspack_import_1.screen.getByTestId('action-icon'));
328
+ (0, vitest__rspack_import_2.expect)(mockField.setValue).toHaveBeenCalledWith('generated-password');
329
+ });
330
+ (0, vitest__rspack_import_2.it)('calls handleChange on input', ()=>{
331
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextPasswordField, {}));
332
+ _testing_library_react__rspack_import_1.fireEvent.change(_testing_library_react__rspack_import_1.screen.getByTestId('text-input'), {
333
+ target: {
334
+ value: 'pass'
335
+ }
336
+ });
337
+ (0, vitest__rspack_import_2.expect)(mockField.handleChange).toHaveBeenCalledWith('pass');
338
+ });
339
+ (0, vitest__rspack_import_2.it)('calls handleBlur on blur', ()=>{
340
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextPasswordField, {}));
341
+ _testing_library_react__rspack_import_1.fireEvent.blur(_testing_library_react__rspack_import_1.screen.getByTestId('text-input'));
342
+ (0, vitest__rspack_import_2.expect)(mockField.handleBlur).toHaveBeenCalled();
343
+ });
344
+ (0, vitest__rspack_import_2.it)('shows error messages', ()=>{
345
+ mockField.state.meta.errors = [
346
+ {
347
+ message: 'required'
348
+ }
349
+ ];
350
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(TextPasswordField, {}));
351
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('text-input').getAttribute('data-error')).toBe('required');
352
+ mockField.state.meta.errors = [];
353
+ });
354
+ });
355
+ (0, vitest__rspack_import_2.describe)('SelectField', ()=>{
356
+ (0, vitest__rspack_import_2.afterEach)(()=>{
357
+ (0, _testing_library_react__rspack_import_1.cleanup)();
358
+ vitest__rspack_import_2.vi.clearAllMocks();
359
+ });
360
+ (0, vitest__rspack_import_2.it)('renders select', ()=>{
361
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(SelectField, {}));
362
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('select')).toBeDefined();
363
+ });
364
+ (0, vitest__rspack_import_2.it)('calls handleChange on select', ()=>{
365
+ mockField.state.value = null;
366
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(SelectField, {}));
367
+ _testing_library_react__rspack_import_1.fireEvent.change(_testing_library_react__rspack_import_1.screen.getByTestId('select'));
368
+ (0, vitest__rspack_import_2.expect)(mockField.handleChange).toHaveBeenCalledWith('option1');
369
+ mockField.state.value = 'initial';
370
+ });
371
+ (0, vitest__rspack_import_2.it)('shows error messages', ()=>{
372
+ mockField.state.meta.errors = [
373
+ {
374
+ message: 'choose one'
375
+ }
376
+ ];
377
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(SelectField, {}));
378
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('select').getAttribute('data-error')).toBe('choose one');
379
+ mockField.state.meta.errors = [];
380
+ });
381
+ (0, vitest__rspack_import_2.it)('calls handleBlur on blur', ()=>{
382
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(SelectField, {}));
383
+ _testing_library_react__rspack_import_1.fireEvent.blur(_testing_library_react__rspack_import_1.screen.getByTestId('select'));
384
+ (0, vitest__rspack_import_2.expect)(mockField.handleBlur).toHaveBeenCalled();
385
+ });
386
+ });
387
+ (0, vitest__rspack_import_2.describe)('MultiSelectField', ()=>{
388
+ (0, vitest__rspack_import_2.afterEach)(()=>{
389
+ (0, _testing_library_react__rspack_import_1.cleanup)();
390
+ vitest__rspack_import_2.vi.clearAllMocks();
391
+ });
392
+ (0, vitest__rspack_import_2.it)('renders multi-select', ()=>{
393
+ mockField.state.value = [];
394
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(MultiSelectField, {}));
395
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('multi-select')).toBeDefined();
396
+ mockField.state.value = 'initial';
397
+ });
398
+ (0, vitest__rspack_import_2.it)('calls handleChange with array', ()=>{
399
+ mockField.state.value = [];
400
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(MultiSelectField, {}));
401
+ _testing_library_react__rspack_import_1.fireEvent.click(_testing_library_react__rspack_import_1.screen.getByTestId('multi-select'));
402
+ (0, vitest__rspack_import_2.expect)(mockField.handleChange).toHaveBeenCalledWith([
403
+ 'a',
404
+ 'b'
405
+ ]);
406
+ mockField.state.value = 'initial';
407
+ });
408
+ (0, vitest__rspack_import_2.it)('shows error messages', ()=>{
409
+ mockField.state.value = [];
410
+ mockField.state.meta.errors = [
411
+ {
412
+ message: 'pick at least one'
413
+ }
414
+ ];
415
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(MultiSelectField, {}));
416
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('multi-select').getAttribute('data-error')).toBe('pick at least one');
417
+ mockField.state.meta.errors = [];
418
+ mockField.state.value = 'initial';
419
+ });
420
+ });
421
+ (0, vitest__rspack_import_2.describe)('SwitchField', ()=>{
422
+ (0, vitest__rspack_import_2.afterEach)(()=>{
423
+ (0, _testing_library_react__rspack_import_1.cleanup)();
424
+ vitest__rspack_import_2.vi.clearAllMocks();
425
+ });
426
+ (0, vitest__rspack_import_2.it)('renders switch', ()=>{
427
+ mockField.state.value = true;
428
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(SwitchField, {}));
429
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('switch')).toBeDefined();
430
+ mockField.state.value = 'initial';
431
+ });
432
+ (0, vitest__rspack_import_2.it)('uses checked prop', ()=>{
433
+ mockField.state.value = true;
434
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(SwitchField, {}));
435
+ const sw = _testing_library_react__rspack_import_1.screen.getByTestId('switch');
436
+ (0, vitest__rspack_import_2.expect)(sw.checked).toBe(true);
437
+ mockField.state.value = 'initial';
438
+ });
439
+ (0, vitest__rspack_import_2.it)('sets width to fit-content', ()=>{
440
+ mockField.state.value = false;
441
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(SwitchField, {}));
442
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('switch').getAttribute('data-w')).toBe('fit-content');
443
+ mockField.state.value = 'initial';
444
+ });
445
+ (0, vitest__rspack_import_2.it)('calls handleChange with checked value', ()=>{
446
+ mockField.state.value = false;
447
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(SwitchField, {}));
448
+ _testing_library_react__rspack_import_1.fireEvent.click(_testing_library_react__rspack_import_1.screen.getByTestId('switch'));
449
+ (0, vitest__rspack_import_2.expect)(mockField.handleChange).toHaveBeenCalled();
450
+ mockField.state.value = 'initial';
451
+ });
452
+ (0, vitest__rspack_import_2.it)('shows error messages', ()=>{
453
+ mockField.state.value = false;
454
+ mockField.state.meta.errors = [
455
+ {
456
+ message: 'required'
457
+ }
458
+ ];
459
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(SwitchField, {}));
460
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('switch').getAttribute('data-error')).toBe('required');
461
+ mockField.state.meta.errors = [];
462
+ mockField.state.value = 'initial';
463
+ });
464
+ });
465
+ (0, vitest__rspack_import_2.describe)('JsonField', ()=>{
466
+ (0, vitest__rspack_import_2.afterEach)(()=>{
467
+ (0, _testing_library_react__rspack_import_1.cleanup)();
468
+ vitest__rspack_import_2.vi.clearAllMocks();
469
+ });
470
+ (0, vitest__rspack_import_2.it)('renders json input', ()=>{
471
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(JsonField, {}));
472
+ (0, vitest__rspack_import_2.expect)(_testing_library_react__rspack_import_1.screen.getByTestId('json-input')).toBeDefined();
473
+ });
474
+ (0, vitest__rspack_import_2.it)('calls handleChange on input', ()=>{
475
+ (0, _testing_library_react__rspack_import_1.render)(/*#__PURE__*/ (0, react_jsx_runtime__rspack_import_0.jsx)(JsonField, {}));
476
+ _testing_library_react__rspack_import_1.fireEvent.change(_testing_library_react__rspack_import_1.screen.getByTestId('json-input'), {
477
+ target: {
478
+ value: '{}'
479
+ }
480
+ });
481
+ (0, vitest__rspack_import_2.expect)(mockField.handleChange).toHaveBeenCalledWith('{}');
482
+ });
483
+ });
484
+ __rspack_async_done();
485
+ } catch (e) {
486
+ __rspack_async_done(e);
487
+ }
488
+ }, 1);
489
+ },
490
+ "@testing-library/react" (module) {
491
+ module.exports = __rspack_external__testing_library_react_f5b64048;
492
+ },
493
+ "react/jsx-runtime" (module) {
494
+ module.exports = __rspack_external_react_jsx_runtime_225474f2;
495
+ },
496
+ vitest (module) {
497
+ module.exports = __rspack_external_vitest;
498
+ }
499
+ };
500
+ var __webpack_module_cache__ = {};
501
+ function __webpack_require__(moduleId) {
502
+ var cachedModule = __webpack_module_cache__[moduleId];
503
+ if (void 0 !== cachedModule) return cachedModule.exports;
504
+ var module = __webpack_module_cache__[moduleId] = {
505
+ exports: {}
506
+ };
507
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
508
+ return module.exports;
509
+ }
510
+ (()=>{
511
+ var hasSymbol = "function" == typeof Symbol;
512
+ var rspackQueues = hasSymbol ? Symbol("rspack queues") : "__rspack_queues";
513
+ var rspackExports = __webpack_require__.aE = hasSymbol ? Symbol("rspack exports") : "__webpack_exports__";
514
+ var rspackError = hasSymbol ? Symbol("rspack error") : "__rspack_error";
515
+ var rspackDone = hasSymbol ? Symbol("rspack done") : "__rspack_done";
516
+ var rspackDefer = __webpack_require__.zS = hasSymbol ? Symbol("rspack defer") : "__rspack_defer";
517
+ var resolveQueue = (queue)=>{
518
+ if (queue && queue.d < 1) {
519
+ queue.d = 1;
520
+ queue.forEach((fn)=>fn.r--);
521
+ queue.forEach((fn)=>fn.r-- ? fn.r++ : fn());
522
+ }
523
+ };
524
+ var wrapDeps = (deps)=>deps.map((dep)=>{
525
+ if (null !== dep && "object" == typeof dep) {
526
+ if (!dep[rspackQueues] && dep[rspackDefer]) {
527
+ var asyncDeps = dep[rspackDefer];
528
+ var hasUnresolvedAsyncSubgraph = asyncDeps.some((id)=>{
529
+ var cache = __webpack_module_cache__[id];
530
+ return !cache || false === cache[rspackDone];
531
+ });
532
+ if (!hasUnresolvedAsyncSubgraph) return dep;
533
+ var d = dep;
534
+ dep = {
535
+ then (callback) {
536
+ Promise.all(asyncDeps.map(__webpack_require__)).then(()=>callback(d));
537
+ }
538
+ };
539
+ }
540
+ if (dep[rspackQueues]) return dep;
541
+ if (dep.then) {
542
+ var queue = [];
543
+ queue.d = 0;
544
+ dep.then((r)=>{
545
+ obj[rspackExports] = r;
546
+ resolveQueue(queue);
547
+ }, (e)=>{
548
+ obj[rspackError] = e;
549
+ resolveQueue(queue);
550
+ });
551
+ var obj = {};
552
+ obj[rspackDefer] = false;
553
+ obj[rspackQueues] = (fn)=>fn(queue);
554
+ return obj;
555
+ }
556
+ }
557
+ var ret = {};
558
+ ret[rspackQueues] = ()=>{};
559
+ ret[rspackExports] = dep;
560
+ return ret;
561
+ });
562
+ __webpack_require__.a = (module, body, hasAwait)=>{
563
+ var queue;
564
+ hasAwait && ((queue = []).d = -1);
565
+ var depQueues = new Set();
566
+ var exports = module.exports;
567
+ var currentDeps;
568
+ var outerResolve;
569
+ var reject;
570
+ var promise = new Promise((resolve, rej)=>{
571
+ reject = rej;
572
+ outerResolve = resolve;
573
+ });
574
+ promise[rspackExports] = exports;
575
+ promise[rspackQueues] = (fn)=>{
576
+ queue && fn(queue), depQueues.forEach(fn), promise["catch"](()=>{});
577
+ };
578
+ module.exports = promise;
579
+ var handle = (deps)=>{
580
+ currentDeps = wrapDeps(deps);
581
+ var fn;
582
+ var getResult = ()=>currentDeps.map((d)=>{
583
+ if (d[rspackDefer]) return d;
584
+ if (d[rspackError]) throw d[rspackError];
585
+ return d[rspackExports];
586
+ });
587
+ var promise = new Promise((resolve)=>{
588
+ fn = ()=>resolve(getResult);
589
+ fn.r = 0;
590
+ var fnQueue = (q)=>q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn)));
591
+ currentDeps.map((dep)=>dep[rspackDefer] || dep[rspackQueues](fnQueue));
592
+ });
593
+ return fn.r ? promise : getResult();
594
+ };
595
+ var done = (err)=>(err ? reject(promise[rspackError] = err) : outerResolve(exports), resolveQueue(queue), promise[rspackDone] = true);
596
+ body(handle, done);
597
+ queue && queue.d < 0 && (queue.d = 0);
598
+ };
599
+ })();
600
+ (()=>{
601
+ __webpack_require__.r = (exports)=>{
602
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports, Symbol.toStringTag, {
603
+ value: 'Module'
604
+ });
605
+ Object.defineProperty(exports, '__esModule', {
606
+ value: true
607
+ });
608
+ };
609
+ })();
610
+ __webpack_require__("./src/__tests__/formFields.test.tsx");