@progress/kendo-react-dropdowns 5.17.0-dev.202308081128 → 5.17.0-dev.202308101044
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/dist/cdn/js/kendo-react-dropdowns.js +1 -1
- package/dist/es/AutoComplete/AutoComplete.d.ts +5 -7
- package/dist/es/AutoComplete/AutoComplete.js +95 -13
- package/dist/es/AutoComplete/AutoCompleteProps.d.ts +4 -0
- package/dist/es/ComboBox/ComboBox.d.ts +7 -1
- package/dist/es/ComboBox/ComboBox.js +137 -23
- package/dist/es/ComboBox/ComboBoxProps.d.ts +4 -0
- package/dist/es/DropDownList/DropDownList.d.ts +5 -5
- package/dist/es/DropDownList/DropDownList.js +128 -22
- package/dist/es/DropDownList/DropDownListProps.d.ts +4 -0
- package/dist/es/MultiColumnComboBox/MultiColumnComboBox.js +2 -1
- package/dist/es/MultiSelect/MultiSelect.d.ts +3 -1
- package/dist/es/MultiSelect/MultiSelect.js +80 -9
- package/dist/es/MultiSelect/MultiSelectProps.d.ts +4 -0
- package/dist/es/common/List.js +2 -2
- package/dist/es/common/ListItem.d.ts +4 -0
- package/dist/es/common/ListItem.js +4 -3
- package/dist/es/common/Navigation.d.ts +1 -0
- package/dist/es/common/Navigation.js +2 -2
- package/dist/es/package-metadata.js +1 -1
- package/dist/npm/AutoComplete/AutoComplete.d.ts +5 -7
- package/dist/npm/AutoComplete/AutoComplete.js +95 -13
- package/dist/npm/AutoComplete/AutoCompleteProps.d.ts +4 -0
- package/dist/npm/ComboBox/ComboBox.d.ts +7 -1
- package/dist/npm/ComboBox/ComboBox.js +137 -23
- package/dist/npm/ComboBox/ComboBoxProps.d.ts +4 -0
- package/dist/npm/DropDownList/DropDownList.d.ts +5 -5
- package/dist/npm/DropDownList/DropDownList.js +127 -21
- package/dist/npm/DropDownList/DropDownListProps.d.ts +4 -0
- package/dist/npm/MultiColumnComboBox/MultiColumnComboBox.js +2 -1
- package/dist/npm/MultiSelect/MultiSelect.d.ts +3 -1
- package/dist/npm/MultiSelect/MultiSelect.js +80 -9
- package/dist/npm/MultiSelect/MultiSelectProps.d.ts +4 -0
- package/dist/npm/common/List.js +2 -2
- package/dist/npm/common/ListItem.d.ts +4 -0
- package/dist/npm/common/ListItem.js +4 -3
- package/dist/npm/common/Navigation.d.ts +1 -0
- package/dist/npm/common/Navigation.js +2 -2
- package/dist/npm/package-metadata.js +1 -1
- package/dist/systemjs/kendo-react-dropdowns.js +1 -1
- package/package.json +16 -16
|
@@ -35,7 +35,7 @@ import GroupStickyHeader from '../common/GroupStickyHeader';
|
|
|
35
35
|
import ListDefaultItem from '../common/ListDefaultItem';
|
|
36
36
|
import List from '../common/List';
|
|
37
37
|
import DropDownBase from '../common/DropDownBase';
|
|
38
|
-
import { isPresent, getItemValue, sameCharsOnly, shuffleData, matchText, areSame,
|
|
38
|
+
import { isPresent, getItemValue, sameCharsOnly, shuffleData, matchText, areSame, itemIndexStartsWith } from '../common/utils';
|
|
39
39
|
import { validatePackage, canUseDOM } from '@progress/kendo-react-common';
|
|
40
40
|
import { packageMetadata } from '../package-metadata';
|
|
41
41
|
import { Button } from '@progress/kendo-react-buttons';
|
|
@@ -63,6 +63,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
63
63
|
_this._skipFocusEvent = false;
|
|
64
64
|
_this._filterInput = null;
|
|
65
65
|
_this._navigated = false;
|
|
66
|
+
_this._lastKeypressIsFilter = false;
|
|
66
67
|
_this._inputId = guid();
|
|
67
68
|
_this.itemHeight = 0;
|
|
68
69
|
/**
|
|
@@ -138,7 +139,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
138
139
|
var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;
|
|
139
140
|
var popupSettings = _this.base.getPopupSettings();
|
|
140
141
|
var translate = "translateY(".concat(vs.translate, "px)");
|
|
141
|
-
return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: _this.
|
|
142
|
+
return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: _this.getFocusedIndex(), value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, groupField: _this.props.groupField, groupMode: 'modern', listRef: function (list) { return vs.list = _this.base.list = list; }, wrapperStyle: { maxHeight: popupSettings.height }, wrapperCssClass: "k-list-content", listStyle: vs.enabled ? { transform: translate } : undefined, key: "listkey", skip: skip, onClick: _this.handleItemClick, itemRender: itemRender, groupHeaderItemRender: groupHeaderItemRender, noDataRender: listNoDataRender, onScroll: _this.onScroll, wrapperRef: vs.scrollerRef, scroller: _this.base.renderScrollElement() }));
|
|
142
143
|
};
|
|
143
144
|
_this.onScroll = function (event) {
|
|
144
145
|
var _a = _this.base, vs = _a.vs, list = _a.list;
|
|
@@ -223,7 +224,9 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
223
224
|
}
|
|
224
225
|
};
|
|
225
226
|
_this.handleKeyDown = function (event) {
|
|
226
|
-
var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, filterable = _a.filterable, disabled = _a.disabled, _c = _a.leftRightKeysNavigation, leftRightKeysNavigation = _c === void 0 ? true : _c, _d = _a.virtual, virtual = _d === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _d;
|
|
227
|
+
var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, filterable = _a.filterable, disabled = _a.disabled, defaultItem = _a.defaultItem, _c = _a.leftRightKeysNavigation, leftRightKeysNavigation = _c === void 0 ? true : _c, _d = _a.virtual, virtual = _d === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _d, dataItemKey = _a.dataItemKey, _e = _a.groupField, groupField = _e === void 0 ? '' : _e, textField = _a.textField;
|
|
228
|
+
var value = _this.value;
|
|
229
|
+
var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });
|
|
227
230
|
var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;
|
|
228
231
|
var keyCode = event.keyCode;
|
|
229
232
|
var homeOrEndKeys = keyCode === Keys.home || keyCode === Keys.end;
|
|
@@ -232,7 +235,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
232
235
|
((event.altKey && keyCode === Keys.down) || keyCode === Keys.enter || keyCode === Keys.space);
|
|
233
236
|
var shouldClose = opened && ((event.altKey && keyCode === Keys.up) || keyCode === Keys.esc);
|
|
234
237
|
var leftOrRightKeys = leftRightKeysNavigation && (keyCode === Keys.left || keyCode === Keys.right);
|
|
235
|
-
var shouldNavigate = upOrDownKeys || (
|
|
238
|
+
var shouldNavigate = upOrDownKeys || (leftOrRightKeys && !filterable) || homeOrEndKeys;
|
|
236
239
|
var state = _this.base.initState();
|
|
237
240
|
state.syntheticEvent = event;
|
|
238
241
|
if (disabled) {
|
|
@@ -259,19 +262,101 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
259
262
|
}
|
|
260
263
|
}
|
|
261
264
|
else if (opened && keyCode === Keys.enter) {
|
|
262
|
-
var focusedIndex = _this.
|
|
263
|
-
if (focusedIndex !== undefined) {
|
|
265
|
+
var focusedIndex = _this.getFocusedIndex();
|
|
266
|
+
if (focusedIndex !== undefined && focusedIndex !== -1 && data[focusedIndex].disabled) {
|
|
267
|
+
_this.triggerOnChange(null, state);
|
|
268
|
+
_this.applyState(state);
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
264
271
|
_this.handleItemSelect(focusedIndex, state);
|
|
265
272
|
}
|
|
266
273
|
_this.base.togglePopup(state);
|
|
267
274
|
event.preventDefault();
|
|
268
275
|
}
|
|
269
276
|
else if (shouldOpen || shouldClose) {
|
|
277
|
+
if (shouldClose) {
|
|
278
|
+
_this.resetValueIfDisabledItem();
|
|
279
|
+
}
|
|
270
280
|
_this.base.togglePopup(state);
|
|
271
281
|
event.preventDefault();
|
|
272
282
|
}
|
|
273
283
|
else if (shouldNavigate) {
|
|
274
|
-
_this.
|
|
284
|
+
_this._lastKeypressIsFilter = false;
|
|
285
|
+
if (groupField !== '' && textField) {
|
|
286
|
+
if (!_this.props.skipDisabledItems && opened) {
|
|
287
|
+
_this.onNavigate(state, keyCode);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
var newIndex = undefined;
|
|
291
|
+
if (keyCode === Keys.down || keyCode === Keys.right) {
|
|
292
|
+
var tempnewIndex_1 = data.slice(selectedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });
|
|
293
|
+
newIndex = tempnewIndex_1 && data.findIndex(function (el) { return el[textField] === tempnewIndex_1[textField]; });
|
|
294
|
+
}
|
|
295
|
+
else if (keyCode === Keys.up || keyCode === Keys.left) {
|
|
296
|
+
var dataToSearch = void 0;
|
|
297
|
+
if (selectedIndex === 0 && defaultItem) {
|
|
298
|
+
newIndex = -1;
|
|
299
|
+
}
|
|
300
|
+
else if (selectedIndex === -1) {
|
|
301
|
+
dataToSearch = data;
|
|
302
|
+
newIndex = data.findIndex(function (i) { return !i.disabled && i[textField]; });
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
dataToSearch = data.slice(0, selectedIndex);
|
|
306
|
+
var tempnewIndex_2 = dataToSearch.pop();
|
|
307
|
+
while (tempnewIndex_2 && tempnewIndex_2.disabled) {
|
|
308
|
+
tempnewIndex_2 = dataToSearch.pop();
|
|
309
|
+
}
|
|
310
|
+
newIndex = tempnewIndex_2 && data.findIndex(function (el) { return el[textField] === tempnewIndex_2[textField]; });
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (newIndex !== undefined) {
|
|
314
|
+
var skipItems = newIndex - selectedIndex;
|
|
315
|
+
_this.onNavigate(state, keyCode, skipItems);
|
|
316
|
+
}
|
|
317
|
+
else if (newIndex === undefined && data.findIndex(function (el) { return el[textField] === value[textField]; }) === data.length - 1) {
|
|
318
|
+
_this.onNavigate(state, keyCode);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
else if (!_this.props.skipDisabledItems && opened || homeOrEndKeys) {
|
|
323
|
+
_this.onNavigate(state, keyCode);
|
|
324
|
+
}
|
|
325
|
+
else if (textField) {
|
|
326
|
+
var newIndex = undefined;
|
|
327
|
+
if (keyCode === Keys.down || keyCode === Keys.right) {
|
|
328
|
+
var tempnewIndex_3 = data.slice(selectedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });
|
|
329
|
+
newIndex = tempnewIndex_3 && data.findIndex(function (el) { return el[textField] === tempnewIndex_3[textField]; });
|
|
330
|
+
}
|
|
331
|
+
else if (keyCode === Keys.up || keyCode === Keys.left) {
|
|
332
|
+
var dataTest = void 0;
|
|
333
|
+
if (selectedIndex === 0 && defaultItem) {
|
|
334
|
+
newIndex = -1;
|
|
335
|
+
}
|
|
336
|
+
else if (selectedIndex === -1) {
|
|
337
|
+
dataTest = data;
|
|
338
|
+
newIndex = data.find(function (i) { return !i.disabled && i[textField]; });
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
dataTest = data.slice(0, selectedIndex);
|
|
342
|
+
var tempnewIndex_4 = dataTest.pop();
|
|
343
|
+
while (tempnewIndex_4 && tempnewIndex_4.disabled) {
|
|
344
|
+
tempnewIndex_4 = dataTest.pop();
|
|
345
|
+
}
|
|
346
|
+
newIndex = tempnewIndex_4 && data.findIndex(function (el) { return el[textField] === tempnewIndex_4[textField]; });
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (newIndex !== undefined) {
|
|
350
|
+
var skipItems = newIndex - selectedIndex;
|
|
351
|
+
_this.onNavigate(state, keyCode, skipItems);
|
|
352
|
+
}
|
|
353
|
+
else if (newIndex === undefined && data.findIndex(function (el) { return el[textField] === value[textField]; }) === data.length - 1) {
|
|
354
|
+
_this.onNavigate(state, keyCode);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
_this.onNavigate(state, keyCode);
|
|
359
|
+
}
|
|
275
360
|
event.preventDefault();
|
|
276
361
|
}
|
|
277
362
|
_this.applyState(state);
|
|
@@ -298,6 +383,9 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
298
383
|
state.syntheticEvent = event;
|
|
299
384
|
state.data.focused = false;
|
|
300
385
|
state.events.push({ type: 'onBlur' });
|
|
386
|
+
if (opened) {
|
|
387
|
+
_this.resetValueIfDisabledItem();
|
|
388
|
+
}
|
|
301
389
|
if (opened && !renderAdaptive) {
|
|
302
390
|
_this.base.togglePopup(state);
|
|
303
391
|
}
|
|
@@ -319,6 +407,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
319
407
|
if (!_this.state.focused) {
|
|
320
408
|
state.data.focused = true;
|
|
321
409
|
}
|
|
410
|
+
_this.resetValueIfDisabledItem();
|
|
322
411
|
_this.base.togglePopup(state);
|
|
323
412
|
_this.applyState(state);
|
|
324
413
|
};
|
|
@@ -346,6 +435,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
346
435
|
state.data.text = event.target.value;
|
|
347
436
|
}
|
|
348
437
|
_this.base.filterChanged(event.target.value, state);
|
|
438
|
+
_this._lastKeypressIsFilter = true;
|
|
349
439
|
_this.applyState(state);
|
|
350
440
|
_this.setState({ group: undefined });
|
|
351
441
|
};
|
|
@@ -494,7 +584,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
494
584
|
*/
|
|
495
585
|
DropDownListWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {
|
|
496
586
|
var _a;
|
|
497
|
-
var _b = this.props, dataItemKey = _b.dataItemKey, virtual = _b.virtual, _c = _b.groupField, groupField = _c === void 0 ? '' : _c;
|
|
587
|
+
var _b = this.props, dataItemKey = _b.dataItemKey, virtual = _b.virtual, _c = _b.groupField, groupField = _c === void 0 ? '' : _c, textField = _b.textField;
|
|
498
588
|
var _d = this.props.data, data = _d === void 0 ? [] : _d;
|
|
499
589
|
var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;
|
|
500
590
|
var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
|
|
@@ -517,8 +607,8 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
517
607
|
var selectedItem_1 = this.value;
|
|
518
608
|
var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;
|
|
519
609
|
var selectedItemIndex = data.findIndex(function (i) { return areSame(i, selectedItem_1, dataItemKey); });
|
|
520
|
-
if (groupField !== '') {
|
|
521
|
-
selectedItemIndex = (_a = this.base.getGroupedDataModernMode(data, groupField)) === null || _a === void 0 ? void 0 : _a.indexOf(selectedItem_1);
|
|
610
|
+
if (groupField !== '' && selectedItem_1 && textField) {
|
|
611
|
+
selectedItemIndex = (_a = this.base.getGroupedDataModernMode(data, groupField)) === null || _a === void 0 ? void 0 : _a.map(function (el) { return el[textField]; }).indexOf(selectedItem_1[textField]);
|
|
522
612
|
}
|
|
523
613
|
var selectedItemChanged = !areSame(prevSelectedItem, selectedItem_1, dataItemKey);
|
|
524
614
|
if (opening && virtual) {
|
|
@@ -624,7 +714,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
624
714
|
/**
|
|
625
715
|
* @hidden
|
|
626
716
|
*/
|
|
627
|
-
DropDownListWithoutContext.prototype.onNavigate = function (state, keyCode) {
|
|
717
|
+
DropDownListWithoutContext.prototype.onNavigate = function (state, keyCode, skipItems) {
|
|
628
718
|
var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _c;
|
|
629
719
|
var vs = this.base.vs;
|
|
630
720
|
var value = this.value;
|
|
@@ -633,7 +723,8 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
633
723
|
current: virtual.skip + index,
|
|
634
724
|
max: (vs.enabled ? virtual.total : data.length) - 1,
|
|
635
725
|
min: defaultItem !== undefined ? -1 : 0,
|
|
636
|
-
keyCode: keyCode
|
|
726
|
+
keyCode: keyCode,
|
|
727
|
+
skipItems: skipItems ? skipItems : undefined
|
|
637
728
|
});
|
|
638
729
|
if (newIndex !== undefined) {
|
|
639
730
|
this.handleItemSelect(newIndex, state);
|
|
@@ -678,18 +769,24 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
678
769
|
this.renderList()),
|
|
679
770
|
footer && React.createElement("div", { className: "k-list-footer" }, footer)))));
|
|
680
771
|
};
|
|
681
|
-
DropDownListWithoutContext.prototype.
|
|
682
|
-
var filterText = isPresent(this.props.filter) ? this.props.filter : this.state.text;
|
|
683
|
-
var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, dataItemKey = _a.dataItemKey, textField = _a.textField, focusedItemIndex = _a.focusedItemIndex;
|
|
772
|
+
DropDownListWithoutContext.prototype.getFocusedIndex = function () {
|
|
684
773
|
var value = this.value;
|
|
685
|
-
var
|
|
686
|
-
var
|
|
687
|
-
if (
|
|
688
|
-
return
|
|
689
|
-
|
|
774
|
+
var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, _d = _a.focusedItemIndex, focusedItemIndex = _d === void 0 ? itemIndexStartsWith : _d, filterable = _a.filterable, _e = _a.skipDisabledItems, skipDisabledItems = _e === void 0 ? true : _e;
|
|
775
|
+
var text = this.props.filter ? this.props.filter : this.state.text;
|
|
776
|
+
if (skipDisabledItems && textField && !text && !value) {
|
|
777
|
+
return data.findIndex(function (i) { return !i.disabled && i[textField]; });
|
|
778
|
+
}
|
|
779
|
+
else if (isPresent(value) && text === undefined || filterable && text === '') {
|
|
780
|
+
return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });
|
|
781
|
+
}
|
|
782
|
+
else if (text) {
|
|
783
|
+
if (this._lastKeypressIsFilter) {
|
|
784
|
+
return focusedItemIndex(data, text, textField);
|
|
785
|
+
}
|
|
786
|
+
return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });
|
|
690
787
|
}
|
|
691
788
|
else {
|
|
692
|
-
return
|
|
789
|
+
return virtual.skip === 0 ? 0 : -1;
|
|
693
790
|
}
|
|
694
791
|
};
|
|
695
792
|
DropDownListWithoutContext.prototype.focusElement = function (element) {
|
|
@@ -720,11 +817,20 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
720
817
|
;
|
|
721
818
|
};
|
|
722
819
|
;
|
|
820
|
+
DropDownListWithoutContext.prototype.resetValueIfDisabledItem = function () {
|
|
821
|
+
var data = this.props.data;
|
|
822
|
+
var state = this.base.initState();
|
|
823
|
+
var focusedIndex = this.getFocusedIndex();
|
|
824
|
+
if (focusedIndex !== undefined && focusedIndex !== -1 && data && data[focusedIndex].disabled) {
|
|
825
|
+
this.triggerOnChange(null, state);
|
|
826
|
+
this.applyState(state);
|
|
827
|
+
}
|
|
828
|
+
};
|
|
723
829
|
DropDownListWithoutContext.displayName = 'DropDownList';
|
|
724
830
|
/**
|
|
725
831
|
* @hidden
|
|
726
832
|
*/
|
|
727
|
-
DropDownListWithoutContext.propTypes = __assign({ delay: PropTypes.number, ignoreCase: PropTypes.bool, iconClassName: PropTypes.string, svgIcon: svgIconPropType, defaultItem: PropTypes.any, valueRender: PropTypes.func, valueMap: PropTypes.func, validationMessage: PropTypes.string, required: PropTypes.bool, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, ariaLabel: PropTypes.string, leftRightKeysNavigation: PropTypes.bool, title: PropTypes.string, groupField: PropTypes.string, list: PropTypes.any }, DropDownBase.propTypes);
|
|
833
|
+
DropDownListWithoutContext.propTypes = __assign({ delay: PropTypes.number, ignoreCase: PropTypes.bool, iconClassName: PropTypes.string, svgIcon: svgIconPropType, defaultItem: PropTypes.any, valueRender: PropTypes.func, valueMap: PropTypes.func, validationMessage: PropTypes.string, required: PropTypes.bool, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, ariaLabel: PropTypes.string, leftRightKeysNavigation: PropTypes.bool, title: PropTypes.string, groupField: PropTypes.string, list: PropTypes.any, skipDisabledItems: PropTypes.bool }, DropDownBase.propTypes);
|
|
728
834
|
/**
|
|
729
835
|
* @hidden
|
|
730
836
|
*/
|
|
@@ -319,4 +319,8 @@ export interface DropDownListProps extends FormComponentProps {
|
|
|
319
319
|
* @hidden
|
|
320
320
|
*/
|
|
321
321
|
groupMode?: string;
|
|
322
|
+
/**
|
|
323
|
+
* Defines if DropDownList's disabled items will be skipped or focused when navigating through the list of items using a keyboard. Defaults to `true`.
|
|
324
|
+
*/
|
|
325
|
+
skipDisabledItems?: boolean;
|
|
322
326
|
}
|
|
@@ -115,7 +115,8 @@ export var MultiColumnComboBox = React.forwardRef(function (directProps, ref) {
|
|
|
115
115
|
'k-table-alt-row': liProps.index % 2 !== 0,
|
|
116
116
|
'k-focus': liProps.focused,
|
|
117
117
|
'k-selected': liProps.selected,
|
|
118
|
-
'k-first': Boolean(group)
|
|
118
|
+
'k-first': Boolean(group),
|
|
119
|
+
'k-disabled': liProps.dataItem.disabled
|
|
119
120
|
}) }), children);
|
|
120
121
|
return props.itemRender ? props.itemRender.call(undefined, rendering, liProps) : rendering;
|
|
121
122
|
}, [columns, props.groupField, props.itemRender, props.data, skip]);
|
|
@@ -42,6 +42,7 @@ export declare class MultiSelectWithoutContext extends React.Component<MultiSele
|
|
|
42
42
|
adaptive: PropTypes.Requireable<boolean>;
|
|
43
43
|
adaptiveTitle: PropTypes.Requireable<string>;
|
|
44
44
|
onCancel: PropTypes.Requireable<(...args: any[]) => any>;
|
|
45
|
+
skipDisabledItems: PropTypes.Requireable<boolean>;
|
|
45
46
|
filterable: PropTypes.Requireable<boolean>;
|
|
46
47
|
filter: PropTypes.Requireable<string>;
|
|
47
48
|
virtual: PropTypes.Requireable<PropTypes.InferProps<{
|
|
@@ -91,6 +92,7 @@ export declare class MultiSelectWithoutContext extends React.Component<MultiSele
|
|
|
91
92
|
rounded: "small" | "medium" | "full" | "large" | null | undefined;
|
|
92
93
|
fillMode: "flat" | "outline" | "solid" | null | undefined;
|
|
93
94
|
groupMode: string | undefined;
|
|
95
|
+
skipDisabledItems: boolean;
|
|
94
96
|
popupSettings: {
|
|
95
97
|
height: string;
|
|
96
98
|
};
|
|
@@ -150,7 +152,7 @@ export declare class MultiSelectWithoutContext extends React.Component<MultiSele
|
|
|
150
152
|
/** @hidden */
|
|
151
153
|
onTagDelete: (itemsToRemove: Array<any>, event: React.MouseEvent<HTMLSpanElement>) => void;
|
|
152
154
|
/** @hidden */
|
|
153
|
-
onNavigate(state: MultiSelectInternalState, keyCode: number): void;
|
|
155
|
+
onNavigate(state: MultiSelectInternalState, keyCode: number, skipItems?: number): void;
|
|
154
156
|
/** @hidden */
|
|
155
157
|
itemFocus: (index: number, state: MultiSelectInternalState) => void;
|
|
156
158
|
/** @hidden */
|
|
@@ -209,9 +209,11 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
209
209
|
_this.applyState(state);
|
|
210
210
|
};
|
|
211
211
|
_this.onInputKeyDown = function (event) {
|
|
212
|
+
var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, groupField = _a.groupField;
|
|
212
213
|
var keyCode = event.keyCode;
|
|
213
214
|
var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;
|
|
214
|
-
var
|
|
215
|
+
var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;
|
|
216
|
+
var _c = _this.getFocusedState(), focusedItem = _c.focusedItem, focusedIndex = _c.focusedIndex;
|
|
215
217
|
var state = _this.base.initState();
|
|
216
218
|
state.syntheticEvent = event;
|
|
217
219
|
if (!text && _this.value.length > 0 &&
|
|
@@ -230,14 +232,74 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
230
232
|
togglePopup();
|
|
231
233
|
}
|
|
232
234
|
else if (keyCode === Keys.up || keyCode === Keys.down) {
|
|
235
|
+
if (groupField !== '' && textField) {
|
|
236
|
+
if (!_this.props.skipDisabledItems && opened) {
|
|
237
|
+
_this.onNavigate(state, keyCode);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
var newIndex = 0;
|
|
241
|
+
if (keyCode === Keys.down || keyCode === Keys.right) {
|
|
242
|
+
var tempnewIndex_1 = data.slice(focusedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });
|
|
243
|
+
newIndex = tempnewIndex_1 && data.findIndex(function (el) { return el[textField] === tempnewIndex_1[textField]; });
|
|
244
|
+
}
|
|
245
|
+
else if (keyCode === Keys.up || keyCode === Keys.left) {
|
|
246
|
+
var dataToSearch = void 0;
|
|
247
|
+
if (focusedIndex === -1) {
|
|
248
|
+
dataToSearch = data;
|
|
249
|
+
newIndex = data.findIndex(function (i) { return !i.disabled && i[textField]; });
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
dataToSearch = data.slice(0, focusedIndex);
|
|
253
|
+
var tempnewIndex_2 = dataToSearch.pop();
|
|
254
|
+
while (tempnewIndex_2 && tempnewIndex_2.disabled) {
|
|
255
|
+
tempnewIndex_2 = dataToSearch.pop();
|
|
256
|
+
}
|
|
257
|
+
newIndex = tempnewIndex_2 && data.findIndex(function (el) { return el[textField] === tempnewIndex_2[textField]; });
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
if (newIndex) {
|
|
261
|
+
var skipItems = newIndex - focusedIndex;
|
|
262
|
+
_this.onNavigate(state, keyCode, skipItems);
|
|
263
|
+
}
|
|
264
|
+
else if (newIndex !== undefined) {
|
|
265
|
+
_this.onNavigate(state, keyCode);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else if (!_this.props.skipDisabledItems && opened) {
|
|
270
|
+
_this.onNavigate(state, keyCode);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
var newIndex = null;
|
|
274
|
+
if (keyCode === Keys.down || keyCode === Keys.right) {
|
|
275
|
+
newIndex = data.slice(focusedIndex + 1).find(function (i) { return !i.disabled; });
|
|
276
|
+
}
|
|
277
|
+
else if (keyCode === Keys.up || keyCode === Keys.left) {
|
|
278
|
+
var dataTest = data.slice(0, focusedIndex);
|
|
279
|
+
newIndex = dataTest.pop();
|
|
280
|
+
while (newIndex && newIndex.disabled) {
|
|
281
|
+
newIndex = dataTest.pop();
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
if (newIndex) {
|
|
285
|
+
var skipItems = newIndex.id - focusedIndex - 1;
|
|
286
|
+
_this.onNavigate(state, keyCode, skipItems);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
_this.onNavigate(state, keyCode);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
_this.applyState(state);
|
|
233
293
|
event.preventDefault();
|
|
234
|
-
_this.onNavigate(state, keyCode);
|
|
235
294
|
}
|
|
236
295
|
else if (keyCode === Keys.enter) {
|
|
237
296
|
event.preventDefault();
|
|
238
297
|
if (_this.props.allowCustom && text && focusedItem === null) {
|
|
239
298
|
_this.customItemSelect(event);
|
|
240
299
|
}
|
|
300
|
+
else if (focusedItem.disabled) {
|
|
301
|
+
togglePopup();
|
|
302
|
+
}
|
|
241
303
|
else {
|
|
242
304
|
_this.selectFocusedItem(event);
|
|
243
305
|
}
|
|
@@ -682,7 +744,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
682
744
|
}
|
|
683
745
|
};
|
|
684
746
|
/** @hidden */
|
|
685
|
-
MultiSelectWithoutContext.prototype.onNavigate = function (state, keyCode) {
|
|
747
|
+
MultiSelectWithoutContext.prototype.onNavigate = function (state, keyCode, skipItems) {
|
|
686
748
|
var _a = this.props, allowCustom = _a.allowCustom, _b = _a.data, data = _b === void 0 ? [] : _b;
|
|
687
749
|
var text = this.props.filter !== undefined ? this.props.filter : this.state.text;
|
|
688
750
|
var _c = this.getFocusedState(), focusedType = _c.focusedType, focusedIndex = _c.focusedIndex;
|
|
@@ -700,7 +762,8 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
700
762
|
keyCode: keyCode,
|
|
701
763
|
current: focusedIndex,
|
|
702
764
|
max: (vs.enabled ? vs.total : data.length) - 1,
|
|
703
|
-
min: customItem ? -1 : 0
|
|
765
|
+
min: customItem ? -1 : 0,
|
|
766
|
+
skipItems: skipItems ? skipItems : undefined
|
|
704
767
|
});
|
|
705
768
|
if (newFocused !== undefined) {
|
|
706
769
|
this.itemFocus(newFocused, state);
|
|
@@ -827,9 +890,9 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
827
890
|
this.setItems(items, this._valueItemsDuringOnChange);
|
|
828
891
|
state.events.push({ type: 'onChange' });
|
|
829
892
|
};
|
|
830
|
-
MultiSelectWithoutContext.prototype.selectFocusedItem = function (event) {
|
|
893
|
+
MultiSelectWithoutContext.prototype.selectFocusedItem = function (event, itemtoSelect) {
|
|
831
894
|
var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual;
|
|
832
|
-
var focusedIndex = this.getFocusedState().focusedIndex;
|
|
895
|
+
var focusedIndex = (itemtoSelect || this.getFocusedState()).focusedIndex;
|
|
833
896
|
var skip = virtual ? virtual.skip : 0;
|
|
834
897
|
if (data[focusedIndex - skip] !== undefined) {
|
|
835
898
|
this.handleItemClick(focusedIndex, event);
|
|
@@ -842,7 +905,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
842
905
|
MultiSelectWithoutContext.prototype.getFocusedState = function () {
|
|
843
906
|
var focusedIndex = this.state.focusedIndex;
|
|
844
907
|
var text = this.props.filter !== undefined ? this.props.filter : this.state.text;
|
|
845
|
-
var _a = this.props, allowCustom = _a.allowCustom, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual, textField = _a.textField, _c = _a.focusedItemIndex, focusedItemIndex = _c === void 0 ? itemIndexStartsWith : _c;
|
|
908
|
+
var _a = this.props, allowCustom = _a.allowCustom, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual, textField = _a.textField, _c = _a.focusedItemIndex, focusedItemIndex = _c === void 0 ? itemIndexStartsWith : _c, skipDisabledItems = _a.skipDisabledItems;
|
|
846
909
|
var skip = (virtual && virtual.skip) || 0;
|
|
847
910
|
var focusedInd;
|
|
848
911
|
if (focusedIndex !== undefined) {
|
|
@@ -876,6 +939,14 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
876
939
|
}
|
|
877
940
|
return { focusedType: FocusedItemType.None, focusedIndex: -1 };
|
|
878
941
|
}
|
|
942
|
+
else if (skipDisabledItems && textField && !text && skip === 0) {
|
|
943
|
+
var newIndex = data.findIndex(function (i) { return !i.disabled && i[textField]; });
|
|
944
|
+
return {
|
|
945
|
+
focusedIndex: newIndex,
|
|
946
|
+
focusedItem: data[newIndex - skip],
|
|
947
|
+
focusedType: FocusedItemType.ListItem
|
|
948
|
+
};
|
|
949
|
+
}
|
|
879
950
|
return skip === 0 ?
|
|
880
951
|
{ focusedItem: data[0], focusedIndex: 0, focusedType: FocusedItemType.ListItem } :
|
|
881
952
|
{ focusedType: FocusedItemType.None, focusedIndex: -1 };
|
|
@@ -903,9 +974,9 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
903
974
|
MultiSelectWithoutContext.propTypes = __assign(__assign({}, DropDownBase.propTypes), { autoClose: PropTypes.bool, value: PropTypes.arrayOf(PropTypes.any), defaultValue: PropTypes.arrayOf(PropTypes.any), dataItemKey: PropTypes.string, placeholder: PropTypes.string, tags: PropTypes.arrayOf(PropTypes.shape({
|
|
904
975
|
text: PropTypes.string,
|
|
905
976
|
data: PropTypes.arrayOf(PropTypes.any)
|
|
906
|
-
})), tagRender: PropTypes.func, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, groupField: PropTypes.string, list: PropTypes.any, adaptive: PropTypes.bool, adaptiveTitle: PropTypes.string, onCancel: PropTypes.func });
|
|
977
|
+
})), tagRender: PropTypes.func, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, groupField: PropTypes.string, list: PropTypes.any, adaptive: PropTypes.bool, adaptiveTitle: PropTypes.string, onCancel: PropTypes.func, skipDisabledItems: PropTypes.bool });
|
|
907
978
|
/** @hidden */
|
|
908
|
-
MultiSelectWithoutContext.defaultProps = __assign(__assign({}, DropDownBase.defaultProps), { autoClose: true, required: false, size: 'medium', rounded: 'medium', fillMode: 'solid', groupMode: 'modern' });
|
|
979
|
+
MultiSelectWithoutContext.defaultProps = __assign(__assign({}, DropDownBase.defaultProps), { autoClose: true, required: false, size: 'medium', rounded: 'medium', fillMode: 'solid', groupMode: 'modern', skipDisabledItems: true });
|
|
909
980
|
return MultiSelectWithoutContext;
|
|
910
981
|
}(React.Component));
|
|
911
982
|
export { MultiSelectWithoutContext };
|
|
@@ -307,4 +307,8 @@ export interface MultiSelectProps extends FormComponentProps {
|
|
|
307
307
|
* Specifies the text that is rendered as title in the adaptive popup.
|
|
308
308
|
*/
|
|
309
309
|
adaptiveTitle?: string;
|
|
310
|
+
/**
|
|
311
|
+
* Defines if MultiSelect's disabled items will be skipped or focused when navigating through the list of items using a keyboard. Defaults to `true`.
|
|
312
|
+
*/
|
|
313
|
+
skipDisabledItems?: boolean;
|
|
310
314
|
}
|
package/dist/es/common/List.js
CHANGED
|
@@ -35,7 +35,7 @@ var List = /** @class */ (function (_super) {
|
|
|
35
35
|
return data.map(function (item, index) {
|
|
36
36
|
var realIndex = skip + index;
|
|
37
37
|
var idIndex = skip + index + groupCounter;
|
|
38
|
-
var selected = highlightSelected &&
|
|
38
|
+
var selected = item.disabled ? false : highlightSelected &&
|
|
39
39
|
((!isArray && areSame(item, value, valueField)) ||
|
|
40
40
|
(isArray && value.findIndex(function (i) { return areSame(i, item, valueField); }) !== -1));
|
|
41
41
|
var group = undefined;
|
|
@@ -50,7 +50,7 @@ var List = /** @class */ (function (_super) {
|
|
|
50
50
|
group !== undefined && groupMode === 'modern' ? groupCounter += 1 : '';
|
|
51
51
|
return [
|
|
52
52
|
group !== undefined && groupMode === 'modern' && React.createElement(ListGroupItem, { id: "option-".concat(optionsGuid, "-").concat(idIndex), virtual: virtual, key: realIndex + '-group-item', group: group, isMultiColumn: isMultiColumn, render: groupHeaderItemRender }),
|
|
53
|
-
React.createElement(ListItem, { id: "option-".concat(optionsGuid, "-").concat(group !== undefined && groupMode === 'modern' ? idIndex + 1 : idIndex), virtual: virtual, dataItem: item, groupMode: groupMode, selected: selected, focused: focusedIndex === index, index: realIndex, key: realIndex, onClick: _this.props.onClick, textField: textField, group: group, render: itemRender })
|
|
53
|
+
React.createElement(ListItem, { id: "option-".concat(optionsGuid, "-").concat(group !== undefined && groupMode === 'modern' ? idIndex + 1 : idIndex), virtual: virtual, dataItem: item, groupMode: groupMode, selected: selected, focused: focusedIndex === index, index: realIndex, key: realIndex, onClick: _this.props.onClick, textField: textField, group: group, render: itemRender, disabled: item.disabled })
|
|
54
54
|
];
|
|
55
55
|
});
|
|
56
56
|
};
|
|
@@ -28,11 +28,12 @@ var ListItem = /** @class */ (function (_super) {
|
|
|
28
28
|
return _this;
|
|
29
29
|
}
|
|
30
30
|
ListItem.prototype.render = function () {
|
|
31
|
-
var _a = this.props, selected = _a.selected, group = _a.group, dataItem = _a.dataItem, virtual = _a.virtual, groupMode = _a.groupMode, renderer = _a.render;
|
|
32
|
-
var item = (React.createElement("li", { id: this.props.id, role: "option", "aria-selected": selected, className: classNames('k-list-item', {
|
|
31
|
+
var _a = this.props, selected = _a.selected, group = _a.group, dataItem = _a.dataItem, virtual = _a.virtual, groupMode = _a.groupMode, disabled = _a.disabled, renderer = _a.render;
|
|
32
|
+
var item = (React.createElement("li", { id: this.props.id, role: "option", "aria-selected": selected, "aria-disabled": disabled ? true : undefined, className: classNames('k-list-item', {
|
|
33
33
|
'k-selected': selected,
|
|
34
34
|
'k-focus': this.props.focused,
|
|
35
|
-
'k-first': Boolean(group) && groupMode === 'classic'
|
|
35
|
+
'k-first': Boolean(group) && groupMode === 'classic',
|
|
36
|
+
'k-disabled': disabled
|
|
36
37
|
}), onClick: this.handleClick, style: { position: virtual ? 'relative' : 'unset' } },
|
|
37
38
|
React.createElement("span", { className: 'k-list-item-text' }, getItemValue(dataItem, this.props.textField).toString()),
|
|
38
39
|
group !== undefined && groupMode === 'classic' ? React.createElement("div", { className: "k-list-item-group-label" }, group) : null));
|
|
@@ -9,10 +9,10 @@ var Navigation = /** @class */ (function () {
|
|
|
9
9
|
Navigation.prototype.navigate = function (args) {
|
|
10
10
|
var keyCode = args.keyCode;
|
|
11
11
|
if (keyCode === Keys.up || keyCode === Keys.left) {
|
|
12
|
-
return this.next({ current: args.current, min: args.min, max: args.max, step: -1 });
|
|
12
|
+
return this.next({ current: args.current, min: args.min, max: args.max, step: args.skipItems ? args.skipItems : -1 });
|
|
13
13
|
}
|
|
14
14
|
else if (keyCode === Keys.down || keyCode === Keys.right) {
|
|
15
|
-
return this.next({ current: args.current, min: args.min, max: args.max, step: 1 });
|
|
15
|
+
return this.next({ current: args.current, min: args.min, max: args.max, step: args.skipItems ? args.skipItems : 1 });
|
|
16
16
|
}
|
|
17
17
|
else if (keyCode === Keys.home) {
|
|
18
18
|
return 0;
|
|
@@ -5,7 +5,7 @@ export var packageMetadata = {
|
|
|
5
5
|
name: '@progress/kendo-react-dropdowns',
|
|
6
6
|
productName: 'KendoReact',
|
|
7
7
|
productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],
|
|
8
|
-
publishDate:
|
|
8
|
+
publishDate: 1691662558,
|
|
9
9
|
version: '',
|
|
10
10
|
licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'
|
|
11
11
|
};
|
|
@@ -41,6 +41,7 @@ export declare class AutoCompleteWithoutContext extends React.Component<AutoComp
|
|
|
41
41
|
ariaLabelledBy: PropTypes.Requireable<string>;
|
|
42
42
|
ariaDescribedBy: PropTypes.Requireable<string>;
|
|
43
43
|
list: PropTypes.Requireable<any>;
|
|
44
|
+
skipDisabledItems: PropTypes.Requireable<boolean>;
|
|
44
45
|
opened: PropTypes.Requireable<boolean>;
|
|
45
46
|
disabled: PropTypes.Requireable<boolean>;
|
|
46
47
|
dir: PropTypes.Requireable<string>;
|
|
@@ -59,9 +60,7 @@ export declare class AutoCompleteWithoutContext extends React.Component<AutoComp
|
|
|
59
60
|
popupClass: PropTypes.Requireable<string>;
|
|
60
61
|
className: PropTypes.Requireable<string>;
|
|
61
62
|
appendTo: PropTypes.Requireable<any>;
|
|
62
|
-
width: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
|
|
63
|
-
* @hidden
|
|
64
|
-
*/
|
|
63
|
+
width: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
|
|
65
64
|
height: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
|
|
66
65
|
}>>;
|
|
67
66
|
onOpen: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -82,13 +81,12 @@ export declare class AutoCompleteWithoutContext extends React.Component<AutoComp
|
|
|
82
81
|
size: "small" | "medium" | "large" | null | undefined;
|
|
83
82
|
rounded: "small" | "medium" | "full" | "large" | null | undefined;
|
|
84
83
|
fillMode: "flat" | "outline" | "solid" | null | undefined;
|
|
84
|
+
skipDisabledItems: boolean;
|
|
85
85
|
popupSettings: {
|
|
86
86
|
height: string;
|
|
87
87
|
};
|
|
88
88
|
required: boolean;
|
|
89
|
-
validityStyles: boolean;
|
|
90
|
-
* The value of the AutoComplete.
|
|
91
|
-
*/
|
|
89
|
+
validityStyles: boolean;
|
|
92
90
|
};
|
|
93
91
|
/**
|
|
94
92
|
* @hidden
|
|
@@ -158,7 +156,7 @@ export declare class AutoCompleteWithoutContext extends React.Component<AutoComp
|
|
|
158
156
|
/**
|
|
159
157
|
* @hidden
|
|
160
158
|
*/
|
|
161
|
-
onNavigate(state: AutoCompleteInternalState, keyCode: number): void;
|
|
159
|
+
onNavigate(state: AutoCompleteInternalState, keyCode: number, skipItems?: number): void;
|
|
162
160
|
/**
|
|
163
161
|
* @hidden
|
|
164
162
|
*/
|