@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
@@ -103,13 +103,7 @@ describe('Langs Component', () => {
103
103
 
104
104
  it('does not call onChange if no onChange prop provided', async () => {
105
105
  const user = userEvent.setup();
106
- const { container } = render(
107
- <Langs
108
- uid="1"
109
- langs={['en-US', 'es-ES']}
110
- selected="en-US"
111
- />,
112
- );
106
+ const { container } = render(<Langs uid="1" langs={['en-US', 'es-ES']} selected="en-US" />);
113
107
 
114
108
  const select = screen.getByRole('combobox');
115
109
  await user.click(select);
@@ -130,13 +124,7 @@ describe('Langs Component', () => {
130
124
  });
131
125
 
132
126
  it('generates random uid if not provided', () => {
133
- const { container } = render(
134
- <Langs
135
- onChange={onChange}
136
- langs={['en-US', 'es-ES']}
137
- selected="en-US"
138
- />,
139
- );
127
+ const { container } = render(<Langs onChange={onChange} langs={['en-US', 'es-ES']} selected="en-US" />);
140
128
 
141
129
  const select = screen.getByRole('combobox');
142
130
  expect(select).toBeInTheDocument();
@@ -164,14 +152,7 @@ describe('Langs Component', () => {
164
152
  let select = screen.getByRole('combobox');
165
153
  expect(select).toHaveTextContent('en-US');
166
154
 
167
- rerender(
168
- <Langs
169
- uid="1"
170
- onChange={onChange}
171
- langs={['en-US', 'es-ES']}
172
- selected="es-ES"
173
- />,
174
- );
155
+ rerender(<Langs uid="1" onChange={onChange} langs={['en-US', 'es-ES']} selected="es-ES" />);
175
156
 
176
157
  select = screen.getByRole('combobox');
177
158
  expect(select).toHaveTextContent('es-ES');
@@ -184,14 +165,7 @@ describe('Langs Component', () => {
184
165
  selected: 'en-US',
185
166
  });
186
167
 
187
- rerender(
188
- <Langs
189
- uid="1"
190
- onChange={onChange}
191
- langs={['en-US', 'es-ES', 'fr-FR']}
192
- selected="en-US"
193
- />,
194
- );
168
+ rerender(<Langs uid="1" onChange={onChange} langs={['en-US', 'es-ES', 'fr-FR']} selected="en-US" />);
195
169
 
196
170
  const select = screen.getByRole('combobox');
197
171
  expect(select).toHaveTextContent('en-US');
@@ -266,9 +240,7 @@ describe('LanguageControls Component', () => {
266
240
  });
267
241
 
268
242
  it('applies custom className', () => {
269
- const { container } = render(
270
- <LanguageControls {...defaultProps} className="custom-class" />,
271
- );
243
+ const { container } = render(<LanguageControls {...defaultProps} className="custom-class" />);
272
244
 
273
245
  expect(container.querySelector('.custom-class')).toBeInTheDocument();
274
246
  });
@@ -279,13 +251,7 @@ describe('LanguageControls Component', () => {
279
251
  const user = userEvent.setup();
280
252
  const onActiveLangChange = jest.fn();
281
253
 
282
- render(
283
- <LanguageControls
284
- {...defaultProps}
285
- activeLang="en-US"
286
- onActiveLangChange={onActiveLangChange}
287
- />,
288
- );
254
+ render(<LanguageControls {...defaultProps} activeLang="en-US" onActiveLangChange={onActiveLangChange} />);
289
255
 
290
256
  const selects = screen.getAllByRole('combobox');
291
257
  const activeSelect = selects[0];
@@ -300,13 +266,7 @@ describe('LanguageControls Component', () => {
300
266
  const user = userEvent.setup();
301
267
  const onDefaultLangChange = jest.fn();
302
268
 
303
- render(
304
- <LanguageControls
305
- {...defaultProps}
306
- defaultLang="en-US"
307
- onDefaultLangChange={onDefaultLangChange}
308
- />,
309
- );
269
+ render(<LanguageControls {...defaultProps} defaultLang="en-US" onDefaultLangChange={onDefaultLangChange} />);
310
270
 
311
271
  const selects = screen.getAllByRole('combobox');
312
272
  const defaultSelect = selects[1];
@@ -346,12 +306,7 @@ describe('LanguageControls Component', () => {
346
306
  describe('props handling', () => {
347
307
  it('displays correct language options', async () => {
348
308
  const user = userEvent.setup();
349
- render(
350
- <LanguageControls
351
- {...defaultProps}
352
- langs={['en-US', 'es-ES', 'fr-FR', 'de-DE']}
353
- />,
354
- );
309
+ render(<LanguageControls {...defaultProps} langs={['en-US', 'es-ES', 'fr-FR', 'de-DE']} />);
355
310
 
356
311
  const selects = screen.getAllByRole('combobox');
357
312
  await user.click(selects[0]);
@@ -364,13 +319,7 @@ describe('LanguageControls Component', () => {
364
319
 
365
320
  it('maintains different active and default languages', async () => {
366
321
  const user = userEvent.setup();
367
- render(
368
- <LanguageControls
369
- {...defaultProps}
370
- activeLang="es-ES"
371
- defaultLang="en-US"
372
- />,
373
- );
322
+ render(<LanguageControls {...defaultProps} activeLang="es-ES" defaultLang="en-US" />);
374
323
 
375
324
  const selects = screen.getAllByRole('combobox');
376
325
  expect(selects[0]).toHaveTextContent('es-ES');
@@ -380,44 +329,24 @@ describe('LanguageControls Component', () => {
380
329
 
381
330
  describe('updates', () => {
382
331
  it('updates when activeLang prop changes', () => {
383
- const { rerender } = render(
384
- <LanguageControls
385
- {...defaultProps}
386
- activeLang="en-US"
387
- />,
388
- );
332
+ const { rerender } = render(<LanguageControls {...defaultProps} activeLang="en-US" />);
389
333
 
390
334
  let selects = screen.getAllByRole('combobox');
391
335
  expect(selects[0]).toHaveTextContent('en-US');
392
336
 
393
- rerender(
394
- <LanguageControls
395
- {...defaultProps}
396
- activeLang="es-ES"
397
- />,
398
- );
337
+ rerender(<LanguageControls {...defaultProps} activeLang="es-ES" />);
399
338
 
400
339
  selects = screen.getAllByRole('combobox');
401
340
  expect(selects[0]).toHaveTextContent('es-ES');
402
341
  });
403
342
 
404
343
  it('updates when defaultLang prop changes', () => {
405
- const { rerender } = render(
406
- <LanguageControls
407
- {...defaultProps}
408
- defaultLang="en-US"
409
- />,
410
- );
344
+ const { rerender } = render(<LanguageControls {...defaultProps} defaultLang="en-US" />);
411
345
 
412
346
  let selects = screen.getAllByRole('combobox');
413
347
  expect(selects[1]).toHaveTextContent('en-US');
414
348
 
415
- rerender(
416
- <LanguageControls
417
- {...defaultProps}
418
- defaultLang="fr-FR"
419
- />,
420
- );
349
+ rerender(<LanguageControls {...defaultProps} defaultLang="fr-FR" />);
421
350
 
422
351
  selects = screen.getAllByRole('combobox');
423
352
  expect(selects[1]).toHaveTextContent('fr-FR');
@@ -425,19 +354,9 @@ describe('LanguageControls Component', () => {
425
354
 
426
355
  it('updates when langs prop changes', async () => {
427
356
  const user = userEvent.setup();
428
- const { rerender } = render(
429
- <LanguageControls
430
- {...defaultProps}
431
- langs={['en-US', 'es-ES']}
432
- />,
433
- );
357
+ const { rerender } = render(<LanguageControls {...defaultProps} langs={['en-US', 'es-ES']} />);
434
358
 
435
- rerender(
436
- <LanguageControls
437
- {...defaultProps}
438
- langs={['en-US', 'es-ES', 'fr-FR']}
439
- />,
440
- );
359
+ rerender(<LanguageControls {...defaultProps} langs={['en-US', 'es-ES', 'fr-FR']} />);
441
360
 
442
361
  const selects = screen.getAllByRole('combobox');
443
362
  await user.click(selects[0]);
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { render, screen, waitFor, fireEvent } from '@testing-library/react';
2
+ import { fireEvent, render, screen, waitFor } from '@testing-library/react';
3
3
  import userEvent from '@testing-library/user-event';
4
4
  import { NumberTextFieldCustom } from '../number-text-field-custom';
5
5
 
@@ -21,12 +21,7 @@ describe('NumberTextFieldCustom', () => {
21
21
  });
22
22
 
23
23
  it('renders with custom label', () => {
24
- render(
25
- <NumberTextFieldCustom
26
- {...defaultProps}
27
- label="Custom Label"
28
- />,
29
- );
24
+ render(<NumberTextFieldCustom {...defaultProps} label="Custom Label" />);
30
25
  expect(screen.getByLabelText('Custom Label')).toBeInTheDocument();
31
26
  });
32
27
 
@@ -37,112 +32,59 @@ describe('NumberTextFieldCustom', () => {
37
32
  });
38
33
 
39
34
  it('renders with custom className', () => {
40
- const { container } = render(
41
- <NumberTextFieldCustom
42
- {...defaultProps}
43
- className="custom-class"
44
- />,
45
- );
35
+ const { container } = render(<NumberTextFieldCustom {...defaultProps} className="custom-class" />);
46
36
  expect(container.querySelector('.custom-class')).toBeInTheDocument();
47
37
  });
48
38
 
49
39
  it('renders with custom inputClassName', () => {
50
- const { container } = render(
51
- <NumberTextFieldCustom
52
- {...defaultProps}
53
- inputClassName="input-class"
54
- />,
55
- );
40
+ const { container } = render(<NumberTextFieldCustom {...defaultProps} inputClassName="input-class" />);
56
41
  expect(container.querySelector('.input-class')).toBeInTheDocument();
57
42
  });
58
43
 
59
44
  it('renders as disabled when disabled prop is true', () => {
60
- render(
61
- <NumberTextFieldCustom
62
- {...defaultProps}
63
- disabled={true}
64
- />,
65
- );
45
+ render(<NumberTextFieldCustom {...defaultProps} disabled={true} />);
66
46
  const input = screen.getByRole('spinbutton');
67
47
  expect(input).toBeDisabled();
68
48
  });
69
49
 
70
50
  it('renders with error styling when error is true', () => {
71
- render(
72
- <NumberTextFieldCustom
73
- {...defaultProps}
74
- error={true}
75
- />,
76
- );
51
+ render(<NumberTextFieldCustom {...defaultProps} error={true} />);
77
52
  const input = screen.getByRole('spinbutton');
78
53
  expect(input).toHaveAttribute('aria-invalid', 'true');
79
54
  });
80
55
 
81
56
  it('renders helper text when provided', () => {
82
- render(
83
- <NumberTextFieldCustom
84
- {...defaultProps}
85
- helperText="This is a helper text"
86
- />,
87
- );
57
+ render(<NumberTextFieldCustom {...defaultProps} helperText="This is a helper text" />);
88
58
  expect(screen.getByText('This is a helper text')).toBeInTheDocument();
89
59
  });
90
60
 
91
61
  it('renders with different variant', () => {
92
- render(
93
- <NumberTextFieldCustom
94
- {...defaultProps}
95
- variant="outlined"
96
- />,
97
- );
62
+ render(<NumberTextFieldCustom {...defaultProps} variant="outlined" />);
98
63
  const input = screen.getByRole('spinbutton');
99
64
  expect(input).toBeInTheDocument();
100
65
  });
101
66
 
102
67
  it('renders with text alignment', () => {
103
- const { container } = render(
104
- <NumberTextFieldCustom
105
- {...defaultProps}
106
- textAlign="left"
107
- />,
108
- );
68
+ const { container } = render(<NumberTextFieldCustom {...defaultProps} textAlign="left" />);
109
69
  expect(container.querySelector('input')).toBeInTheDocument();
110
70
  });
111
71
  });
112
72
 
113
73
  describe('custom values', () => {
114
74
  it('accepts custom values array', () => {
115
- render(
116
- <NumberTextFieldCustom
117
- {...defaultProps}
118
- customValues={['small', 'medium', 'large']}
119
- value="medium"
120
- />,
121
- );
75
+ render(<NumberTextFieldCustom {...defaultProps} customValues={['small', 'medium', 'large']} value="medium" />);
122
76
  const input = screen.getByRole('spinbutton');
123
77
  expect(input).toBeInTheDocument();
124
78
  });
125
79
 
126
80
  it('handles empty custom values array', () => {
127
- render(
128
- <NumberTextFieldCustom
129
- {...defaultProps}
130
- customValues={[]}
131
- value={5}
132
- />,
133
- );
81
+ render(<NumberTextFieldCustom {...defaultProps} customValues={[]} value={5} />);
134
82
  const input = screen.getByRole('spinbutton');
135
83
  expect(input).toHaveValue(5);
136
84
  });
137
85
 
138
86
  it('displays custom value when selected', () => {
139
- render(
140
- <NumberTextFieldCustom
141
- {...defaultProps}
142
- customValues={['auto', 'fixed', 'dynamic']}
143
- value="fixed"
144
- />,
145
- );
87
+ render(<NumberTextFieldCustom {...defaultProps} customValues={['auto', 'fixed', 'dynamic']} value="fixed" />);
146
88
  const input = screen.getByRole('spinbutton');
147
89
  expect(input).toBeInTheDocument();
148
90
  });
@@ -151,40 +93,20 @@ describe('NumberTextFieldCustom', () => {
151
93
  describe('step functionality', () => {
152
94
  it('uses default step of 1', () => {
153
95
  const onChange = jest.fn();
154
- render(
155
- <NumberTextFieldCustom
156
- {...defaultProps}
157
- value={5}
158
- onChange={onChange}
159
- />,
160
- );
96
+ render(<NumberTextFieldCustom {...defaultProps} value={5} onChange={onChange} />);
161
97
  expect(screen.getByRole('spinbutton')).toBeInTheDocument();
162
98
  });
163
99
 
164
100
  it('uses custom step value', () => {
165
101
  const onChange = jest.fn();
166
- render(
167
- <NumberTextFieldCustom
168
- {...defaultProps}
169
- value={5}
170
- step={0.5}
171
- onChange={onChange}
172
- />,
173
- );
102
+ render(<NumberTextFieldCustom {...defaultProps} value={5} step={0.5} onChange={onChange} />);
174
103
  expect(screen.getByRole('spinbutton')).toBeInTheDocument();
175
104
  });
176
105
 
177
106
  it('increments value by step with add button', async () => {
178
107
  const user = userEvent.setup();
179
108
  const onChange = jest.fn();
180
- render(
181
- <NumberTextFieldCustom
182
- {...defaultProps}
183
- value={5}
184
- step={2}
185
- onChange={onChange}
186
- />,
187
- );
109
+ render(<NumberTextFieldCustom {...defaultProps} value={5} step={2} onChange={onChange} />);
188
110
 
189
111
  const buttons = screen.getAllByRole('button');
190
112
  const addButton = buttons.find((btn) => btn.querySelector('[data-testid], svg'));
@@ -197,14 +119,7 @@ describe('NumberTextFieldCustom', () => {
197
119
  it('decrements value by step with remove button', async () => {
198
120
  const user = userEvent.setup();
199
121
  const onChange = jest.fn();
200
- render(
201
- <NumberTextFieldCustom
202
- {...defaultProps}
203
- value={5}
204
- step={1}
205
- onChange={onChange}
206
- />,
207
- );
122
+ render(<NumberTextFieldCustom {...defaultProps} value={5} step={1} onChange={onChange} />);
208
123
 
209
124
  const buttons = screen.getAllByRole('button');
210
125
  const removeButton = buttons[0];
@@ -218,14 +133,7 @@ describe('NumberTextFieldCustom', () => {
218
133
  describe('min/max constraints', () => {
219
134
  it('clamps value to min', async () => {
220
135
  const user = userEvent.setup();
221
- render(
222
- <NumberTextFieldCustom
223
- {...defaultProps}
224
- value={0}
225
- min={1}
226
- max={10}
227
- />,
228
- );
136
+ render(<NumberTextFieldCustom {...defaultProps} value={0} min={1} max={10} />);
229
137
 
230
138
  const input = screen.getByRole('spinbutton');
231
139
  fireEvent.blur(input);
@@ -237,14 +145,7 @@ describe('NumberTextFieldCustom', () => {
237
145
 
238
146
  it('clamps value to max', async () => {
239
147
  const user = userEvent.setup();
240
- render(
241
- <NumberTextFieldCustom
242
- {...defaultProps}
243
- value={15}
244
- min={1}
245
- max={10}
246
- />,
247
- );
148
+ render(<NumberTextFieldCustom {...defaultProps} value={15} min={1} max={10} />);
248
149
 
249
150
  const input = screen.getByRole('spinbutton');
250
151
  fireEvent.blur(input);
@@ -255,89 +156,43 @@ describe('NumberTextFieldCustom', () => {
255
156
  });
256
157
 
257
158
  it('handles only min constraint', () => {
258
- render(
259
- <NumberTextFieldCustom
260
- {...defaultProps}
261
- value={5}
262
- min={3}
263
- />,
264
- );
159
+ render(<NumberTextFieldCustom {...defaultProps} value={5} min={3} />);
265
160
  expect(screen.getByRole('spinbutton')).toHaveValue(5);
266
161
  });
267
162
 
268
163
  it('handles only max constraint', () => {
269
- render(
270
- <NumberTextFieldCustom
271
- {...defaultProps}
272
- value={5}
273
- max={10}
274
- />,
275
- );
164
+ render(<NumberTextFieldCustom {...defaultProps} value={5} max={10} />);
276
165
  expect(screen.getByRole('spinbutton')).toHaveValue(5);
277
166
  });
278
167
  });
279
168
 
280
169
  describe('props updates', () => {
281
170
  it('updates value when prop changes', () => {
282
- const { rerender } = render(
283
- <NumberTextFieldCustom
284
- {...defaultProps}
285
- value={5}
286
- />,
287
- );
171
+ const { rerender } = render(<NumberTextFieldCustom {...defaultProps} value={5} />);
288
172
 
289
173
  let input = screen.getByRole('spinbutton');
290
174
  expect(input).toHaveValue(5);
291
175
 
292
- rerender(
293
- <NumberTextFieldCustom
294
- {...defaultProps}
295
- value={8}
296
- />,
297
- );
176
+ rerender(<NumberTextFieldCustom {...defaultProps} value={8} />);
298
177
 
299
178
  input = screen.getByRole('spinbutton');
300
179
  expect(input).toHaveValue(8);
301
180
  });
302
181
 
303
182
  it('updates when label changes', () => {
304
- const { rerender } = render(
305
- <NumberTextFieldCustom
306
- {...defaultProps}
307
- label="Old Label"
308
- />,
309
- );
183
+ const { rerender } = render(<NumberTextFieldCustom {...defaultProps} label="Old Label" />);
310
184
 
311
185
  expect(screen.getByLabelText('Old Label')).toBeInTheDocument();
312
186
 
313
- rerender(
314
- <NumberTextFieldCustom
315
- {...defaultProps}
316
- label="New Label"
317
- />,
318
- );
187
+ rerender(<NumberTextFieldCustom {...defaultProps} label="New Label" />);
319
188
 
320
189
  expect(screen.getByLabelText('New Label')).toBeInTheDocument();
321
190
  });
322
191
 
323
192
  it('updates constraints when min/max props change', () => {
324
- const { rerender } = render(
325
- <NumberTextFieldCustom
326
- {...defaultProps}
327
- value={5}
328
- min={1}
329
- max={10}
330
- />,
331
- );
332
-
333
- rerender(
334
- <NumberTextFieldCustom
335
- {...defaultProps}
336
- value={5}
337
- min={1}
338
- max={8}
339
- />,
340
- );
193
+ const { rerender } = render(<NumberTextFieldCustom {...defaultProps} value={5} min={1} max={10} />);
194
+
195
+ rerender(<NumberTextFieldCustom {...defaultProps} value={5} min={1} max={8} />);
341
196
 
342
197
  expect(screen.getByRole('spinbutton')).toBeInTheDocument();
343
198
  });
@@ -345,58 +200,30 @@ describe('NumberTextFieldCustom', () => {
345
200
 
346
201
  describe('text alignment', () => {
347
202
  it('renders with center alignment (default)', () => {
348
- render(
349
- <NumberTextFieldCustom
350
- {...defaultProps}
351
- value={5}
352
- />,
353
- );
203
+ render(<NumberTextFieldCustom {...defaultProps} value={5} />);
354
204
  expect(screen.getByRole('spinbutton')).toBeInTheDocument();
355
205
  });
356
206
 
357
207
  it('renders with custom left alignment', () => {
358
- render(
359
- <NumberTextFieldCustom
360
- {...defaultProps}
361
- value={5}
362
- textAlign="left"
363
- />,
364
- );
208
+ render(<NumberTextFieldCustom {...defaultProps} value={5} textAlign="left" />);
365
209
  expect(screen.getByRole('spinbutton')).toBeInTheDocument();
366
210
  });
367
211
 
368
212
  it('renders with right alignment', () => {
369
- render(
370
- <NumberTextFieldCustom
371
- {...defaultProps}
372
- value={5}
373
- textAlign="right"
374
- />,
375
- );
213
+ render(<NumberTextFieldCustom {...defaultProps} value={5} textAlign="right" />);
376
214
  expect(screen.getByRole('spinbutton')).toBeInTheDocument();
377
215
  });
378
216
  });
379
217
 
380
218
  describe('type property', () => {
381
219
  it('renders as number type by default', () => {
382
- const { container } = render(
383
- <NumberTextFieldCustom
384
- {...defaultProps}
385
- value={5}
386
- />,
387
- );
220
+ const { container } = render(<NumberTextFieldCustom {...defaultProps} value={5} />);
388
221
  const input = container.querySelector('input[type="number"]');
389
222
  expect(input).toBeInTheDocument();
390
223
  });
391
224
 
392
225
  it('can render with custom type', () => {
393
- const { container } = render(
394
- <NumberTextFieldCustom
395
- {...defaultProps}
396
- value={5}
397
- type="text"
398
- />,
399
- );
226
+ const { container } = render(<NumberTextFieldCustom {...defaultProps} value={5} type="text" />);
400
227
  const input = container.querySelector('input');
401
228
  expect(input).toBeInTheDocument();
402
229
  });
@@ -409,23 +236,13 @@ describe('NumberTextFieldCustom', () => {
409
236
  });
410
237
 
411
238
  it('has proper label association', () => {
412
- render(
413
- <NumberTextFieldCustom
414
- {...defaultProps}
415
- label="Price"
416
- />,
417
- );
239
+ render(<NumberTextFieldCustom {...defaultProps} label="Price" />);
418
240
  expect(screen.getByLabelText('Price')).toBeInTheDocument();
419
241
  });
420
242
 
421
243
  it('supports keyboard navigation', async () => {
422
244
  const user = userEvent.setup();
423
- render(
424
- <NumberTextFieldCustom
425
- {...defaultProps}
426
- value={5}
427
- />,
428
- );
245
+ render(<NumberTextFieldCustom {...defaultProps} value={5} />);
429
246
 
430
247
  const input = screen.getByRole('spinbutton');
431
248
  input.focus();