@pie-lib/config-ui 12.1.1-next.2 → 12.1.1-next.4

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 (115) hide show
  1. package/lib/__tests__/alert-dialog.test.js +1 -6
  2. package/lib/__tests__/checkbox.test.js +1 -1
  3. package/lib/__tests__/choice-utils.test.js +1 -3
  4. package/lib/__tests__/form-section.test.js +1 -1
  5. package/lib/__tests__/help.test.js +1 -9
  6. package/lib/__tests__/input.test.js +1 -1
  7. package/lib/__tests__/langs.test.js +1 -11
  8. package/lib/__tests__/number-text-field-custom.test.js +1 -3
  9. package/lib/__tests__/number-text-field.test.js +1 -1
  10. package/lib/__tests__/radio-with-label.test.js +1 -1
  11. package/lib/__tests__/settings-panel.test.js +1 -11
  12. package/lib/__tests__/settings.test.js +1 -1
  13. package/lib/__tests__/tabs.test.js +1 -1
  14. package/lib/__tests__/with-stateful-model.test.js +1 -12
  15. package/lib/alert-dialog.js +1 -2
  16. package/lib/alert-dialog.js.map +1 -1
  17. package/lib/checkbox.js +1 -11
  18. package/lib/checkbox.js.map +1 -1
  19. package/lib/choice-configuration/__tests__/feedback-menu.test.js +1 -1
  20. package/lib/choice-configuration/__tests__/index.test.js +1 -11
  21. package/lib/choice-configuration/feedback-menu.js +1 -6
  22. package/lib/choice-configuration/feedback-menu.js.map +1 -1
  23. package/lib/choice-configuration/index.js +1 -13
  24. package/lib/choice-configuration/index.js.map +1 -1
  25. package/lib/choice-utils.js +3 -14
  26. package/lib/choice-utils.js.map +1 -1
  27. package/lib/feedback-config/__tests__/feedback-config.test.js +1 -11
  28. package/lib/feedback-config/feedback-selector.js +1 -15
  29. package/lib/feedback-config/feedback-selector.js.map +1 -1
  30. package/lib/feedback-config/group.js +1 -6
  31. package/lib/feedback-config/group.js.map +1 -1
  32. package/lib/feedback-config/index.js +3 -20
  33. package/lib/feedback-config/index.js.map +1 -1
  34. package/lib/form-section.js +1 -2
  35. package/lib/form-section.js.map +1 -1
  36. package/lib/help.js +1 -3
  37. package/lib/help.js.map +1 -1
  38. package/lib/index.js +1 -8
  39. package/lib/index.js.map +1 -1
  40. package/lib/input.js +1 -9
  41. package/lib/input.js.map +1 -1
  42. package/lib/inputs.js +1 -11
  43. package/lib/inputs.js.map +1 -1
  44. package/lib/langs.js +1 -6
  45. package/lib/langs.js.map +1 -1
  46. package/lib/layout/config-layout.js +1 -10
  47. package/lib/layout/config-layout.js.map +1 -1
  48. package/lib/layout/index.js +1 -2
  49. package/lib/layout/index.js.map +1 -1
  50. package/lib/layout/layout-contents.js +1 -12
  51. package/lib/layout/layout-contents.js.map +1 -1
  52. package/lib/layout/settings-box.js +1 -3
  53. package/lib/layout/settings-box.js.map +1 -1
  54. package/lib/mui-box/index.js +1 -2
  55. package/lib/mui-box/index.js.map +1 -1
  56. package/lib/number-text-field-custom.js +9 -26
  57. package/lib/number-text-field-custom.js.map +1 -1
  58. package/lib/number-text-field.js +8 -16
  59. package/lib/number-text-field.js.map +1 -1
  60. package/lib/radio-with-label.js +1 -2
  61. package/lib/radio-with-label.js.map +1 -1
  62. package/lib/settings/display-size.js +1 -11
  63. package/lib/settings/display-size.js.map +1 -1
  64. package/lib/settings/index.js +1 -13
  65. package/lib/settings/index.js.map +1 -1
  66. package/lib/settings/panel.js +6 -22
  67. package/lib/settings/panel.js.map +1 -1
  68. package/lib/settings/settings-radio-label.js +1 -2
  69. package/lib/settings/settings-radio-label.js.map +1 -1
  70. package/lib/settings/toggle.js +1 -2
  71. package/lib/settings/toggle.js.map +1 -1
  72. package/lib/tabs/index.js +1 -5
  73. package/lib/tabs/index.js.map +1 -1
  74. package/lib/tags-input/__tests__/index.test.js +1 -1
  75. package/lib/tags-input/index.js +3 -11
  76. package/lib/tags-input/index.js.map +1 -1
  77. package/lib/two-choice.js +1 -14
  78. package/lib/two-choice.js.map +1 -1
  79. package/lib/with-stateful-model.js +1 -3
  80. package/lib/with-stateful-model.js.map +1 -1
  81. package/package.json +6 -6
  82. package/src/__tests__/alert-dialog.test.jsx +13 -113
  83. package/src/__tests__/checkbox.test.jsx +17 -114
  84. package/src/__tests__/form-section.test.jsx +2 -8
  85. package/src/__tests__/help.test.jsx +18 -18
  86. package/src/__tests__/input.test.jsx +22 -58
  87. package/src/__tests__/langs.test.jsx +15 -96
  88. package/src/__tests__/number-text-field-custom.test.jsx +34 -217
  89. package/src/__tests__/number-text-field.test.jsx +21 -99
  90. package/src/__tests__/radio-with-label.test.jsx +19 -123
  91. package/src/__tests__/settings-panel.test.js +1 -1
  92. package/src/__tests__/settings.test.jsx +17 -80
  93. package/src/__tests__/tabs.test.jsx +2 -7
  94. package/src/__tests__/with-stateful-model.test.jsx +3 -9
  95. package/src/alert-dialog.jsx +19 -2
  96. package/src/checkbox.jsx +1 -9
  97. package/src/choice-configuration/__tests__/feedback-menu.test.jsx +6 -18
  98. package/src/choice-configuration/feedback-menu.jsx +7 -1
  99. package/src/choice-utils.js +1 -1
  100. package/src/feedback-config/__tests__/feedback-config.test.jsx +2 -2
  101. package/src/feedback-config/index.jsx +2 -1
  102. package/src/index.js +2 -2
  103. package/src/inputs.jsx +3 -16
  104. package/src/langs.jsx +9 -4
  105. package/src/layout/config-layout.jsx +2 -3
  106. package/src/number-text-field-custom.jsx +5 -3
  107. package/src/number-text-field.jsx +3 -2
  108. package/src/radio-with-label.jsx +1 -5
  109. package/src/settings/display-size.jsx +1 -1
  110. package/src/settings/index.js +1 -1
  111. package/src/settings/panel.jsx +4 -5
  112. package/src/settings/settings-radio-label.jsx +1 -5
  113. package/src/settings/toggle.jsx +1 -5
  114. package/src/tags-input/__tests__/index.test.jsx +1 -1
  115. package/src/tags-input/index.jsx +1 -1
