@instructure/ui-number-input 10.2.2-snapshot-15 → 10.2.2-snapshot-16
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/CHANGELOG.md +1 -1
- package/es/NumberInput/__new-tests__/NumberInput.test.js +213 -10
- package/lib/NumberInput/__new-tests__/NumberInput.test.js +214 -13
- package/package.json +16 -15
- package/src/NumberInput/__new-tests__/NumberInput.test.tsx +234 -13
- package/tsconfig.build.json +0 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/types/NumberInput/__new-tests__/NumberInput.test.d.ts +1 -1
- package/types/NumberInput/__new-tests__/NumberInput.test.d.ts.map +1 -1
- package/es/NumberInput/NumberInputLocator.js +0 -32
- package/es/NumberInput/locator.js +0 -27
- package/lib/NumberInput/NumberInputLocator.js +0 -37
- package/lib/NumberInput/locator.js +0 -37
- package/src/NumberInput/NumberInputLocator.ts +0 -34
- package/src/NumberInput/locator.ts +0 -28
- package/types/NumberInput/NumberInputLocator.d.ts +0 -1823
- package/types/NumberInput/NumberInputLocator.d.ts.map +0 -1
- package/types/NumberInput/locator.d.ts +0 -4
- package/types/NumberInput/locator.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [10.2.2-snapshot-
|
|
6
|
+
## [10.2.2-snapshot-16](https://github.com/instructure/instructure-ui/compare/v10.2.1...v10.2.2-snapshot-16) (2024-09-13)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @instructure/ui-number-input
|
|
9
9
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
var _NumberInput, _NumberInput2, _NumberInput3, _NumberInput4;
|
|
1
2
|
/*
|
|
2
3
|
* The MIT License (MIT)
|
|
3
4
|
*
|
|
@@ -22,14 +23,17 @@
|
|
|
22
23
|
* SOFTWARE.
|
|
23
24
|
*/
|
|
24
25
|
|
|
25
|
-
import
|
|
26
|
+
import React from 'react';
|
|
27
|
+
import { render, screen, waitFor } from '@testing-library/react';
|
|
28
|
+
import userEvent from '@testing-library/user-event';
|
|
26
29
|
import { vi } from 'vitest';
|
|
27
30
|
import { runAxeCheck } from '@instructure/ui-axe-check';
|
|
31
|
+
import '@testing-library/jest-dom';
|
|
28
32
|
import { NumberInput } from '../index';
|
|
29
33
|
import NumberInputExamples from '../__examples__/NumberInput.examples';
|
|
30
34
|
// eslint-disable-next-line no-restricted-imports
|
|
31
35
|
import { generateA11yTests } from '@instructure/ui-scripts/lib/test/generateA11yTests';
|
|
32
|
-
describe('<
|
|
36
|
+
describe('<NumberInput />', () => {
|
|
33
37
|
let consoleWarningMock;
|
|
34
38
|
let consoleErrorMock;
|
|
35
39
|
beforeEach(() => {
|
|
@@ -41,13 +45,212 @@ describe('<Breadcrumb />', () => {
|
|
|
41
45
|
consoleWarningMock.mockRestore();
|
|
42
46
|
consoleErrorMock.mockRestore();
|
|
43
47
|
});
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
it('sets value on the input', async () => {
|
|
49
|
+
const onChange = vi.fn();
|
|
50
|
+
render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
51
|
+
renderLabel: "Label",
|
|
52
|
+
onChange: onChange,
|
|
53
|
+
value: "42"
|
|
54
|
+
}));
|
|
55
|
+
const input = screen.getByRole('spinbutton');
|
|
56
|
+
expect(input).toHaveValue(42);
|
|
57
|
+
});
|
|
58
|
+
it('should accept a number for the value', async () => {
|
|
59
|
+
const onChange = vi.fn();
|
|
60
|
+
render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
61
|
+
renderLabel: "Label",
|
|
62
|
+
onChange: onChange,
|
|
63
|
+
value: 42
|
|
64
|
+
}));
|
|
65
|
+
const input = screen.getByRole('spinbutton');
|
|
66
|
+
expect(input).toHaveValue(42);
|
|
67
|
+
});
|
|
68
|
+
it('displays the label', async () => {
|
|
69
|
+
const _render = render(_NumberInput || (_NumberInput = /*#__PURE__*/React.createElement(NumberInput, {
|
|
70
|
+
renderLabel: "Label"
|
|
71
|
+
}))),
|
|
72
|
+
container = _render.container;
|
|
73
|
+
const label = container.querySelector('span[class$="-formFieldLabel"]');
|
|
74
|
+
expect(label).toHaveTextContent('Label');
|
|
75
|
+
});
|
|
76
|
+
it('passes the input element to inputRef', async () => {
|
|
77
|
+
const inputRef = vi.fn();
|
|
78
|
+
render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
79
|
+
renderLabel: "Label",
|
|
80
|
+
inputRef: inputRef
|
|
81
|
+
}));
|
|
82
|
+
const input = screen.getByRole('spinbutton');
|
|
83
|
+
expect(inputRef).toHaveBeenCalledTimes(1);
|
|
84
|
+
expect(inputRef).toHaveBeenCalledWith(input);
|
|
85
|
+
});
|
|
86
|
+
it('passes change events to onChange handler', async () => {
|
|
87
|
+
const onChange = vi.fn();
|
|
88
|
+
render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
89
|
+
renderLabel: "Label",
|
|
90
|
+
onChange: onChange
|
|
91
|
+
}));
|
|
92
|
+
const input = screen.getByRole('spinbutton');
|
|
93
|
+
userEvent.type(input, '5');
|
|
94
|
+
await waitFor(() => {
|
|
95
|
+
const event = onChange.mock.calls[0][0];
|
|
96
|
+
const args = onChange.mock.calls[0][1];
|
|
97
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
98
|
+
expect(args).toBe('5');
|
|
99
|
+
expect(event.target.value).toBe('5');
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
it('passes keyboard events to the onKeyDown handler', async () => {
|
|
103
|
+
const onKeyDown = vi.fn();
|
|
104
|
+
render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
105
|
+
renderLabel: "Label",
|
|
106
|
+
onKeyDown: onKeyDown
|
|
107
|
+
}));
|
|
108
|
+
const input = screen.getByRole('spinbutton');
|
|
109
|
+
userEvent.type(input, '5');
|
|
110
|
+
await waitFor(() => {
|
|
111
|
+
expect(onKeyDown).toHaveBeenCalledTimes(1);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
it('passes blur events to onBlur handler', async () => {
|
|
115
|
+
const onBlur = vi.fn();
|
|
116
|
+
render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
117
|
+
renderLabel: "Label",
|
|
118
|
+
onBlur: onBlur
|
|
119
|
+
}));
|
|
120
|
+
userEvent.tab();
|
|
121
|
+
userEvent.tab();
|
|
122
|
+
await waitFor(() => {
|
|
123
|
+
expect(onBlur).toHaveBeenCalledTimes(1);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
it('passes focus events to onFocus handler', async () => {
|
|
127
|
+
const onFocus = vi.fn();
|
|
128
|
+
render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
129
|
+
renderLabel: "Label",
|
|
130
|
+
onFocus: onFocus
|
|
131
|
+
}));
|
|
132
|
+
const input = screen.getByRole('spinbutton');
|
|
133
|
+
input.focus();
|
|
134
|
+
await waitFor(() => {
|
|
135
|
+
expect(onFocus).toHaveBeenCalledTimes(1);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
it('shows arrow spinbuttons by default', async () => {
|
|
139
|
+
const _render2 = render(_NumberInput2 || (_NumberInput2 = /*#__PURE__*/React.createElement(NumberInput, {
|
|
140
|
+
renderLabel: "Label"
|
|
141
|
+
}))),
|
|
142
|
+
container = _render2.container;
|
|
143
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
144
|
+
expect(buttons).toHaveLength(2);
|
|
145
|
+
});
|
|
146
|
+
it('hides arrow spinbuttons when showArrows is false', async () => {
|
|
147
|
+
const _render3 = render(_NumberInput3 || (_NumberInput3 = /*#__PURE__*/React.createElement(NumberInput, {
|
|
148
|
+
renderLabel: "Label",
|
|
149
|
+
showArrows: false
|
|
150
|
+
}))),
|
|
151
|
+
container = _render3.container;
|
|
152
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
153
|
+
expect(buttons).toHaveLength(0);
|
|
154
|
+
});
|
|
155
|
+
it('calls onIncrement when up arrow spinbutton is clicked', async () => {
|
|
156
|
+
const onIncrement = vi.fn();
|
|
157
|
+
const _render4 = render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
158
|
+
renderLabel: "Label",
|
|
159
|
+
onIncrement: onIncrement
|
|
160
|
+
})),
|
|
161
|
+
container = _render4.container;
|
|
162
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
163
|
+
userEvent.click(buttons[0]);
|
|
164
|
+
await waitFor(() => {
|
|
165
|
+
expect(onIncrement).toHaveBeenCalledTimes(1);
|
|
51
166
|
});
|
|
52
|
-
}
|
|
167
|
+
});
|
|
168
|
+
it('does not call onIncrement when `interaction` is set to readonly', async () => {
|
|
169
|
+
const onIncrement = vi.fn();
|
|
170
|
+
const _render5 = render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
171
|
+
renderLabel: "Label",
|
|
172
|
+
interaction: "readonly",
|
|
173
|
+
onIncrement: onIncrement
|
|
174
|
+
})),
|
|
175
|
+
container = _render5.container;
|
|
176
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
177
|
+
userEvent.click(buttons[0]);
|
|
178
|
+
await waitFor(() => {
|
|
179
|
+
expect(onIncrement).toHaveBeenCalledTimes(0);
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
it('does not call onIncrement when `readOnly` is set', async () => {
|
|
183
|
+
const onIncrement = vi.fn();
|
|
184
|
+
const _render6 = render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
185
|
+
renderLabel: "Label",
|
|
186
|
+
readOnly: true,
|
|
187
|
+
onIncrement: onIncrement
|
|
188
|
+
})),
|
|
189
|
+
container = _render6.container;
|
|
190
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
191
|
+
userEvent.click(buttons[0]);
|
|
192
|
+
await waitFor(() => {
|
|
193
|
+
expect(onIncrement).toHaveBeenCalledTimes(0);
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
it('calls onDecrement when down arrow spinbutton is clicked', async () => {
|
|
197
|
+
const onDecrement = vi.fn();
|
|
198
|
+
const _render7 = render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
199
|
+
renderLabel: "Label",
|
|
200
|
+
onDecrement: onDecrement
|
|
201
|
+
})),
|
|
202
|
+
container = _render7.container;
|
|
203
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
204
|
+
userEvent.click(buttons[1]);
|
|
205
|
+
await waitFor(() => {
|
|
206
|
+
expect(onDecrement).toHaveBeenCalledTimes(1);
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
it('does not call onDecrement when `interaction` is set to readonly', async () => {
|
|
210
|
+
const onDecrement = vi.fn();
|
|
211
|
+
const _render8 = render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
212
|
+
renderLabel: "Label",
|
|
213
|
+
interaction: "readonly",
|
|
214
|
+
onDecrement: onDecrement
|
|
215
|
+
})),
|
|
216
|
+
container = _render8.container;
|
|
217
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
218
|
+
userEvent.click(buttons[1]);
|
|
219
|
+
await waitFor(() => {
|
|
220
|
+
expect(onDecrement).toHaveBeenCalledTimes(0);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
it('does not call onDecrement when `readOnly` is set', async () => {
|
|
224
|
+
const onDecrement = vi.fn();
|
|
225
|
+
const _render9 = render( /*#__PURE__*/React.createElement(NumberInput, {
|
|
226
|
+
renderLabel: "Label",
|
|
227
|
+
readOnly: true,
|
|
228
|
+
onDecrement: onDecrement
|
|
229
|
+
})),
|
|
230
|
+
container = _render9.container;
|
|
231
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
232
|
+
userEvent.click(buttons[1]);
|
|
233
|
+
await waitFor(() => {
|
|
234
|
+
expect(onDecrement).toHaveBeenCalledTimes(0);
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
it('puts inputMode prop to input', async () => {
|
|
238
|
+
render(_NumberInput4 || (_NumberInput4 = /*#__PURE__*/React.createElement(NumberInput, {
|
|
239
|
+
renderLabel: "Label",
|
|
240
|
+
inputMode: "decimal"
|
|
241
|
+
})));
|
|
242
|
+
const input = screen.getByRole('spinbutton');
|
|
243
|
+
expect(input).toHaveAttribute('inputMode', 'decimal');
|
|
244
|
+
});
|
|
245
|
+
describe('with generated examples', () => {
|
|
246
|
+
const generatedComponents = generateA11yTests(NumberInput, NumberInputExamples);
|
|
247
|
+
for (const component of generatedComponents) {
|
|
248
|
+
it(component.description, async () => {
|
|
249
|
+
const _render10 = render(component.content),
|
|
250
|
+
container = _render10.container;
|
|
251
|
+
const axeCheck = await runAxeCheck(container);
|
|
252
|
+
expect(axeCheck).toBe(true);
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
});
|
|
53
256
|
});
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
var _react = require("
|
|
4
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
|
+
var _react2 = require("@testing-library/react");
|
|
6
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
5
7
|
var _vitest = require("vitest");
|
|
6
8
|
var _runAxeCheck = require("@instructure/ui-axe-check/lib/runAxeCheck.js");
|
|
9
|
+
require("@testing-library/jest-dom");
|
|
7
10
|
var _index = require("../index");
|
|
8
|
-
var
|
|
11
|
+
var _NumberInput5 = _interopRequireDefault(require("../__examples__/NumberInput.examples"));
|
|
9
12
|
var _generateA11yTests = require("@instructure/ui-scripts/lib/test/generateA11yTests");
|
|
13
|
+
var _NumberInput, _NumberInput2, _NumberInput3, _NumberInput4;
|
|
10
14
|
/*
|
|
11
15
|
* The MIT License (MIT)
|
|
12
16
|
*
|
|
@@ -30,10 +34,8 @@ var _generateA11yTests = require("@instructure/ui-scripts/lib/test/generateA11yT
|
|
|
30
34
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
31
35
|
* SOFTWARE.
|
|
32
36
|
*/
|
|
33
|
-
|
|
34
37
|
// eslint-disable-next-line no-restricted-imports
|
|
35
|
-
|
|
36
|
-
describe('<Breadcrumb />', () => {
|
|
38
|
+
describe('<NumberInput />', () => {
|
|
37
39
|
let consoleWarningMock;
|
|
38
40
|
let consoleErrorMock;
|
|
39
41
|
beforeEach(() => {
|
|
@@ -45,13 +47,212 @@ describe('<Breadcrumb />', () => {
|
|
|
45
47
|
consoleWarningMock.mockRestore();
|
|
46
48
|
consoleErrorMock.mockRestore();
|
|
47
49
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
it('sets value on the input', async () => {
|
|
51
|
+
const onChange = _vitest.vi.fn();
|
|
52
|
+
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
53
|
+
renderLabel: "Label",
|
|
54
|
+
onChange: onChange,
|
|
55
|
+
value: "42"
|
|
56
|
+
}));
|
|
57
|
+
const input = _react2.screen.getByRole('spinbutton');
|
|
58
|
+
expect(input).toHaveValue(42);
|
|
59
|
+
});
|
|
60
|
+
it('should accept a number for the value', async () => {
|
|
61
|
+
const onChange = _vitest.vi.fn();
|
|
62
|
+
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
63
|
+
renderLabel: "Label",
|
|
64
|
+
onChange: onChange,
|
|
65
|
+
value: 42
|
|
66
|
+
}));
|
|
67
|
+
const input = _react2.screen.getByRole('spinbutton');
|
|
68
|
+
expect(input).toHaveValue(42);
|
|
69
|
+
});
|
|
70
|
+
it('displays the label', async () => {
|
|
71
|
+
const _render = (0, _react2.render)(_NumberInput || (_NumberInput = /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
72
|
+
renderLabel: "Label"
|
|
73
|
+
}))),
|
|
74
|
+
container = _render.container;
|
|
75
|
+
const label = container.querySelector('span[class$="-formFieldLabel"]');
|
|
76
|
+
expect(label).toHaveTextContent('Label');
|
|
77
|
+
});
|
|
78
|
+
it('passes the input element to inputRef', async () => {
|
|
79
|
+
const inputRef = _vitest.vi.fn();
|
|
80
|
+
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
81
|
+
renderLabel: "Label",
|
|
82
|
+
inputRef: inputRef
|
|
83
|
+
}));
|
|
84
|
+
const input = _react2.screen.getByRole('spinbutton');
|
|
85
|
+
expect(inputRef).toHaveBeenCalledTimes(1);
|
|
86
|
+
expect(inputRef).toHaveBeenCalledWith(input);
|
|
87
|
+
});
|
|
88
|
+
it('passes change events to onChange handler', async () => {
|
|
89
|
+
const onChange = _vitest.vi.fn();
|
|
90
|
+
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
91
|
+
renderLabel: "Label",
|
|
92
|
+
onChange: onChange
|
|
93
|
+
}));
|
|
94
|
+
const input = _react2.screen.getByRole('spinbutton');
|
|
95
|
+
_userEvent.default.type(input, '5');
|
|
96
|
+
await (0, _react2.waitFor)(() => {
|
|
97
|
+
const event = onChange.mock.calls[0][0];
|
|
98
|
+
const args = onChange.mock.calls[0][1];
|
|
99
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
100
|
+
expect(args).toBe('5');
|
|
101
|
+
expect(event.target.value).toBe('5');
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
it('passes keyboard events to the onKeyDown handler', async () => {
|
|
105
|
+
const onKeyDown = _vitest.vi.fn();
|
|
106
|
+
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
107
|
+
renderLabel: "Label",
|
|
108
|
+
onKeyDown: onKeyDown
|
|
109
|
+
}));
|
|
110
|
+
const input = _react2.screen.getByRole('spinbutton');
|
|
111
|
+
_userEvent.default.type(input, '5');
|
|
112
|
+
await (0, _react2.waitFor)(() => {
|
|
113
|
+
expect(onKeyDown).toHaveBeenCalledTimes(1);
|
|
55
114
|
});
|
|
56
|
-
}
|
|
115
|
+
});
|
|
116
|
+
it('passes blur events to onBlur handler', async () => {
|
|
117
|
+
const onBlur = _vitest.vi.fn();
|
|
118
|
+
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
119
|
+
renderLabel: "Label",
|
|
120
|
+
onBlur: onBlur
|
|
121
|
+
}));
|
|
122
|
+
_userEvent.default.tab();
|
|
123
|
+
_userEvent.default.tab();
|
|
124
|
+
await (0, _react2.waitFor)(() => {
|
|
125
|
+
expect(onBlur).toHaveBeenCalledTimes(1);
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
it('passes focus events to onFocus handler', async () => {
|
|
129
|
+
const onFocus = _vitest.vi.fn();
|
|
130
|
+
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
131
|
+
renderLabel: "Label",
|
|
132
|
+
onFocus: onFocus
|
|
133
|
+
}));
|
|
134
|
+
const input = _react2.screen.getByRole('spinbutton');
|
|
135
|
+
input.focus();
|
|
136
|
+
await (0, _react2.waitFor)(() => {
|
|
137
|
+
expect(onFocus).toHaveBeenCalledTimes(1);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
it('shows arrow spinbuttons by default', async () => {
|
|
141
|
+
const _render2 = (0, _react2.render)(_NumberInput2 || (_NumberInput2 = /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
142
|
+
renderLabel: "Label"
|
|
143
|
+
}))),
|
|
144
|
+
container = _render2.container;
|
|
145
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
146
|
+
expect(buttons).toHaveLength(2);
|
|
147
|
+
});
|
|
148
|
+
it('hides arrow spinbuttons when showArrows is false', async () => {
|
|
149
|
+
const _render3 = (0, _react2.render)(_NumberInput3 || (_NumberInput3 = /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
150
|
+
renderLabel: "Label",
|
|
151
|
+
showArrows: false
|
|
152
|
+
}))),
|
|
153
|
+
container = _render3.container;
|
|
154
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
155
|
+
expect(buttons).toHaveLength(0);
|
|
156
|
+
});
|
|
157
|
+
it('calls onIncrement when up arrow spinbutton is clicked', async () => {
|
|
158
|
+
const onIncrement = _vitest.vi.fn();
|
|
159
|
+
const _render4 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
160
|
+
renderLabel: "Label",
|
|
161
|
+
onIncrement: onIncrement
|
|
162
|
+
})),
|
|
163
|
+
container = _render4.container;
|
|
164
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
165
|
+
_userEvent.default.click(buttons[0]);
|
|
166
|
+
await (0, _react2.waitFor)(() => {
|
|
167
|
+
expect(onIncrement).toHaveBeenCalledTimes(1);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
it('does not call onIncrement when `interaction` is set to readonly', async () => {
|
|
171
|
+
const onIncrement = _vitest.vi.fn();
|
|
172
|
+
const _render5 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
173
|
+
renderLabel: "Label",
|
|
174
|
+
interaction: "readonly",
|
|
175
|
+
onIncrement: onIncrement
|
|
176
|
+
})),
|
|
177
|
+
container = _render5.container;
|
|
178
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
179
|
+
_userEvent.default.click(buttons[0]);
|
|
180
|
+
await (0, _react2.waitFor)(() => {
|
|
181
|
+
expect(onIncrement).toHaveBeenCalledTimes(0);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
it('does not call onIncrement when `readOnly` is set', async () => {
|
|
185
|
+
const onIncrement = _vitest.vi.fn();
|
|
186
|
+
const _render6 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
187
|
+
renderLabel: "Label",
|
|
188
|
+
readOnly: true,
|
|
189
|
+
onIncrement: onIncrement
|
|
190
|
+
})),
|
|
191
|
+
container = _render6.container;
|
|
192
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
193
|
+
_userEvent.default.click(buttons[0]);
|
|
194
|
+
await (0, _react2.waitFor)(() => {
|
|
195
|
+
expect(onIncrement).toHaveBeenCalledTimes(0);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
it('calls onDecrement when down arrow spinbutton is clicked', async () => {
|
|
199
|
+
const onDecrement = _vitest.vi.fn();
|
|
200
|
+
const _render7 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
201
|
+
renderLabel: "Label",
|
|
202
|
+
onDecrement: onDecrement
|
|
203
|
+
})),
|
|
204
|
+
container = _render7.container;
|
|
205
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
206
|
+
_userEvent.default.click(buttons[1]);
|
|
207
|
+
await (0, _react2.waitFor)(() => {
|
|
208
|
+
expect(onDecrement).toHaveBeenCalledTimes(1);
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
it('does not call onDecrement when `interaction` is set to readonly', async () => {
|
|
212
|
+
const onDecrement = _vitest.vi.fn();
|
|
213
|
+
const _render8 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
214
|
+
renderLabel: "Label",
|
|
215
|
+
interaction: "readonly",
|
|
216
|
+
onDecrement: onDecrement
|
|
217
|
+
})),
|
|
218
|
+
container = _render8.container;
|
|
219
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
220
|
+
_userEvent.default.click(buttons[1]);
|
|
221
|
+
await (0, _react2.waitFor)(() => {
|
|
222
|
+
expect(onDecrement).toHaveBeenCalledTimes(0);
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
it('does not call onDecrement when `readOnly` is set', async () => {
|
|
226
|
+
const onDecrement = _vitest.vi.fn();
|
|
227
|
+
const _render9 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
228
|
+
renderLabel: "Label",
|
|
229
|
+
readOnly: true,
|
|
230
|
+
onDecrement: onDecrement
|
|
231
|
+
})),
|
|
232
|
+
container = _render9.container;
|
|
233
|
+
const buttons = container.querySelectorAll('button[class$="-numberInput_arrow');
|
|
234
|
+
_userEvent.default.click(buttons[1]);
|
|
235
|
+
await (0, _react2.waitFor)(() => {
|
|
236
|
+
expect(onDecrement).toHaveBeenCalledTimes(0);
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
it('puts inputMode prop to input', async () => {
|
|
240
|
+
(0, _react2.render)(_NumberInput4 || (_NumberInput4 = /*#__PURE__*/_react.default.createElement(_index.NumberInput, {
|
|
241
|
+
renderLabel: "Label",
|
|
242
|
+
inputMode: "decimal"
|
|
243
|
+
})));
|
|
244
|
+
const input = _react2.screen.getByRole('spinbutton');
|
|
245
|
+
expect(input).toHaveAttribute('inputMode', 'decimal');
|
|
246
|
+
});
|
|
247
|
+
describe('with generated examples', () => {
|
|
248
|
+
const generatedComponents = (0, _generateA11yTests.generateA11yTests)(_index.NumberInput, _NumberInput5.default);
|
|
249
|
+
for (const component of generatedComponents) {
|
|
250
|
+
it(component.description, async () => {
|
|
251
|
+
const _render10 = (0, _react2.render)(component.content),
|
|
252
|
+
container = _render10.container;
|
|
253
|
+
const axeCheck = await (0, _runAxeCheck.runAxeCheck)(container);
|
|
254
|
+
expect(axeCheck).toBe(true);
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
});
|
|
57
258
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instructure/ui-number-input",
|
|
3
|
-
"version": "10.2.2-snapshot-
|
|
3
|
+
"version": "10.2.2-snapshot-16",
|
|
4
4
|
"description": "A UI component library made by Instructure Inc.",
|
|
5
5
|
"author": "Instructure, Inc. Engineering and Product Design",
|
|
6
6
|
"homepage": "https://instructure.github.io/instructure-ui/",
|
|
@@ -23,25 +23,26 @@
|
|
|
23
23
|
"ts:check": "tsc -p tsconfig.build.json --noEmit --emitDeclarationOnly false"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@instructure/ui-axe-check": "10.2.2-snapshot-
|
|
27
|
-
"@instructure/ui-babel-preset": "10.2.2-snapshot-
|
|
28
|
-
"@instructure/ui-scripts": "10.2.2-snapshot-
|
|
29
|
-
"@instructure/ui-test-
|
|
30
|
-
"@instructure/ui-
|
|
31
|
-
"@
|
|
26
|
+
"@instructure/ui-axe-check": "10.2.2-snapshot-16",
|
|
27
|
+
"@instructure/ui-babel-preset": "10.2.2-snapshot-16",
|
|
28
|
+
"@instructure/ui-scripts": "10.2.2-snapshot-16",
|
|
29
|
+
"@instructure/ui-test-utils": "10.2.2-snapshot-16",
|
|
30
|
+
"@instructure/ui-themes": "10.2.2-snapshot-16",
|
|
31
|
+
"@testing-library/jest-dom": "^6.4.6",
|
|
32
32
|
"@testing-library/react": "^15.0.7",
|
|
33
|
+
"@testing-library/user-event": "^14.5.2",
|
|
33
34
|
"vitest": "^2.0.2"
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
37
|
"@babel/runtime": "^7.24.5",
|
|
37
|
-
"@instructure/emotion": "10.2.2-snapshot-
|
|
38
|
-
"@instructure/shared-types": "10.2.2-snapshot-
|
|
39
|
-
"@instructure/ui-form-field": "10.2.2-snapshot-
|
|
40
|
-
"@instructure/ui-icons": "10.2.2-snapshot-
|
|
41
|
-
"@instructure/ui-react-utils": "10.2.2-snapshot-
|
|
42
|
-
"@instructure/ui-testable": "10.2.2-snapshot-
|
|
43
|
-
"@instructure/ui-utils": "10.2.2-snapshot-
|
|
44
|
-
"@instructure/uid": "10.2.2-snapshot-
|
|
38
|
+
"@instructure/emotion": "10.2.2-snapshot-16",
|
|
39
|
+
"@instructure/shared-types": "10.2.2-snapshot-16",
|
|
40
|
+
"@instructure/ui-form-field": "10.2.2-snapshot-16",
|
|
41
|
+
"@instructure/ui-icons": "10.2.2-snapshot-16",
|
|
42
|
+
"@instructure/ui-react-utils": "10.2.2-snapshot-16",
|
|
43
|
+
"@instructure/ui-testable": "10.2.2-snapshot-16",
|
|
44
|
+
"@instructure/ui-utils": "10.2.2-snapshot-16",
|
|
45
|
+
"@instructure/uid": "10.2.2-snapshot-16",
|
|
45
46
|
"keycode": "^2",
|
|
46
47
|
"prop-types": "^15.8.1"
|
|
47
48
|
},
|