bright-components 10.2.5 → 10.2.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -171,7 +171,7 @@ class Typeahead extends _react.default.Component {
171
171
  let nextIndex = highlightIndex;
172
172
  const isActionKey = ['ArrowDown', 'ArrowUp', 'Enter', 'Escape', 'Tab'].includes(e.key);
173
173
 
174
- if (!isActionKey) {
174
+ if (!isActionKey || !this.options[highlightIndex]) {
175
175
  return;
176
176
  }
177
177
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bright-components",
3
- "version": "10.2.5",
3
+ "version": "10.2.6",
4
4
  "private": false,
5
5
  "main": "./dist",
6
6
  "repository": {
@@ -144,7 +144,7 @@ class Typeahead extends React.Component {
144
144
  'Tab'
145
145
  ].includes(e.key);
146
146
 
147
- if (!isActionKey) {
147
+ if (!isActionKey || !this.options[highlightIndex]) {
148
148
  return;
149
149
  }
150
150
 
@@ -228,6 +228,13 @@ describe('<Typeahead />', () => {
228
228
  [firstOption, secondOption] = wrapper.getAllByRole('listitem');
229
229
  expect(firstOption).not.toHaveStyleRule('background', '#D0EBFD');
230
230
  expect(secondOption).toHaveStyleRule('background', '#D0EBFD');
231
+
232
+ fireEvent.keyDown(input, { key: 'ArrowUp' });
233
+ fireEvent.keyDown(input, { key: 'ArrowUp' });
234
+ fireEvent.keyDown(input, { key: 'ArrowUp' });
235
+
236
+ expect(firstOption).toHaveStyleRule('background', '#D0EBFD');
237
+ expect(secondOption).not.toHaveStyleRule('background', '#D0EBFD');
231
238
  });
232
239
 
233
240
  it('should highlight a new option on the up arrow key', () => {
@@ -284,5 +291,16 @@ describe('<Typeahead />', () => {
284
291
 
285
292
  expect(scrollIntoView).not.toHaveBeenCalled();
286
293
  });
294
+
295
+ it('should handle live updates to the list changing the length of the list', () => {
296
+ const input = wrapper.getByPlaceholderText('Search or select');
297
+
298
+ fireEvent.focus(input);
299
+
300
+ wrapper.rerender(<Typeahead {...props} options={[]} />);
301
+ fireEvent.keyDown(input, { key: 'Enter' });
302
+
303
+ expect(setSelected).toHaveBeenCalledTimes(0);
304
+ });
287
305
  });
288
306
  });