@progress/kendo-react-dropdowns 6.1.0-dev.202311011714 → 6.1.0-dev.202311021038
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/MultiSelect/MultiSelect.d.ts +15 -0
- package/dist/es/MultiSelect/MultiSelect.js +97 -4
- package/dist/es/package-metadata.js +1 -1
- package/dist/npm/MultiSelect/MultiSelect.d.ts +15 -0
- package/dist/npm/MultiSelect/MultiSelect.js +97 -4
- package/dist/npm/package-metadata.js +1 -1
- package/dist/systemjs/kendo-react-dropdowns.js +1 -1
- package/e2e-next/combobox.basic.ts +24 -0
- package/e2e-next/dropdownlist.basic.tests.ts +24 -0
- package/e2e-next/dropdowntree.basic.tests.ts +24 -0
- package/e2e-next/multicolumncombobox.basic.tests.ts +24 -0
- package/package.json +16 -16
|
@@ -108,6 +108,7 @@ export declare class MultiSelectWithoutContext extends React.Component<MultiSele
|
|
|
108
108
|
private _input;
|
|
109
109
|
private _adaptiveInput;
|
|
110
110
|
private _skipFocusEvent;
|
|
111
|
+
private _lastSelectedOrDeslectedItemIndex;
|
|
111
112
|
private itemHeight;
|
|
112
113
|
protected scrollToFocused: boolean;
|
|
113
114
|
private localization;
|
|
@@ -186,6 +187,20 @@ export declare class MultiSelectWithoutContext extends React.Component<MultiSele
|
|
|
186
187
|
private applyState;
|
|
187
188
|
private setValidity;
|
|
188
189
|
private calculateMedia;
|
|
190
|
+
/**
|
|
191
|
+
* Updates the state of the MultiSelect when the complex keyboard navigation that
|
|
192
|
+
* includes key combinations with the Ctrl/Command, Shift, Home and End keys
|
|
193
|
+
*
|
|
194
|
+
* @param {Array<string | Object>} dataToSet Defines the array of new values that will be applied to the MultiSelect
|
|
195
|
+
* @param {MultiSelectInternalState} state The current state of the MultiSelect
|
|
196
|
+
*/
|
|
197
|
+
private updateStateOnKeyboardNavigation;
|
|
198
|
+
/**
|
|
199
|
+
* Returns the last element that was selected or deselected. Needed for the keyboard navigation specifications
|
|
200
|
+
*
|
|
201
|
+
* @param {number} correction A correction is needed depending on if UP or DOWN key is pressed
|
|
202
|
+
*/
|
|
203
|
+
private getLastSelectedOrDeselectedIndex;
|
|
189
204
|
}
|
|
190
205
|
/**
|
|
191
206
|
* Represents the PropsContext of the `MultiSelect` component.
|
|
@@ -83,6 +83,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
83
83
|
_this._input = null;
|
|
84
84
|
_this._adaptiveInput = null;
|
|
85
85
|
_this._skipFocusEvent = false;
|
|
86
|
+
_this._lastSelectedOrDeslectedItemIndex = null; // Needed for handling the Shift + Up/Down Keyboard Navigation requirement
|
|
86
87
|
_this.itemHeight = 0;
|
|
87
88
|
_this.scrollToFocused = false;
|
|
88
89
|
_this.localization = null;
|
|
@@ -98,6 +99,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
98
99
|
var skip = virtual ? virtual.skip : 0;
|
|
99
100
|
var dataItem = data[index - skip];
|
|
100
101
|
var indexInValue = _this.value.findIndex(function (i) { return areSame(i, dataItem, dataItemKey); });
|
|
102
|
+
_this._lastSelectedOrDeslectedItemIndex = data.findIndex(function (i) { return areSame(i, dataItem, dataItemKey); });
|
|
101
103
|
var newItems = [];
|
|
102
104
|
if (indexInValue !== -1) { // item is already selected
|
|
103
105
|
newItems = _this.value;
|
|
@@ -206,6 +208,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
206
208
|
if (_this.state.text) {
|
|
207
209
|
state.data.text = '';
|
|
208
210
|
}
|
|
211
|
+
_this._lastSelectedOrDeslectedItemIndex = null; // Resets the last selected/deselected item according to the Keyboard navigation requirements
|
|
209
212
|
_this.applyState(state);
|
|
210
213
|
};
|
|
211
214
|
_this.onInputKeyDown = function (event) {
|
|
@@ -219,7 +222,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
219
222
|
if (!text && _this.value.length > 0 &&
|
|
220
223
|
(keyCode === Keys.left || keyCode === Keys.right ||
|
|
221
224
|
keyCode === Keys.home || keyCode === Keys.end ||
|
|
222
|
-
keyCode === Keys.delete || keyCode === Keys.backspace)) {
|
|
225
|
+
keyCode === Keys.delete || keyCode === Keys.backspace) && !event.shiftKey) {
|
|
223
226
|
return _this.onTagsNavigate(event, state);
|
|
224
227
|
}
|
|
225
228
|
var togglePopup = function () {
|
|
@@ -228,7 +231,74 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
228
231
|
_this.applyState(state);
|
|
229
232
|
};
|
|
230
233
|
if (_this.opened) {
|
|
231
|
-
if (
|
|
234
|
+
if (keyCode === Keys.pageUp) {
|
|
235
|
+
_this.base.scrollPopupByPageSize(-1);
|
|
236
|
+
}
|
|
237
|
+
else if (keyCode === Keys.pageDown) {
|
|
238
|
+
_this.base.scrollPopupByPageSize(1);
|
|
239
|
+
}
|
|
240
|
+
else if ((event.ctrlKey || event.metaKey) && event.code === 'KeyA') {
|
|
241
|
+
// Ctrl or Command + "A" Key selects/deselects all items
|
|
242
|
+
var currentValuesLength = _this.state.value && _this.state.value.length;
|
|
243
|
+
var dataToSet = currentValuesLength === data.length ? [] : data;
|
|
244
|
+
_this.updateStateOnKeyboardNavigation(dataToSet, state);
|
|
245
|
+
}
|
|
246
|
+
else if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.keyCode === Keys.end) {
|
|
247
|
+
// Ctrl or Command + Shift + End from the Keyboard specifications
|
|
248
|
+
var dataToSet = data.slice(_this.getFocusedState().focusedIndex);
|
|
249
|
+
_this.itemFocus(data.length - 1, state);
|
|
250
|
+
_this.updateStateOnKeyboardNavigation(dataToSet, state);
|
|
251
|
+
}
|
|
252
|
+
else if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.keyCode === Keys.home) {
|
|
253
|
+
// Ctrl or Command + Shift + Home from the Keyboard specifications
|
|
254
|
+
var dataToSet = data.slice(0, _this.getFocusedState().focusedIndex + 1);
|
|
255
|
+
_this.itemFocus(0, state);
|
|
256
|
+
_this.updateStateOnKeyboardNavigation(dataToSet, state);
|
|
257
|
+
}
|
|
258
|
+
else if (event.shiftKey && event.keyCode === Keys.up) {
|
|
259
|
+
// Shift + Up from the Keyboard specifications
|
|
260
|
+
var dataToSet = void 0;
|
|
261
|
+
var lastSelectedOrDeselectedIndex = _this.getLastSelectedOrDeselectedIndex(1, focusedIndex);
|
|
262
|
+
if (lastSelectedOrDeselectedIndex === null) {
|
|
263
|
+
dataToSet = focusedIndex !== 0 ? data.slice(focusedIndex - 1, focusedIndex) : [data[focusedIndex]];
|
|
264
|
+
}
|
|
265
|
+
else if (lastSelectedOrDeselectedIndex === focusedIndex) {
|
|
266
|
+
dataToSet = [data[lastSelectedOrDeselectedIndex - 1]];
|
|
267
|
+
}
|
|
268
|
+
else if (focusedIndex >= 0) {
|
|
269
|
+
dataToSet = lastSelectedOrDeselectedIndex > focusedIndex
|
|
270
|
+
? data.slice(focusedIndex - 1, lastSelectedOrDeselectedIndex)
|
|
271
|
+
: data.slice(lastSelectedOrDeselectedIndex - 1, focusedIndex);
|
|
272
|
+
}
|
|
273
|
+
if (dataToSet && dataToSet.length > 0) {
|
|
274
|
+
if (focusedIndex >= 1) {
|
|
275
|
+
_this.itemFocus(focusedIndex - 1, state);
|
|
276
|
+
}
|
|
277
|
+
_this.updateStateOnKeyboardNavigation(dataToSet, state);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
else if (event.shiftKey && event.keyCode === Keys.down) {
|
|
281
|
+
// Shift + Down from the Keyboard specifications
|
|
282
|
+
var dataToSet = void 0;
|
|
283
|
+
var lastSelectedOrDeselectedIndex = _this.getLastSelectedOrDeselectedIndex(0, focusedIndex);
|
|
284
|
+
if (lastSelectedOrDeselectedIndex === null) {
|
|
285
|
+
dataToSet = focusedIndex !== data.length - 1 ? data.slice(focusedIndex, focusedIndex + 1) : [data[focusedIndex]];
|
|
286
|
+
}
|
|
287
|
+
else if (lastSelectedOrDeselectedIndex === focusedIndex) {
|
|
288
|
+
dataToSet = data.slice(focusedIndex, focusedIndex + 2);
|
|
289
|
+
}
|
|
290
|
+
else if (focusedIndex >= 0) {
|
|
291
|
+
// dataToSet = data.slice(focusedIndex, lastSelectedOrDeselectedIndex);
|
|
292
|
+
dataToSet = lastSelectedOrDeselectedIndex > focusedIndex
|
|
293
|
+
? data.slice(focusedIndex + 1, lastSelectedOrDeselectedIndex + 1)
|
|
294
|
+
: data.slice(lastSelectedOrDeselectedIndex, focusedIndex + 2);
|
|
295
|
+
}
|
|
296
|
+
if (dataToSet && dataToSet.length >= 1) {
|
|
297
|
+
_this.itemFocus(focusedIndex + 1, state);
|
|
298
|
+
_this.updateStateOnKeyboardNavigation(dataToSet, state);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else if (event.altKey && keyCode === Keys.up) {
|
|
232
302
|
togglePopup();
|
|
233
303
|
}
|
|
234
304
|
else if (keyCode === Keys.up || keyCode === Keys.down) {
|
|
@@ -851,10 +921,10 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
851
921
|
newFocusedTag = tags[focusedIndex];
|
|
852
922
|
}
|
|
853
923
|
}
|
|
854
|
-
else if (keyCode === Keys.home) {
|
|
924
|
+
else if (keyCode === Keys.home && !event.shiftKey) {
|
|
855
925
|
newFocusedTag = tags[0];
|
|
856
926
|
}
|
|
857
|
-
else if (keyCode === Keys.end) {
|
|
927
|
+
else if (keyCode === Keys.end && !event.shiftKey) {
|
|
858
928
|
newFocusedTag = tags[tags.length - 1];
|
|
859
929
|
}
|
|
860
930
|
else if (keyCode === Keys.delete) {
|
|
@@ -969,6 +1039,29 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
969
1039
|
;
|
|
970
1040
|
};
|
|
971
1041
|
;
|
|
1042
|
+
/**
|
|
1043
|
+
* Updates the state of the MultiSelect when the complex keyboard navigation that
|
|
1044
|
+
* includes key combinations with the Ctrl/Command, Shift, Home and End keys
|
|
1045
|
+
*
|
|
1046
|
+
* @param {Array<string | Object>} dataToSet Defines the array of new values that will be applied to the MultiSelect
|
|
1047
|
+
* @param {MultiSelectInternalState} state The current state of the MultiSelect
|
|
1048
|
+
*/
|
|
1049
|
+
MultiSelectWithoutContext.prototype.updateStateOnKeyboardNavigation = function (dataToSet, state) {
|
|
1050
|
+
this.setState({ value: dataToSet });
|
|
1051
|
+
this.triggerOnChange(dataToSet, state);
|
|
1052
|
+
this.applyState(state);
|
|
1053
|
+
};
|
|
1054
|
+
/**
|
|
1055
|
+
* Returns the last element that was selected or deselected. Needed for the keyboard navigation specifications
|
|
1056
|
+
*
|
|
1057
|
+
* @param {number} correction A correction is needed depending on if UP or DOWN key is pressed
|
|
1058
|
+
*/
|
|
1059
|
+
MultiSelectWithoutContext.prototype.getLastSelectedOrDeselectedIndex = function (correction, focusedIndex) {
|
|
1060
|
+
if (this._lastSelectedOrDeslectedItemIndex === null) {
|
|
1061
|
+
this._lastSelectedOrDeslectedItemIndex = focusedIndex;
|
|
1062
|
+
}
|
|
1063
|
+
return this._lastSelectedOrDeslectedItemIndex !== null ? this._lastSelectedOrDeslectedItemIndex + correction : null;
|
|
1064
|
+
};
|
|
972
1065
|
MultiSelectWithoutContext.displayName = 'MultiSelect';
|
|
973
1066
|
/** @hidden */
|
|
974
1067
|
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({
|
|
@@ -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: 1698919792,
|
|
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
|
};
|
|
@@ -108,6 +108,7 @@ export declare class MultiSelectWithoutContext extends React.Component<MultiSele
|
|
|
108
108
|
private _input;
|
|
109
109
|
private _adaptiveInput;
|
|
110
110
|
private _skipFocusEvent;
|
|
111
|
+
private _lastSelectedOrDeslectedItemIndex;
|
|
111
112
|
private itemHeight;
|
|
112
113
|
protected scrollToFocused: boolean;
|
|
113
114
|
private localization;
|
|
@@ -186,6 +187,20 @@ export declare class MultiSelectWithoutContext extends React.Component<MultiSele
|
|
|
186
187
|
private applyState;
|
|
187
188
|
private setValidity;
|
|
188
189
|
private calculateMedia;
|
|
190
|
+
/**
|
|
191
|
+
* Updates the state of the MultiSelect when the complex keyboard navigation that
|
|
192
|
+
* includes key combinations with the Ctrl/Command, Shift, Home and End keys
|
|
193
|
+
*
|
|
194
|
+
* @param {Array<string | Object>} dataToSet Defines the array of new values that will be applied to the MultiSelect
|
|
195
|
+
* @param {MultiSelectInternalState} state The current state of the MultiSelect
|
|
196
|
+
*/
|
|
197
|
+
private updateStateOnKeyboardNavigation;
|
|
198
|
+
/**
|
|
199
|
+
* Returns the last element that was selected or deselected. Needed for the keyboard navigation specifications
|
|
200
|
+
*
|
|
201
|
+
* @param {number} correction A correction is needed depending on if UP or DOWN key is pressed
|
|
202
|
+
*/
|
|
203
|
+
private getLastSelectedOrDeselectedIndex;
|
|
189
204
|
}
|
|
190
205
|
/**
|
|
191
206
|
* Represents the PropsContext of the `MultiSelect` component.
|
|
@@ -86,6 +86,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
86
86
|
_this._input = null;
|
|
87
87
|
_this._adaptiveInput = null;
|
|
88
88
|
_this._skipFocusEvent = false;
|
|
89
|
+
_this._lastSelectedOrDeslectedItemIndex = null; // Needed for handling the Shift + Up/Down Keyboard Navigation requirement
|
|
89
90
|
_this.itemHeight = 0;
|
|
90
91
|
_this.scrollToFocused = false;
|
|
91
92
|
_this.localization = null;
|
|
@@ -101,6 +102,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
101
102
|
var skip = virtual ? virtual.skip : 0;
|
|
102
103
|
var dataItem = data[index - skip];
|
|
103
104
|
var indexInValue = _this.value.findIndex(function (i) { return (0, utils_1.areSame)(i, dataItem, dataItemKey); });
|
|
105
|
+
_this._lastSelectedOrDeslectedItemIndex = data.findIndex(function (i) { return (0, utils_1.areSame)(i, dataItem, dataItemKey); });
|
|
104
106
|
var newItems = [];
|
|
105
107
|
if (indexInValue !== -1) { // item is already selected
|
|
106
108
|
newItems = _this.value;
|
|
@@ -209,6 +211,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
209
211
|
if (_this.state.text) {
|
|
210
212
|
state.data.text = '';
|
|
211
213
|
}
|
|
214
|
+
_this._lastSelectedOrDeslectedItemIndex = null; // Resets the last selected/deselected item according to the Keyboard navigation requirements
|
|
212
215
|
_this.applyState(state);
|
|
213
216
|
};
|
|
214
217
|
_this.onInputKeyDown = function (event) {
|
|
@@ -222,7 +225,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
222
225
|
if (!text && _this.value.length > 0 &&
|
|
223
226
|
(keyCode === kendo_react_common_1.Keys.left || keyCode === kendo_react_common_1.Keys.right ||
|
|
224
227
|
keyCode === kendo_react_common_1.Keys.home || keyCode === kendo_react_common_1.Keys.end ||
|
|
225
|
-
keyCode === kendo_react_common_1.Keys.delete || keyCode === kendo_react_common_1.Keys.backspace)) {
|
|
228
|
+
keyCode === kendo_react_common_1.Keys.delete || keyCode === kendo_react_common_1.Keys.backspace) && !event.shiftKey) {
|
|
226
229
|
return _this.onTagsNavigate(event, state);
|
|
227
230
|
}
|
|
228
231
|
var togglePopup = function () {
|
|
@@ -231,7 +234,74 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
231
234
|
_this.applyState(state);
|
|
232
235
|
};
|
|
233
236
|
if (_this.opened) {
|
|
234
|
-
if (
|
|
237
|
+
if (keyCode === kendo_react_common_1.Keys.pageUp) {
|
|
238
|
+
_this.base.scrollPopupByPageSize(-1);
|
|
239
|
+
}
|
|
240
|
+
else if (keyCode === kendo_react_common_1.Keys.pageDown) {
|
|
241
|
+
_this.base.scrollPopupByPageSize(1);
|
|
242
|
+
}
|
|
243
|
+
else if ((event.ctrlKey || event.metaKey) && event.code === 'KeyA') {
|
|
244
|
+
// Ctrl or Command + "A" Key selects/deselects all items
|
|
245
|
+
var currentValuesLength = _this.state.value && _this.state.value.length;
|
|
246
|
+
var dataToSet = currentValuesLength === data.length ? [] : data;
|
|
247
|
+
_this.updateStateOnKeyboardNavigation(dataToSet, state);
|
|
248
|
+
}
|
|
249
|
+
else if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.keyCode === kendo_react_common_1.Keys.end) {
|
|
250
|
+
// Ctrl or Command + Shift + End from the Keyboard specifications
|
|
251
|
+
var dataToSet = data.slice(_this.getFocusedState().focusedIndex);
|
|
252
|
+
_this.itemFocus(data.length - 1, state);
|
|
253
|
+
_this.updateStateOnKeyboardNavigation(dataToSet, state);
|
|
254
|
+
}
|
|
255
|
+
else if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.keyCode === kendo_react_common_1.Keys.home) {
|
|
256
|
+
// Ctrl or Command + Shift + Home from the Keyboard specifications
|
|
257
|
+
var dataToSet = data.slice(0, _this.getFocusedState().focusedIndex + 1);
|
|
258
|
+
_this.itemFocus(0, state);
|
|
259
|
+
_this.updateStateOnKeyboardNavigation(dataToSet, state);
|
|
260
|
+
}
|
|
261
|
+
else if (event.shiftKey && event.keyCode === kendo_react_common_1.Keys.up) {
|
|
262
|
+
// Shift + Up from the Keyboard specifications
|
|
263
|
+
var dataToSet = void 0;
|
|
264
|
+
var lastSelectedOrDeselectedIndex = _this.getLastSelectedOrDeselectedIndex(1, focusedIndex);
|
|
265
|
+
if (lastSelectedOrDeselectedIndex === null) {
|
|
266
|
+
dataToSet = focusedIndex !== 0 ? data.slice(focusedIndex - 1, focusedIndex) : [data[focusedIndex]];
|
|
267
|
+
}
|
|
268
|
+
else if (lastSelectedOrDeselectedIndex === focusedIndex) {
|
|
269
|
+
dataToSet = [data[lastSelectedOrDeselectedIndex - 1]];
|
|
270
|
+
}
|
|
271
|
+
else if (focusedIndex >= 0) {
|
|
272
|
+
dataToSet = lastSelectedOrDeselectedIndex > focusedIndex
|
|
273
|
+
? data.slice(focusedIndex - 1, lastSelectedOrDeselectedIndex)
|
|
274
|
+
: data.slice(lastSelectedOrDeselectedIndex - 1, focusedIndex);
|
|
275
|
+
}
|
|
276
|
+
if (dataToSet && dataToSet.length > 0) {
|
|
277
|
+
if (focusedIndex >= 1) {
|
|
278
|
+
_this.itemFocus(focusedIndex - 1, state);
|
|
279
|
+
}
|
|
280
|
+
_this.updateStateOnKeyboardNavigation(dataToSet, state);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
else if (event.shiftKey && event.keyCode === kendo_react_common_1.Keys.down) {
|
|
284
|
+
// Shift + Down from the Keyboard specifications
|
|
285
|
+
var dataToSet = void 0;
|
|
286
|
+
var lastSelectedOrDeselectedIndex = _this.getLastSelectedOrDeselectedIndex(0, focusedIndex);
|
|
287
|
+
if (lastSelectedOrDeselectedIndex === null) {
|
|
288
|
+
dataToSet = focusedIndex !== data.length - 1 ? data.slice(focusedIndex, focusedIndex + 1) : [data[focusedIndex]];
|
|
289
|
+
}
|
|
290
|
+
else if (lastSelectedOrDeselectedIndex === focusedIndex) {
|
|
291
|
+
dataToSet = data.slice(focusedIndex, focusedIndex + 2);
|
|
292
|
+
}
|
|
293
|
+
else if (focusedIndex >= 0) {
|
|
294
|
+
// dataToSet = data.slice(focusedIndex, lastSelectedOrDeselectedIndex);
|
|
295
|
+
dataToSet = lastSelectedOrDeselectedIndex > focusedIndex
|
|
296
|
+
? data.slice(focusedIndex + 1, lastSelectedOrDeselectedIndex + 1)
|
|
297
|
+
: data.slice(lastSelectedOrDeselectedIndex, focusedIndex + 2);
|
|
298
|
+
}
|
|
299
|
+
if (dataToSet && dataToSet.length >= 1) {
|
|
300
|
+
_this.itemFocus(focusedIndex + 1, state);
|
|
301
|
+
_this.updateStateOnKeyboardNavigation(dataToSet, state);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
else if (event.altKey && keyCode === kendo_react_common_1.Keys.up) {
|
|
235
305
|
togglePopup();
|
|
236
306
|
}
|
|
237
307
|
else if (keyCode === kendo_react_common_1.Keys.up || keyCode === kendo_react_common_1.Keys.down) {
|
|
@@ -854,10 +924,10 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
854
924
|
newFocusedTag = tags[focusedIndex];
|
|
855
925
|
}
|
|
856
926
|
}
|
|
857
|
-
else if (keyCode === kendo_react_common_1.Keys.home) {
|
|
927
|
+
else if (keyCode === kendo_react_common_1.Keys.home && !event.shiftKey) {
|
|
858
928
|
newFocusedTag = tags[0];
|
|
859
929
|
}
|
|
860
|
-
else if (keyCode === kendo_react_common_1.Keys.end) {
|
|
930
|
+
else if (keyCode === kendo_react_common_1.Keys.end && !event.shiftKey) {
|
|
861
931
|
newFocusedTag = tags[tags.length - 1];
|
|
862
932
|
}
|
|
863
933
|
else if (keyCode === kendo_react_common_1.Keys.delete) {
|
|
@@ -972,6 +1042,29 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
|
|
|
972
1042
|
;
|
|
973
1043
|
};
|
|
974
1044
|
;
|
|
1045
|
+
/**
|
|
1046
|
+
* Updates the state of the MultiSelect when the complex keyboard navigation that
|
|
1047
|
+
* includes key combinations with the Ctrl/Command, Shift, Home and End keys
|
|
1048
|
+
*
|
|
1049
|
+
* @param {Array<string | Object>} dataToSet Defines the array of new values that will be applied to the MultiSelect
|
|
1050
|
+
* @param {MultiSelectInternalState} state The current state of the MultiSelect
|
|
1051
|
+
*/
|
|
1052
|
+
MultiSelectWithoutContext.prototype.updateStateOnKeyboardNavigation = function (dataToSet, state) {
|
|
1053
|
+
this.setState({ value: dataToSet });
|
|
1054
|
+
this.triggerOnChange(dataToSet, state);
|
|
1055
|
+
this.applyState(state);
|
|
1056
|
+
};
|
|
1057
|
+
/**
|
|
1058
|
+
* Returns the last element that was selected or deselected. Needed for the keyboard navigation specifications
|
|
1059
|
+
*
|
|
1060
|
+
* @param {number} correction A correction is needed depending on if UP or DOWN key is pressed
|
|
1061
|
+
*/
|
|
1062
|
+
MultiSelectWithoutContext.prototype.getLastSelectedOrDeselectedIndex = function (correction, focusedIndex) {
|
|
1063
|
+
if (this._lastSelectedOrDeslectedItemIndex === null) {
|
|
1064
|
+
this._lastSelectedOrDeslectedItemIndex = focusedIndex;
|
|
1065
|
+
}
|
|
1066
|
+
return this._lastSelectedOrDeslectedItemIndex !== null ? this._lastSelectedOrDeslectedItemIndex + correction : null;
|
|
1067
|
+
};
|
|
975
1068
|
MultiSelectWithoutContext.displayName = 'MultiSelect';
|
|
976
1069
|
/** @hidden */
|
|
977
1070
|
MultiSelectWithoutContext.propTypes = __assign(__assign({}, DropDownBase_1.default.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({
|
|
@@ -8,7 +8,7 @@ exports.packageMetadata = {
|
|
|
8
8
|
name: '@progress/kendo-react-dropdowns',
|
|
9
9
|
productName: 'KendoReact',
|
|
10
10
|
productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],
|
|
11
|
-
publishDate:
|
|
11
|
+
publishDate: 1698919792,
|
|
12
12
|
version: '',
|
|
13
13
|
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'
|
|
14
14
|
};
|