@@ -12,51 +12,26 @@ describe('Checkbox Component', () => {
12
12
 
13
13
  describe('Rendering', () => {
14
14
  it('should render checkbox with label', () => {
15
- render(
16
- <Checkbox
17
- checked={false}
18
- onChange={onChange}
19
- label="Accept terms"
20
- />,
21
- );
15
+ render(<Checkbox checked={false} onChange={onChange} label="Accept terms" />);
22
16
 
23
17
  expect(screen.getByText('Accept terms')).toBeInTheDocument();
24
18
  expect(screen.getByRole('checkbox')).toBeInTheDocument();
25
19
  });
26
20
 
27
21
  it('should render checkbox in checked state', () => {
28
- render(
29
- <Checkbox
30
- checked={true}
31
- onChange={onChange}
32
- label="Accept terms"
33
- />,
34
- );
22
+ render(<Checkbox checked={true} onChange={onChange} label="Accept terms" />);
35
23
 
36
24
  expect(screen.getByRole('checkbox')).toBeChecked();
37
25
  });
38
26
 
39
27
  it('should render checkbox in unchecked state', () => {
40
- render(
41
- <Checkbox
42
- checked={false}
43
- onChange={onChange}
44
- label="Accept terms"
45
- />,
46
- );
28
+ render(<Checkbox checked={false} onChange={onChange} label="Accept terms" />);
47
29
 
48
30
  expect(screen.getByRole('checkbox')).not.toBeChecked();
49
31
  });
50
32
 
51
33
  it('should render mini checkbox with reduced styling', () => {
52
- render(
53
- <Checkbox
54
- checked={false}
55
- onChange={onChange}
56
- label="Mini"
57
- mini={true}
58
- />,
59
- );
34
+ render(<Checkbox checked={false} onChange={onChange} label="Mini" mini={true} />);
60
35
 
61
36
  expect(screen.getByRole('checkbox')).toBeInTheDocument();
62
37
  expect(screen.getByText('Mini')).toBeInTheDocument();
@@ -66,13 +41,7 @@ describe('Checkbox Component', () => {
66
41
  describe('User interaction', () => {
67
42
  it('should call onChange when checkbox is clicked', async () => {
68
43
  const user = userEvent.setup();
69
- render(
70
- <Checkbox
71
- checked={false}
72
- onChange={onChange}
73
- label="Accept"
74
- />,
75
- );
44
+ render(<Checkbox checked={false} onChange={onChange} label="Accept" />);
76
45
 
77
46
  const checkbox = screen.getByRole('checkbox');
78
47
  await user.click(checkbox);
@@ -82,13 +51,7 @@ describe('Checkbox Component', () => {
82
51
 
83
52
  it('should call onChange when label is clicked', async () => {
84
53
  const user = userEvent.setup();
85
- render(
86
- <Checkbox
87
- checked={false}
88
- onChange={onChange}
89
- label="Click label"
90
- />,
91
- );
54
+ render(<Checkbox checked={false} onChange={onChange} label="Click label" />);
92
55
 
93
56
  const label = screen.getByText('Click label');
94
57
  await user.click(label);
@@ -99,27 +62,13 @@ describe('Checkbox Component', () => {
99
62
 
100
63
  describe('Props', () => {
101
64
  it('should handle value prop', () => {
102
- render(
103
- <Checkbox
104
- checked={true}
105
- onChange={onChange}
106
- label="With value"
107
- value="option1"
108
- />,
109
- );
65
+ render(<Checkbox checked={true} onChange={onChange} label="With value" value="option1" />);
110
66
 
111
67
  expect(screen.getByRole('checkbox')).toBeInTheDocument();
112
68
  });
113
69
 
114
70
  it('should display error styling when error is true', () => {
115
- render(
116
- <Checkbox
117
- checked={false}
118
- onChange={onChange}
119
- label="Error state"
120
- error={true}
121
- />,
122
- );
71
+ render(<Checkbox checked={false} onChange={onChange} label="Error state" error={true} />);
123
72
 
124
73
  expect(screen.getByRole('checkbox')).toBeInTheDocument();
125
74
  expect(screen.getByText('Error state')).toBeInTheDocument();
@@ -128,37 +77,19 @@ describe('Checkbox Component', () => {
128
77
 
129
78
  describe('Default props', () => {
130
79
  it('should have mini default to false', () => {
131
- const { container } = render(
132
- <Checkbox
133
- checked={true}
134
- onChange={onChange}
135
- label="Test"
136
- />,
137
- );
80
+ const { container } = render(<Checkbox checked={true} onChange={onChange} label="Test" />);
138
81
 
139
82
  expect(screen.getByRole('checkbox')).toBeInTheDocument();
140
83
  });
141
84
 
142
85
  it('should have error default to false', () => {
143
- const { container } = render(
144
- <Checkbox
145
- checked={true}
146
- onChange={onChange}
147
- label="Test"
148
- />,
149
- );
86
+ const { container } = render(<Checkbox checked={true} onChange={onChange} label="Test" />);
150
87
 
151
88
  expect(screen.getByRole('checkbox')).toBeInTheDocument();
152
89
  });
153
90
 
154
91
  it('should have value default to empty string', () => {
155
- render(
156
- <Checkbox
157
- checked={true}
158
- onChange={onChange}
159
- label="Test"
160
- />,
161
- );
92
+ render(<Checkbox checked={true} onChange={onChange} label="Test" />);
162
93
 
163
94
  expect(screen.getByRole('checkbox')).toBeInTheDocument();
164
95
  });
@@ -166,26 +97,14 @@ describe('Checkbox Component', () => {
166
97
 
167
98
  describe('Accessibility', () => {
168
99
  it('should have proper label association', () => {
169
- render(
170
- <Checkbox
171
- checked={false}
172
- onChange={onChange}
173
- label="Accessible label"
174
- />,
175
- );
100
+ render(<Checkbox checked={false} onChange={onChange} label="Accessible label" />);
176
101
 
177
102
  expect(screen.getByLabelText('Accessible label')).toBeInTheDocument();
178
103
  });
179
104
 
180
105
  it('should be keyboard accessible', async () => {
181
106
  const user = userEvent.setup();
182
- render(
183
- <Checkbox
184
- checked={false}
185
- onChange={onChange}
186
- label="Keyboard test"
187
- />,
188
- );
107
+ render(<Checkbox checked={false} onChange={onChange} label="Keyboard test" />);
189
108
 
190
109
  const checkbox = screen.getByRole('checkbox');
191
110
  checkbox.focus();
@@ -203,16 +122,8 @@ describe('Checkbox Component', () => {
203
122
 
204
123
  render(
205
124
  <>
206
- <Checkbox
207
- checked={true}
208
- onChange={onChange1}
209
- label="Option 1"
210
- />
211
- <Checkbox
212
- checked={false}
213
- onChange={onChange2}
214
- label="Option 2"
215
- />
125
+ <Checkbox checked={true} onChange={onChange1} label="Option 1" />
126
+ <Checkbox checked={false} onChange={onChange2} label="Option 2" />
216
127
  </>,
217
128
  );
218
129
 
@@ -227,16 +138,8 @@ describe('Checkbox Component', () => {
227
138
 
228
139
  render(
229
140
  <>
230
- <Checkbox
231
- checked={true}
232
- onChange={onChange1}
233
- label="Option 1"
234
- />
235
- <Checkbox
236
- checked={false}
237
- onChange={onChange2}
238
- label="Option 2"
239
- />
141
+ <Checkbox checked={true} onChange={onChange1} label="Option 1" />
142
+ <Checkbox checked={false} onChange={onChange2} label="Option 2" />
240
143
  </>,
241
144
  );
242
145
 
@@ -147,10 +147,7 @@ describe('FormSection Component', () => {
147
147
 
148
148
  it('should apply labelExtraStyle to the label', () => {
149
149
  const { container } = render(
150
- <FormSection
151
- label="Styled Label"
152
- labelExtraStyle={{ color: 'red', fontWeight: 'bold' }}
153
- >
150
+ <FormSection label="Styled Label" labelExtraStyle={{ color: 'red', fontWeight: 'bold' }}>
154
151
  <div>Content</div>
155
152
  </FormSection>,
156
153
  );
@@ -168,10 +165,7 @@ describe('FormSection Component', () => {
168
165
  };
169
166
 
170
167
  const { container } = render(
171
- <FormSection
172
- label="Multi-styled"
173
- labelExtraStyle={extraStyle}
174
- >
168
+ <FormSection label="Multi-styled" labelExtraStyle={extraStyle}>
175
169
  <div>Content</div>
176
170
  </FormSection>,
177
171
  );
@@ -14,10 +14,10 @@ describe('HelpButton', () => {
14
14
  const user = userEvent.setup();
15
15
  const onClick = jest.fn();
16
16
  render(<HelpButton onClick={onClick} />);
17
-
17
+
18
18
  const button = screen.getByRole('button');
19
19
  await user.click(button);
20
-
20
+
21
21
  expect(onClick).toHaveBeenCalledTimes(1);
22
22
  });
23
23
 
@@ -66,10 +66,10 @@ describe('HelpDialog', () => {
66
66
  const user = userEvent.setup();
67
67
  const onClose = jest.fn();
68
68
  render(<HelpDialog {...defaultProps} onClose={onClose} />);
69
-
69
+
70
70
  const okButton = screen.getByRole('button', { name: /OK/i });
71
71
  await user.click(okButton);
72
-
72
+
73
73
  expect(onClose).toHaveBeenCalledTimes(1);
74
74
  });
75
75
 
@@ -77,7 +77,7 @@ describe('HelpDialog', () => {
77
77
  const user = userEvent.setup();
78
78
  const onClose = jest.fn();
79
79
  render(<HelpDialog {...defaultProps} onClose={onClose} />);
80
-
80
+
81
81
  // Simulate backdrop click by calling onClose (MUI Dialog prop)
82
82
  const dialog = screen.getByRole('dialog', { hidden: true });
83
83
  expect(dialog).toBeInTheDocument();
@@ -96,7 +96,7 @@ describe('HelpDialog', () => {
96
96
  {content.map((line, i) => (
97
97
  <div key={i}>{line}</div>
98
98
  ))}
99
- </HelpDialog>
99
+ </HelpDialog>,
100
100
  );
101
101
  expect(screen.getByText('Line 1')).toBeInTheDocument();
102
102
  expect(screen.getByText('Line 2')).toBeInTheDocument();
@@ -123,10 +123,10 @@ describe('Help Component', () => {
123
123
  it('opens dialog when help button is clicked', async () => {
124
124
  const user = userEvent.setup();
125
125
  render(<Help {...defaultProps} />);
126
-
126
+
127
127
  const button = screen.getByRole('button');
128
128
  await user.click(button);
129
-
129
+
130
130
  expect(screen.getByText('Help Title')).toBeInTheDocument();
131
131
  expect(screen.getByText('Help content')).toBeInTheDocument();
132
132
  });
@@ -134,13 +134,13 @@ describe('Help Component', () => {
134
134
  it('closes dialog when OK button is clicked', async () => {
135
135
  const user = userEvent.setup();
136
136
  render(<Help {...defaultProps} />);
137
-
137
+
138
138
  const helpButton = screen.getByRole('button', { name: '' });
139
139
  await user.click(helpButton);
140
-
140
+
141
141
  const okButton = screen.getByRole('button', { name: /OK/i });
142
142
  await user.click(okButton);
143
-
143
+
144
144
  await waitFor(() => {
145
145
  expect(screen.queryByText('Help Title')).not.toBeInTheDocument();
146
146
  });
@@ -155,29 +155,29 @@ describe('Help Component', () => {
155
155
  it('displays children prop', async () => {
156
156
  const user = userEvent.setup();
157
157
  render(<Help {...defaultProps} children="Custom help content" />);
158
-
158
+
159
159
  const button = screen.getByRole('button');
160
160
  await user.click(button);
161
-
161
+
162
162
  expect(screen.getByText('Custom help content')).toBeInTheDocument();
163
163
  });
164
164
 
165
165
  it('can open and close dialog multiple times', async () => {
166
166
  const user = userEvent.setup();
167
167
  render(<Help {...defaultProps} />);
168
-
168
+
169
169
  const helpButton = screen.getByRole('button', { name: '' });
170
-
170
+
171
171
  await user.click(helpButton);
172
172
  expect(screen.getByText('Help Title')).toBeInTheDocument();
173
-
173
+
174
174
  let okButton = screen.getByRole('button', { name: /OK/i });
175
175
  await user.click(okButton);
176
-
176
+
177
177
  await waitFor(() => {
178
178
  expect(screen.queryByText('Help Title')).not.toBeInTheDocument();
179
179
  });
180
-
180
+
181
181
  await user.click(helpButton);
182
182
  expect(screen.getByText('Help Title')).toBeInTheDocument();
183
183
  });
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { render, screen, waitFor } from '@testing-library/react';
2
+ import { render, screen } from '@testing-library/react';
3
3
  import userEvent from '@testing-library/user-event';
4
4
  import Input from '../input';
5
5
 
@@ -12,9 +12,7 @@ describe('Input Component', () => {
12
12
 
13
13
  describe('Rendering', () => {
14
14
  it('should render input without label', () => {
15
- const { container } = render(
16
- <Input type="text" value="test" onChange={onChange} />,
17
- );
15
+ const { container } = render(<Input type="text" value="test" onChange={onChange} />);
18
16
 
19
17
  const input = container.querySelector('input');
20
18
  expect(input).toBeInTheDocument();
@@ -22,9 +20,7 @@ describe('Input Component', () => {
22
20
  });
23
21
 
24
22
  it('should render input with label', () => {
25
- render(
26
- <Input type="text" label="Email" value="test@example.com" onChange={onChange} />,
27
- );
23
+ render(<Input type="text" label="Email" value="test@example.com" onChange={onChange} />);
28
24
 
29
25
  expect(screen.getByText('Email')).toBeInTheDocument();
30
26
  const input = screen.getByDisplayValue('test@example.com');
@@ -32,49 +28,35 @@ describe('Input Component', () => {
32
28
  });
33
29
 
34
30
  it('should render input with different types', () => {
35
- const { container: numberContainer } = render(
36
- <Input type="number" value={123} onChange={onChange} />,
37
- );
31
+ const { container: numberContainer } = render(<Input type="number" value={123} onChange={onChange} />);
38
32
  expect(numberContainer.querySelector('input[type="number"]')).toBeInTheDocument();
39
33
 
40
- const { container: emailContainer } = render(
41
- <Input type="email" value="test@example.com" onChange={onChange} />,
42
- );
34
+ const { container: emailContainer } = render(<Input type="email" value="test@example.com" onChange={onChange} />);
43
35
  expect(emailContainer.querySelector('input[type="email"]')).toBeInTheDocument();
44
36
 
45
- const { container: passwordContainer } = render(
46
- <Input type="password" value="secret" onChange={onChange} />,
47
- );
37
+ const { container: passwordContainer } = render(<Input type="password" value="secret" onChange={onChange} />);
48
38
  expect(passwordContainer.querySelector('input[type="password"]')).toBeInTheDocument();
49
39
  });
50
40
  });
51
41
 
52
42
  describe('Value handling', () => {
53
43
  it('should handle string values', () => {
54
- const { container } = render(
55
- <Input type="text" value="hello" onChange={onChange} />,
56
- );
44
+ const { container } = render(<Input type="text" value="hello" onChange={onChange} />);
57
45
  expect(container.querySelector('input').value).toBe('hello');
58
46
  });
59
47
 
60
48
  it('should handle number values', () => {
61
- const { container } = render(
62
- <Input type="number" value={42} onChange={onChange} />,
63
- );
49
+ const { container } = render(<Input type="number" value={42} onChange={onChange} />);
64
50
  expect(container.querySelector('input').value).toBe('42');
65
51
  });
66
52
 
67
53
  it('should handle empty values', () => {
68
- const { container } = render(
69
- <Input type="text" value="" onChange={onChange} />,
70
- );
54
+ const { container } = render(<Input type="text" value="" onChange={onChange} />);
71
55
  expect(container.querySelector('input').value).toBe('');
72
56
  });
73
57
 
74
58
  it('should update when prop changes', () => {
75
- const { container, rerender } = render(
76
- <Input type="text" value="initial" onChange={onChange} />,
77
- );
59
+ const { container, rerender } = render(<Input type="text" value="initial" onChange={onChange} />);
78
60
  expect(container.querySelector('input').value).toBe('initial');
79
61
 
80
62
  rerender(<Input type="text" value="updated" onChange={onChange} />);
@@ -85,9 +67,7 @@ describe('Input Component', () => {
85
67
  describe('onChange behavior', () => {
86
68
  it('should call onChange on input change', async () => {
87
69
  const user = userEvent.setup();
88
- const { container } = render(
89
- <Input type="text" value="" onChange={onChange} />,
90
- );
70
+ const { container } = render(<Input type="text" value="" onChange={onChange} />);
91
71
 
92
72
  const input = container.querySelector('input');
93
73
  await user.type(input, 'hello');
@@ -98,10 +78,8 @@ describe('Input Component', () => {
98
78
  it('should handle custom error function', async () => {
99
79
  const user = userEvent.setup();
100
80
  const customError = jest.fn((value) => value.length < 3);
101
-
102
- const { container } = render(
103
- <Input type="text" value="" onChange={onChange} error={customError} />,
104
- );
81
+
82
+ const { container } = render(<Input type="text" value="" onChange={onChange} error={customError} />);
105
83
 
106
84
  const input = container.querySelector('input');
107
85
  await user.type(input, 'ab');
@@ -114,10 +92,8 @@ describe('Input Component', () => {
114
92
  it('should display error state when validation fails', async () => {
115
93
  const user = userEvent.setup();
116
94
  const customError = jest.fn(() => true);
117
-
118
- const { container } = render(
119
- <Input type="text" value="" onChange={onChange} error={customError} />,
120
- );
95
+
96
+ const { container } = render(<Input type="text" value="" onChange={onChange} error={customError} />);
121
97
 
122
98
  const input = container.querySelector('input');
123
99
  await user.type(input, 'test');
@@ -128,10 +104,8 @@ describe('Input Component', () => {
128
104
  it('should clear error state when validation passes', async () => {
129
105
  const user = userEvent.setup();
130
106
  const customError = jest.fn((value) => !value);
131
-
132
- const { container } = render(
133
- <Input type="text" value="" onChange={onChange} error={customError} />,
134
- );
107
+
108
+ const { container } = render(<Input type="text" value="" onChange={onChange} error={customError} />);
135
109
 
136
110
  const input = container.querySelector('input');
137
111
  await user.type(input, 'test');
@@ -143,18 +117,14 @@ describe('Input Component', () => {
143
117
 
144
118
  describe('Props spreading', () => {
145
119
  it('should handle disabled state', () => {
146
- const { container } = render(
147
- <Input type="text" value="" onChange={onChange} disabled />,
148
- );
120
+ const { container } = render(<Input type="text" value="" onChange={onChange} disabled />);
149
121
 
150
122
  const input = container.querySelector('input');
151
123
  expect(input).toBeDisabled();
152
124
  });
153
125
 
154
126
  it('should handle readonly state', () => {
155
- const { container } = render(
156
- <Input type="text" value="readonly" onChange={onChange} readOnly />,
157
- );
127
+ const { container } = render(<Input type="text" value="readonly" onChange={onChange} readOnly />);
158
128
 
159
129
  const input = container.querySelector('input');
160
130
  expect(input).toHaveAttribute('readonly');
@@ -163,27 +133,21 @@ describe('Input Component', () => {
163
133
 
164
134
  describe('Default props', () => {
165
135
  it('should use default type of text', () => {
166
- const { container } = render(
167
- <Input value="" onChange={onChange} />,
168
- );
136
+ const { container } = render(<Input value="" onChange={onChange} />);
169
137
 
170
138
  const input = container.querySelector('input');
171
139
  expect(input.type).toBe('text');
172
140
  });
173
141
 
174
142
  it('should use default error function that validates number type', () => {
175
- const { container } = render(
176
- <Input type="number" value="" onChange={onChange} />,
177
- );
143
+ const { container } = render(<Input type="number" value="" onChange={onChange} />);
178
144
 
179
145
  const input = container.querySelector('input');
180
146
  expect(input).toBeInTheDocument();
181
147
  });
182
148
 
183
149
  it('should have noModelUpdateOnError default to false', () => {
184
- const { container } = render(
185
- <Input type="text" value="" onChange={onChange} />,
186
- );
150
+ const { container } = render(<Input type="text" value="" onChange={onChange} />);
187
151
 
188
152
  const input = container.querySelector('input');
189
153
  expect(input).toBeInTheDocument();