@progress/kendo-react-dropdowns 6.1.1 → 7.0.0-develop.1

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 (177) hide show
  1. package/{dist/es/AutoComplete → AutoComplete}/AutoComplete.d.ts +12 -8
  2. package/{dist/npm/AutoComplete → AutoComplete}/AutoCompleteProps.d.ts +4 -1
  3. package/{dist/es/ComboBox → ComboBox}/ComboBox.d.ts +12 -8
  4. package/{dist/es/ComboBox → ComboBox}/ComboBoxProps.d.ts +4 -1
  5. package/{dist/es/DropDownList → DropDownList}/DropDownList.d.ts +9 -5
  6. package/{dist/es/DropDownList → DropDownList}/DropDownListProps.d.ts +4 -1
  7. package/{dist/es/DropDownTree → DropDownTree}/DropDownTree.d.ts +4 -0
  8. package/{dist/npm/DropDownTree → DropDownTree}/DropDownTreeProps.d.ts +4 -1
  9. package/DropDownTree/ListNoData.d.ts +10 -0
  10. package/DropDownTree/useDropdownWidth.d.ts +9 -0
  11. package/LICENSE.md +1 -1
  12. package/{dist/es/MultiColumnComboBox → MultiColumnComboBox}/MultiColumnComboBox.d.ts +4 -0
  13. package/{dist/npm/MultiSelect → MultiSelect}/MultiSelect.d.ts +9 -5
  14. package/{dist/es/MultiSelect → MultiSelect}/MultiSelectProps.d.ts +4 -1
  15. package/{dist/npm/MultiSelect → MultiSelect}/TagList.d.ts +5 -1
  16. package/{dist/es/MultiSelectTree → MultiSelectTree}/MultiSelectTree.d.ts +4 -0
  17. package/{dist/es/MultiSelectTree → MultiSelectTree}/MultiSelectTreeProps.d.ts +5 -1
  18. package/{dist/npm/MultiSelectTree → MultiSelectTree}/utils.d.ts +5 -1
  19. package/{dist/npm/common → common}/AdaptiveMode.d.ts +5 -1
  20. package/common/ClearButton.d.ts +18 -0
  21. package/{dist/npm/common → common}/DropDownBase.d.ts +5 -1
  22. package/{dist/es/common → common}/GroupStickyHeader.d.ts +5 -1
  23. package/{dist/es/common → common}/List.d.ts +7 -3
  24. package/common/ListContainer.d.ts +22 -0
  25. package/common/ListDefaultItem.d.ts +20 -0
  26. package/{dist/npm/common → common}/ListFilter.d.ts +4 -0
  27. package/{dist/npm/common → common}/ListGroupItem.d.ts +5 -1
  28. package/{dist/npm/common → common}/ListItem.d.ts +5 -1
  29. package/common/MultiColumnList.d.ts +9 -0
  30. package/common/Navigation.d.ts +17 -0
  31. package/{dist/es/common → common}/SearchBar.d.ts +5 -1
  32. package/{dist/npm/common → common}/VirtualScroll.d.ts +4 -1
  33. package/common/constants.d.ts +8 -0
  34. package/{dist/es/common → common}/events.d.ts +4 -1
  35. package/{dist/npm/common → common}/filterDescriptor.d.ts +4 -0
  36. package/{dist/es/common → common}/settings.d.ts +5 -2
  37. package/{dist/npm/common → common}/utils.d.ts +4 -0
  38. package/dist/cdn/js/kendo-react-dropdowns.js +5 -1
  39. package/index.d.ts +29 -0
  40. package/index.js +5 -0
  41. package/index.mjs +4383 -0
  42. package/{dist/npm/messages → messages}/index.d.ts +4 -0
  43. package/package-metadata.d.ts +9 -0
  44. package/package.json +34 -62
  45. package/about.md +0 -3
  46. package/dist/es/AutoComplete/AutoComplete.js +0 -652
  47. package/dist/es/AutoComplete/AutoCompleteProps.d.ts +0 -243
  48. package/dist/es/AutoComplete/AutoCompleteProps.js +0 -2
  49. package/dist/es/ComboBox/ComboBox.js +0 -915
  50. package/dist/es/ComboBox/ComboBoxProps.js +0 -2
  51. package/dist/es/DropDownList/DropDownList.js +0 -887
  52. package/dist/es/DropDownList/DropDownListProps.js +0 -2
  53. package/dist/es/DropDownTree/DropDownTree.js +0 -540
  54. package/dist/es/DropDownTree/DropDownTreeProps.d.ts +0 -294
  55. package/dist/es/DropDownTree/DropDownTreeProps.js +0 -2
  56. package/dist/es/DropDownTree/ListNoData.d.ts +0 -6
  57. package/dist/es/DropDownTree/ListNoData.js +0 -8
  58. package/dist/es/DropDownTree/useDropdownWidth.d.ts +0 -5
  59. package/dist/es/DropDownTree/useDropdownWidth.js +0 -13
  60. package/dist/es/MultiColumnComboBox/MultiColumnComboBox.js +0 -213
  61. package/dist/es/MultiSelect/MultiSelect.d.ts +0 -256
  62. package/dist/es/MultiSelect/MultiSelect.js +0 -1110
  63. package/dist/es/MultiSelect/MultiSelectProps.js +0 -2
  64. package/dist/es/MultiSelect/TagList.d.ts +0 -38
  65. package/dist/es/MultiSelect/TagList.js +0 -39
  66. package/dist/es/MultiSelectTree/MultiSelectTree.js +0 -619
  67. package/dist/es/MultiSelectTree/MultiSelectTreeProps.js +0 -2
  68. package/dist/es/MultiSelectTree/utils.d.ts +0 -17
  69. package/dist/es/MultiSelectTree/utils.js +0 -191
  70. package/dist/es/common/AdaptiveMode.d.ts +0 -21
  71. package/dist/es/common/AdaptiveMode.js +0 -45
  72. package/dist/es/common/ClearButton.d.ts +0 -14
  73. package/dist/es/common/ClearButton.js +0 -39
  74. package/dist/es/common/DropDownBase.d.ts +0 -175
  75. package/dist/es/common/DropDownBase.js +0 -297
  76. package/dist/es/common/GroupStickyHeader.js +0 -34
  77. package/dist/es/common/List.js +0 -75
  78. package/dist/es/common/ListContainer.d.ts +0 -18
  79. package/dist/es/common/ListContainer.js +0 -43
  80. package/dist/es/common/ListDefaultItem.d.ts +0 -16
  81. package/dist/es/common/ListDefaultItem.js +0 -36
  82. package/dist/es/common/ListFilter.d.ts +0 -19
  83. package/dist/es/common/ListFilter.js +0 -37
  84. package/dist/es/common/ListGroupItem.d.ts +0 -33
  85. package/dist/es/common/ListGroupItem.js +0 -33
  86. package/dist/es/common/ListItem.d.ts +0 -61
  87. package/dist/es/common/ListItem.js +0 -44
  88. package/dist/es/common/MultiColumnList.d.ts +0 -6
  89. package/dist/es/common/MultiColumnList.js +0 -22
  90. package/dist/es/common/Navigation.d.ts +0 -13
  91. package/dist/es/common/Navigation.js +0 -34
  92. package/dist/es/common/SearchBar.js +0 -62
  93. package/dist/es/common/VirtualScroll.d.ts +0 -42
  94. package/dist/es/common/VirtualScroll.js +0 -161
  95. package/dist/es/common/constants.d.ts +0 -4
  96. package/dist/es/common/constants.js +0 -4
  97. package/dist/es/common/events.js +0 -1
  98. package/dist/es/common/filterDescriptor.d.ts +0 -41
  99. package/dist/es/common/filterDescriptor.js +0 -2
  100. package/dist/es/common/settings.js +0 -8
  101. package/dist/es/common/utils.d.ts +0 -62
  102. package/dist/es/common/utils.js +0 -194
  103. package/dist/es/main.d.ts +0 -25
  104. package/dist/es/main.js +0 -19
  105. package/dist/es/messages/index.d.ts +0 -40
  106. package/dist/es/messages/index.js +0 -41
  107. package/dist/es/package-metadata.d.ts +0 -5
  108. package/dist/es/package-metadata.js +0 -11
  109. package/dist/npm/AutoComplete/AutoComplete.d.ts +0 -230
  110. package/dist/npm/AutoComplete/AutoComplete.js +0 -655
  111. package/dist/npm/AutoComplete/AutoCompleteProps.js +0 -3
  112. package/dist/npm/ComboBox/ComboBox.d.ts +0 -248
  113. package/dist/npm/ComboBox/ComboBox.js +0 -918
  114. package/dist/npm/ComboBox/ComboBoxProps.d.ts +0 -313
  115. package/dist/npm/ComboBox/ComboBoxProps.js +0 -3
  116. package/dist/npm/DropDownList/DropDownList.d.ts +0 -258
  117. package/dist/npm/DropDownList/DropDownList.js +0 -890
  118. package/dist/npm/DropDownList/DropDownListProps.d.ts +0 -326
  119. package/dist/npm/DropDownList/DropDownListProps.js +0 -3
  120. package/dist/npm/DropDownTree/DropDownTree.d.ts +0 -70
  121. package/dist/npm/DropDownTree/DropDownTree.js +0 -543
  122. package/dist/npm/DropDownTree/DropDownTreeProps.js +0 -3
  123. package/dist/npm/DropDownTree/ListNoData.d.ts +0 -6
  124. package/dist/npm/DropDownTree/ListNoData.js +0 -12
  125. package/dist/npm/DropDownTree/useDropdownWidth.d.ts +0 -5
  126. package/dist/npm/DropDownTree/useDropdownWidth.js +0 -17
  127. package/dist/npm/MultiColumnComboBox/MultiColumnComboBox.d.ts +0 -287
  128. package/dist/npm/MultiColumnComboBox/MultiColumnComboBox.js +0 -216
  129. package/dist/npm/MultiSelect/MultiSelect.js +0 -1113
  130. package/dist/npm/MultiSelect/MultiSelectProps.d.ts +0 -314
  131. package/dist/npm/MultiSelect/MultiSelectProps.js +0 -3
  132. package/dist/npm/MultiSelect/TagList.js +0 -41
  133. package/dist/npm/MultiSelectTree/MultiSelectTree.d.ts +0 -81
  134. package/dist/npm/MultiSelectTree/MultiSelectTree.js +0 -622
  135. package/dist/npm/MultiSelectTree/MultiSelectTreeProps.d.ts +0 -320
  136. package/dist/npm/MultiSelectTree/MultiSelectTreeProps.js +0 -3
  137. package/dist/npm/MultiSelectTree/utils.js +0 -196
  138. package/dist/npm/common/AdaptiveMode.js +0 -49
  139. package/dist/npm/common/ClearButton.d.ts +0 -14
  140. package/dist/npm/common/ClearButton.js +0 -41
  141. package/dist/npm/common/DropDownBase.js +0 -299
  142. package/dist/npm/common/GroupStickyHeader.d.ts +0 -24
  143. package/dist/npm/common/GroupStickyHeader.js +0 -36
  144. package/dist/npm/common/List.d.ts +0 -45
  145. package/dist/npm/common/List.js +0 -77
  146. package/dist/npm/common/ListContainer.d.ts +0 -18
  147. package/dist/npm/common/ListContainer.js +0 -45
  148. package/dist/npm/common/ListDefaultItem.d.ts +0 -16
  149. package/dist/npm/common/ListDefaultItem.js +0 -38
  150. package/dist/npm/common/ListFilter.js +0 -39
  151. package/dist/npm/common/ListGroupItem.js +0 -35
  152. package/dist/npm/common/ListItem.js +0 -46
  153. package/dist/npm/common/MultiColumnList.d.ts +0 -6
  154. package/dist/npm/common/MultiColumnList.js +0 -26
  155. package/dist/npm/common/Navigation.d.ts +0 -13
  156. package/dist/npm/common/Navigation.js +0 -37
  157. package/dist/npm/common/SearchBar.d.ts +0 -43
  158. package/dist/npm/common/SearchBar.js +0 -64
  159. package/dist/npm/common/VirtualScroll.js +0 -163
  160. package/dist/npm/common/constants.d.ts +0 -4
  161. package/dist/npm/common/constants.js +0 -7
  162. package/dist/npm/common/events.d.ts +0 -73
  163. package/dist/npm/common/events.js +0 -2
  164. package/dist/npm/common/filterDescriptor.js +0 -3
  165. package/dist/npm/common/settings.d.ts +0 -114
  166. package/dist/npm/common/settings.js +0 -11
  167. package/dist/npm/common/utils.js +0 -211
  168. package/dist/npm/main.d.ts +0 -25
  169. package/dist/npm/main.js +0 -62
  170. package/dist/npm/messages/index.js +0 -44
  171. package/dist/npm/package-metadata.d.ts +0 -5
  172. package/dist/npm/package-metadata.js +0 -14
  173. package/dist/systemjs/kendo-react-dropdowns.js +0 -1
  174. package/e2e-next/combobox.basic.ts +0 -24
  175. package/e2e-next/dropdownlist.basic.tests.ts +0 -24
  176. package/e2e-next/dropdowntree.basic.tests.ts +0 -24
  177. package/e2e-next/multicolumncombobox.basic.tests.ts +0 -24
@@ -1,652 +0,0 @@
1
- var __extends = (this && this.__extends) || (function () {
2
- var extendStatics = function (d, b) {
3
- extendStatics = Object.setPrototypeOf ||
4
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
- return extendStatics(d, b);
7
- };
8
- return function (d, b) {
9
- if (typeof b !== "function" && b !== null)
10
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
- extendStatics(d, b);
12
- function __() { this.constructor = d; }
13
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
- };
15
- })();
16
- var __assign = (this && this.__assign) || function () {
17
- __assign = Object.assign || function(t) {
18
- for (var s, i = 1, n = arguments.length; i < n; i++) {
19
- s = arguments[i];
20
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
21
- t[p] = s[p];
22
- }
23
- return t;
24
- };
25
- return __assign.apply(this, arguments);
26
- };
27
- import * as React from 'react';
28
- import * as PropTypes from 'prop-types';
29
- import SearchBar from './../common/SearchBar';
30
- import ListContainer from './../common/ListContainer';
31
- import List from './../common/List';
32
- import DropDownBase from '../common/DropDownBase';
33
- import GroupStickyHeader from '../common/GroupStickyHeader';
34
- import { itemIndexStartsWith, getItemValue, areSame, getFocusedItem } from '../common/utils';
35
- import { guid, Keys, classNames, createPropsContext, withPropsContext, kendoThemeMaps, IconWrap } from '@progress/kendo-react-common';
36
- import { FloatingLabel } from '@progress/kendo-react-labels';
37
- import { validatePackage } from '@progress/kendo-react-common';
38
- import { packageMetadata } from '../package-metadata';
39
- import ClearButton from '../common/ClearButton';
40
- var VALIDATION_MESSAGE = 'Please enter a valid value!';
41
- var sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;
42
- /** @hidden */
43
- var AutoCompleteWithoutContext = /** @class */ (function (_super) {
44
- __extends(AutoCompleteWithoutContext, _super);
45
- function AutoCompleteWithoutContext(props) {
46
- var _this = _super.call(this, props) || this;
47
- /**
48
- * @hidden
49
- */
50
- _this.state = {};
51
- _this.base = new DropDownBase(_this);
52
- _this._element = null;
53
- _this._inputId = guid();
54
- _this._suggested = '';
55
- _this._input = null;
56
- _this._isScrolling = false;
57
- _this.itemHeight = 0;
58
- /**
59
- * @hidden
60
- */
61
- _this.focus = function () {
62
- if (_this._input) {
63
- _this._input.focus();
64
- }
65
- };
66
- /**
67
- * @hidden
68
- */
69
- _this.handleItemSelect = function (index, state) {
70
- var _a = _this.props.data, data = _a === void 0 ? [] : _a;
71
- var newText = getItemValue(data[index], _this.props.textField);
72
- _this.triggerOnChange(newText, state);
73
- };
74
- /**
75
- * @hidden
76
- */
77
- _this.itemFocus = function (index, state) {
78
- var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;
79
- var focusedItem = data[index];
80
- if (!areSame(_this.state.focusedItem, focusedItem, textField)) {
81
- state.data.focusedItem = focusedItem;
82
- }
83
- };
84
- /**
85
- * @hidden
86
- */
87
- _this.togglePopup = function (state) {
88
- _this.base.togglePopup(state);
89
- };
90
- _this.setValidity = function () {
91
- if (_this._input && _this._input.setCustomValidity) {
92
- _this._input.setCustomValidity(_this.validity.valid
93
- ? ''
94
- : _this.props.validationMessage || VALIDATION_MESSAGE);
95
- }
96
- };
97
- _this.onScroll = function (event) {
98
- _this._isScrolling = true;
99
- var list = _this.base.list;
100
- var groupField = _this.props.groupField;
101
- var _a = _this.props.data, data = _a === void 0 ? [] : _a;
102
- if (!groupField || !data.length) {
103
- return;
104
- }
105
- var itemHeight = _this.itemHeight || (list ? list.children[0].offsetHeight : 0);
106
- var target = event.target;
107
- var scrollTop = target.scrollTop;
108
- if (groupField) {
109
- data = _this.base.getGroupedDataModernMode(data, groupField);
110
- }
111
- ;
112
- var group = data[0][groupField];
113
- for (var i = 1; i < data.length; i++) {
114
- if (itemHeight * i > scrollTop) {
115
- break;
116
- }
117
- if (data[i] && data[i][groupField]) {
118
- group = data[i][groupField];
119
- }
120
- }
121
- if (group !== _this.state.group) {
122
- _this.setState({
123
- group: group
124
- });
125
- }
126
- };
127
- _this.handleItemClick = function (index, event) {
128
- _this.base.handleItemClick(index, event);
129
- _this._valueDuringOnChange = undefined;
130
- };
131
- _this.onChangeHandler = function (event) {
132
- var base = _this.base;
133
- var state = base.initState();
134
- var input = event.currentTarget;
135
- var value = input.value;
136
- var selectionAtEnd = input.selectionEnd === value.length;
137
- state.syntheticEvent = event;
138
- var prevSuggestion = _this._suggested;
139
- var prevValue = _this.value;
140
- var prevUserInput = prevValue &&
141
- prevValue.substring(0, prevValue.length - prevSuggestion.length);
142
- var deletedSuggestion = prevUserInput && prevUserInput === value;
143
- var deleting = prevUserInput && prevUserInput.length > value.length;
144
- var suggest = _this.props.suggest;
145
- var opened = _this.props.opened !== undefined ?
146
- _this.props.opened : _this.state.opened;
147
- if (suggest !== undefined && suggest !== false) {
148
- if (deletedSuggestion || deleting || !selectionAtEnd) {
149
- _this._suggested = '';
150
- }
151
- else {
152
- _this.suggestValue(value);
153
- }
154
- var newValue = value + _this._suggested;
155
- var suggestion = { userInput: value, value: _this._suggested };
156
- _this.triggerOnChange(newValue, state, { suggestion: suggestion });
157
- }
158
- else {
159
- _this._suggested = '';
160
- _this.triggerOnChange(value, state);
161
- }
162
- if ((!opened && value) || (opened && !value)) {
163
- _this.togglePopup(state);
164
- }
165
- state.data.focusedItem = undefined;
166
- _this.applyState(state);
167
- _this.setState({ group: undefined });
168
- };
169
- _this.clearButtonClick = function (event) {
170
- var base = _this.base;
171
- var state = base.initState();
172
- var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;
173
- state.syntheticEvent = event;
174
- var newValue = '';
175
- _this._suggested = '';
176
- _this.triggerOnChange(newValue, state);
177
- if (_this.state.focusedItem !== undefined) {
178
- state.data.focusedItem = undefined;
179
- }
180
- if (opened) {
181
- _this.togglePopup(state);
182
- }
183
- _this.applyState(state);
184
- };
185
- _this.onInputKeyDown = function (event) {
186
- var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, skipDisabledItems = _a.skipDisabledItems, groupField = _a.groupField, textField = _a.textField;
187
- if (_this._isScrolling) {
188
- _this._isScrolling = false;
189
- }
190
- var focusedIndex = _this.focusedIndex();
191
- var focusedItem = data[focusedIndex];
192
- var keyCode = event.keyCode;
193
- var altOrOptionsKeyPressed = event.altKey;
194
- var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;
195
- var state = _this.base.initState();
196
- state.syntheticEvent = event;
197
- var preventDefault = function () {
198
- if (opened) {
199
- event.preventDefault();
200
- }
201
- };
202
- if (altOrOptionsKeyPressed && keyCode === Keys.down) {
203
- _this.setState({
204
- opened: true
205
- });
206
- }
207
- else if (altOrOptionsKeyPressed && keyCode === Keys.up) {
208
- _this.setState({
209
- opened: false
210
- });
211
- }
212
- else if (opened && keyCode === Keys.pageUp) {
213
- _this.base.scrollPopupByPageSize(-1);
214
- }
215
- else if (opened && keyCode === Keys.pageDown) {
216
- _this.base.scrollPopupByPageSize(1);
217
- }
218
- else if (opened && (keyCode === Keys.enter || keyCode === Keys.esc)) {
219
- preventDefault();
220
- if (skipDisabledItems === false && focusedItem && focusedItem.disabled) {
221
- if (opened) {
222
- _this.togglePopup(state);
223
- }
224
- _this.applyState(state);
225
- }
226
- else {
227
- _this.applyInputValue(event.currentTarget.value, state, event.keyCode);
228
- }
229
- }
230
- else if (!opened && keyCode === Keys.esc) {
231
- var newValue = '';
232
- _this._suggested = '';
233
- _this.triggerOnChange(newValue, state);
234
- if (_this.state.focusedItem !== undefined) {
235
- state.data.focusedItem = undefined;
236
- }
237
- _this.applyState(state);
238
- }
239
- else if (keyCode === Keys.up || keyCode === Keys.down) {
240
- if (groupField !== '' && textField) {
241
- if (!_this.props.skipDisabledItems && opened) {
242
- _this.onNavigate(state, keyCode);
243
- }
244
- else {
245
- var newIndex = 0;
246
- if (keyCode === Keys.down || keyCode === Keys.right) {
247
- var tempnewIndex_1 = data.slice(focusedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });
248
- newIndex = tempnewIndex_1 && data.findIndex(function (el) { return el[textField] === tempnewIndex_1[textField]; });
249
- }
250
- else if (keyCode === Keys.up || keyCode === Keys.left) {
251
- var dataToSearch = void 0;
252
- if (focusedIndex === -1) {
253
- dataToSearch = data;
254
- newIndex = data.findIndex(function (i) { return !i.disabled && i[textField]; });
255
- }
256
- else {
257
- dataToSearch = data.slice(0, focusedIndex);
258
- var tempnewIndex_2 = dataToSearch.pop();
259
- while (tempnewIndex_2 && tempnewIndex_2.disabled) {
260
- tempnewIndex_2 = dataToSearch.pop();
261
- }
262
- newIndex = tempnewIndex_2 && data.findIndex(function (el) { return el[textField] === tempnewIndex_2[textField]; });
263
- }
264
- }
265
- if (newIndex !== undefined) {
266
- var skipItems = newIndex - focusedIndex;
267
- _this.onNavigate(state, keyCode, skipItems);
268
- }
269
- else if (newIndex === undefined && data.findIndex(function (el) { return el[textField]; }) === data.length - 1) {
270
- _this.onNavigate(state, keyCode);
271
- }
272
- }
273
- }
274
- else if (!_this.props.skipDisabledItems && opened) {
275
- _this.onNavigate(state, keyCode);
276
- }
277
- else {
278
- var newIndex = null;
279
- if (keyCode === Keys.down || keyCode === Keys.right) {
280
- newIndex = data.slice(focusedIndex + 1).find(function (i) { return !i.disabled; });
281
- }
282
- else if (keyCode === Keys.up || keyCode === Keys.left) {
283
- var dataTest = data.slice(0, focusedIndex);
284
- newIndex = dataTest.pop();
285
- while (newIndex && newIndex.disabled) {
286
- newIndex = dataTest.pop();
287
- }
288
- }
289
- if (newIndex) {
290
- var skipItems = newIndex.id - focusedIndex - 1;
291
- _this.onNavigate(state, keyCode, skipItems);
292
- }
293
- else {
294
- _this.onNavigate(state, keyCode);
295
- }
296
- }
297
- _this.applyState(state);
298
- preventDefault();
299
- }
300
- };
301
- _this.handleBlur = function (event) {
302
- if (_this.state.focused) {
303
- var state = _this.base.initState();
304
- state.data.focused = false;
305
- state.events.push({ type: 'onBlur' });
306
- state.syntheticEvent = event;
307
- _this.applyInputValue(event.currentTarget.value, state);
308
- }
309
- };
310
- validatePackage(packageMetadata);
311
- return _this;
312
- }
313
- Object.defineProperty(AutoCompleteWithoutContext.prototype, "element", {
314
- /**
315
- * @hidden
316
- */
317
- get: function () {
318
- return this._element;
319
- },
320
- enumerable: false,
321
- configurable: true
322
- });
323
- Object.defineProperty(AutoCompleteWithoutContext.prototype, "value", {
324
- /**
325
- * The value of the AutoComplete.
326
- */
327
- get: function () {
328
- if (this._valueDuringOnChange !== undefined) {
329
- return this._valueDuringOnChange;
330
- }
331
- else if (this.props.value !== undefined) {
332
- return this.props.value;
333
- }
334
- else if (this.state.value !== undefined) {
335
- return this.state.value;
336
- }
337
- else if (this.props.defaultValue !== undefined) {
338
- return this.props.defaultValue;
339
- }
340
- return '';
341
- },
342
- enumerable: false,
343
- configurable: true
344
- });
345
- Object.defineProperty(AutoCompleteWithoutContext.prototype, "name", {
346
- /**
347
- * Gets the `name` property of the AutoComplete.
348
- */
349
- get: function () {
350
- return this.props.name;
351
- },
352
- enumerable: false,
353
- configurable: true
354
- });
355
- Object.defineProperty(AutoCompleteWithoutContext.prototype, "validity", {
356
- /**
357
- * Represents the validity state into which the AutoComplete is set.
358
- */
359
- get: function () {
360
- // The AutoComplete component is in a invalid state
361
- // only if it's required and the value is null!
362
- var customError = this.props.validationMessage !== undefined;
363
- var isValid = (!this.required || this.value !== '');
364
- var valid = this.props.valid !== undefined ? this.props.valid : isValid;
365
- return {
366
- customError: customError,
367
- valid: valid,
368
- valueMissing: this.value === null
369
- };
370
- },
371
- enumerable: false,
372
- configurable: true
373
- });
374
- Object.defineProperty(AutoCompleteWithoutContext.prototype, "validityStyles", {
375
- /**
376
- * @hidden
377
- */
378
- get: function () {
379
- return this.props.validityStyles !== undefined
380
- ? this.props.validityStyles
381
- : AutoCompleteWithoutContext.defaultProps.validityStyles;
382
- },
383
- enumerable: false,
384
- configurable: true
385
- });
386
- Object.defineProperty(AutoCompleteWithoutContext.prototype, "required", {
387
- /**
388
- * @hidden
389
- */
390
- get: function () {
391
- return this.props.required !== undefined
392
- ? this.props.required
393
- : AutoCompleteWithoutContext.defaultProps.required;
394
- },
395
- enumerable: false,
396
- configurable: true
397
- });
398
- /**
399
- * @hidden
400
- */
401
- AutoCompleteWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {
402
- var _a;
403
- var _b = this.props, _c = _b.groupField, groupField = _c === void 0 ? '' : _c, _d = _b.data, data = _d === void 0 ? [] : _d;
404
- var _e = prevProps.data, prevData = _e === void 0 ? [] : _e;
405
- var focusedIndex = this.focusedIndex();
406
- var focusedItem = data[focusedIndex];
407
- var dataChanged = prevData !== data;
408
- var focusedItemChanged = focusedItem !== undefined && prevState.focusedItem !== focusedItem;
409
- var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
410
- var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;
411
- var opening = !prevOpened && opened;
412
- if (groupField === '') {
413
- if ((opened && (focusedItemChanged || dataChanged)) || opening) {
414
- this.base.scrollToItem(focusedIndex);
415
- }
416
- }
417
- else if (!this._isScrolling) {
418
- var focusedItemIndex = (_a = this.base.getGroupedDataModernMode(data, groupField)) === null || _a === void 0 ? void 0 : _a.indexOf(focusedItem);
419
- if (opening) {
420
- // Resets the sticky header group value for scenarios with open/close of component's popup
421
- if (data && data.length !== 0) {
422
- this.base.resetGroupStickyHeader(data[0][groupField], this);
423
- }
424
- this.base.scrollToItem(focusedItemIndex);
425
- }
426
- ;
427
- if (opened && prevOpened && focusedItemChanged) {
428
- this.base.scrollToItem(focusedItemIndex);
429
- }
430
- }
431
- this.setValidity();
432
- };
433
- /**
434
- * @hidden
435
- */
436
- AutoCompleteWithoutContext.prototype.componentDidMount = function () {
437
- this.base.didMount();
438
- this.setValidity();
439
- };
440
- /**
441
- * @hidden
442
- */
443
- AutoCompleteWithoutContext.prototype.render = function () {
444
- var _a;
445
- var _this = this;
446
- var _b = this.props, dir = _b.dir, disabled = _b.disabled, label = _b.label, className = _b.className, style = _b.style, loading = _b.loading, suggest = _b.suggest, size = _b.size, rounded = _b.rounded, fillMode = _b.fillMode;
447
- var isValid = !this.validityStyles || this.validity.valid;
448
- var base = this.base;
449
- var value = this.value;
450
- var renderClearButton = this.props.clearButton !== false && !loading && !!value;
451
- var id = this.props.id || this._inputId;
452
- if (typeof suggest === 'string') {
453
- this._suggested = suggest;
454
- }
455
- var autoComplete = (React.createElement("span", { className: classNames('k-autocomplete k-input', className, (_a = {},
456
- _a["k-input-".concat(sizeMap[size] || size)] = size,
457
- _a["k-rounded-".concat(roundedMap[rounded] || rounded)] = rounded,
458
- _a["k-input-".concat(fillMode)] = fillMode,
459
- _a['k-invalid'] = !isValid,
460
- _a['k-loading'] = loading,
461
- _a['k-required'] = this.required,
462
- _a['k-disabled'] = disabled,
463
- _a)), ref: function (element) {
464
- _this._element = element;
465
- base.wrapper = element;
466
- }, style: !label
467
- ? style
468
- : __assign(__assign({}, style), { width: undefined }), dir: dir },
469
- this.renderSearchBar(value || '', id),
470
- loading && React.createElement(IconWrap, { className: "k-input-loading-icon", name: 'loading' }),
471
- renderClearButton && !loading && React.createElement(ClearButton, { onClick: this.clearButtonClick, key: "clearbutton" }),
472
- this.renderListContainer()));
473
- return label
474
- ? (React.createElement(FloatingLabel, { label: label, editorId: id, editorValue: value, editorValid: isValid, editorDisabled: disabled, style: { width: style ? style.width : undefined }, children: autoComplete }))
475
- : autoComplete;
476
- };
477
- /**
478
- * @hidden
479
- */
480
- AutoCompleteWithoutContext.prototype.onNavigate = function (state, keyCode, skipItems) {
481
- var _this = this;
482
- var typedText = this.value;
483
- var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, focusedItemIndex = _a.focusedItemIndex;
484
- var focusedIndex = this.state.focusedItem !== undefined ?
485
- data.findIndex(function (i) { return areSame(i, _this.state.focusedItem, textField); }) :
486
- (focusedItemIndex ? focusedItemIndex(data, typedText, textField) :
487
- data.indexOf(getFocusedItem(data, typedText, textField)));
488
- var newFocused = this.base.navigation.navigate({
489
- keyCode: keyCode,
490
- current: focusedIndex,
491
- max: data.length - 1,
492
- min: 0,
493
- skipItems: skipItems ? skipItems : undefined
494
- });
495
- if (newFocused !== undefined) {
496
- this.itemFocus(newFocused, state);
497
- }
498
- this.applyState(state);
499
- };
500
- /**
501
- * @hidden
502
- */
503
- AutoCompleteWithoutContext.prototype.applyInputValue = function (value, state, eventKey) {
504
- var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
505
- var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;
506
- var focusedIndex = this.focusedIndex();
507
- var focusedItem = data[focusedIndex];
508
- this._suggested = '';
509
- if (opened && eventKey === Keys.enter) {
510
- if (focusedItem && !focusedItem.disabled) {
511
- var newValue = getItemValue(data[this.focusedIndex(value)], textField);
512
- this.triggerOnChange(newValue, state);
513
- }
514
- }
515
- if (opened) {
516
- this.togglePopup(state);
517
- }
518
- this.applyState(state);
519
- };
520
- AutoCompleteWithoutContext.prototype.renderSearchBar = function (value, id) {
521
- var _this = this;
522
- var base = this.base;
523
- var _a = this.props, placeholder = _a.placeholder, tabIndex = _a.tabIndex, disabled = _a.disabled, readonly = _a.readonly;
524
- var focused = this.state.focused;
525
- var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
526
- return (React.createElement(SearchBar, { id: id, placeholder: placeholder, tabIndex: tabIndex, accessKey: this.props.accessKey, value: value, suggestedText: this._suggested, focused: focused, name: this.props.name, ref: function (searchbar) { return _this._input = searchbar && searchbar.input; }, onKeyDown: this.onInputKeyDown, onChange: this.onChangeHandler, onFocus: base.handleFocus, onBlur: this.handleBlur, disabled: disabled, readOnly: readonly, expanded: opened, owns: base.listBoxId, activedescendant: 'option-' + base.guid + '-' + this.focusedIndex(), role: "combobox", ariaLabelledBy: this.props.ariaLabelledBy, ariaDescribedBy: this.props.ariaDescribedBy, ariaRequired: this.required, render: this.props.valueRender }));
527
- };
528
- AutoCompleteWithoutContext.prototype.renderListContainer = function () {
529
- var _a;
530
- var base = this.base;
531
- var _b = this.props, dir = _b.dir, header = _b.header, footer = _b.footer, _c = _b.data, data = _c === void 0 ? [] : _c, size = _b.size, groupField = _b.groupField, list = _b.list, groupStickyHeaderItemRender = _b.groupStickyHeaderItemRender;
532
- var popupSettings = base.getPopupSettings();
533
- var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
534
- var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;
535
- var group = this.state.group;
536
- if (group === undefined && groupField !== undefined) {
537
- group = getItemValue(data[0], groupField);
538
- }
539
- return (React.createElement(ListContainer, { width: popupWidth, popupSettings: {
540
- animate: popupSettings.animate,
541
- anchor: this.element,
542
- show: opened,
543
- popupClass: classNames(popupSettings.popupClass, 'k-list-container', 'k-autocomplete-popup'),
544
- className: popupSettings.className,
545
- appendTo: popupSettings.appendTo
546
- }, dir: dir !== undefined ? dir : this.base.dirCalculated, itemsCount: [data.length] },
547
- header && React.createElement("div", { className: "k-list-header" }, header),
548
- React.createElement("div", { className: classNames('k-list', (_a = {},
549
- _a["k-list-".concat(sizeMap[size] || size)] = size,
550
- _a)) },
551
- !list && group && data.length !== 0 && React.createElement(GroupStickyHeader, { group: group, groupMode: 'modern', render: groupStickyHeaderItemRender }),
552
- this.renderList()),
553
- footer && React.createElement("div", { className: "k-list-footer" }, footer)));
554
- };
555
- AutoCompleteWithoutContext.prototype.renderList = function () {
556
- var base = this.base;
557
- var popupSettings = base.getPopupSettings();
558
- var _a = this.props, textField = _a.textField, _b = _a.data, data = _b === void 0 ? [] : _b, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender, groupHeaderItemRender = _a.groupHeaderItemRender;
559
- var value = this.value;
560
- var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
561
- return (React.createElement(List, { id: base.listBoxId, show: opened, data: data.slice(), focusedIndex: this.focusedIndex(), value: value, textField: textField, valueField: textField, highlightSelected: false, optionsGuid: base.guid, groupField: this.props.groupField, groupMode: 'modern', listRef: function (list) { return base.list = list; }, wrapperStyle: { maxHeight: popupSettings.height }, wrapperCssClass: "k-list-content", onClick: this.handleItemClick, itemRender: itemRender, groupHeaderItemRender: groupHeaderItemRender, noDataRender: listNoDataRender, onMouseDown: function (e) { return e.preventDefault(); }, onScroll: this.onScroll }));
562
- };
563
- AutoCompleteWithoutContext.prototype.triggerOnChange = function (newValue, state, eventArgs) {
564
- if (this.value === newValue && !eventArgs) {
565
- return;
566
- }
567
- state.data.value = newValue;
568
- this._valueDuringOnChange = newValue;
569
- state.events.push(__assign({ type: 'onChange' }, (eventArgs || {})));
570
- };
571
- AutoCompleteWithoutContext.prototype.applyState = function (state) {
572
- this.base.applyState(state);
573
- this._valueDuringOnChange = undefined;
574
- };
575
- AutoCompleteWithoutContext.prototype.suggestValue = function (value) {
576
- this._suggested = '';
577
- if (value) {
578
- var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;
579
- var suggestedItem = data[itemIndexStartsWith(data, value, textField)];
580
- if (suggestedItem) {
581
- var suggestedText = getItemValue(suggestedItem, textField);
582
- if (value.toLowerCase() !== suggestedText.toLowerCase()) {
583
- this._suggested = suggestedText.substring(value.length);
584
- }
585
- }
586
- }
587
- };
588
- AutoCompleteWithoutContext.prototype.focusedIndex = function (value) {
589
- var _this = this;
590
- var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, focusedItemIndex = _a.focusedItemIndex, skipDisabledItems = _a.skipDisabledItems;
591
- var inputValue = value !== undefined ? value : this.value;
592
- if (this.state.focusedItem !== undefined) {
593
- return data.findIndex(function (i) { return areSame(i, _this.state.focusedItem, textField); });
594
- }
595
- else if (focusedItemIndex) {
596
- return focusedItemIndex(data, inputValue, textField);
597
- }
598
- else {
599
- var indexOfFocusedItem = data.indexOf(getFocusedItem(data, inputValue, textField));
600
- if (skipDisabledItems && textField && indexOfFocusedItem === -1) {
601
- return data.findIndex(function (i) { return !i.disabled && i[textField]; });
602
- }
603
- return Math.max(0, indexOfFocusedItem);
604
- }
605
- };
606
- AutoCompleteWithoutContext.displayName = 'AutoComplete';
607
- /**
608
- * @hidden
609
- */
610
- AutoCompleteWithoutContext.propTypes = __assign(__assign({}, DropDownBase.basicPropTypes), { size: PropTypes.oneOf([null, 'small', 'medium', 'large']), rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']), fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline']), groupField: PropTypes.string, suggest: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), placeholder: PropTypes.string, value: PropTypes.string, defaultValue: PropTypes.string, validationMessage: PropTypes.string, required: PropTypes.bool, readonly: PropTypes.bool, clearButton: PropTypes.bool, valueRender: PropTypes.func, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, list: PropTypes.any, skipDisabledItems: PropTypes.bool });
611
- /**
612
- * @hidden
613
- */
614
- AutoCompleteWithoutContext.defaultProps = __assign(__assign({}, DropDownBase.defaultProps), { size: 'medium', rounded: 'medium', fillMode: 'solid', skipDisabledItems: true });
615
- return AutoCompleteWithoutContext;
616
- }(React.Component));
617
- export { AutoCompleteWithoutContext };
618
- /**
619
- * Represents the PropsContext of the `AutoComplete` component.
620
- * Used for global configuration of all `AutoComplete` instances.
621
- *
622
- * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.
623
- */
624
- export var AutoCompletePropsContext = createPropsContext();
625
- /* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */
626
- /**
627
- * Represents the [KendoReact AutoComplete component]({% slug overview_autocomplete %}).
628
- *
629
- * Accepts properties of type [AutoCompleteProps]({% slug api_dropdowns_autocompleteprops %}).
630
- * Obtaining the `ref` returns an object of type [AutoCompleteHandle]({% slug api_dropdowns_autocompletehandle %}).
631
- *
632
- * @example
633
- * ```jsx
634
- * class App extends React.Component {
635
- * autocomplete = null;
636
- * render() {
637
- * return (
638
- * <div>
639
- * <AutoComplete
640
- * data={[ "Albania", "Andorra", "Austria", "Belarus" ]}
641
- * ref={component => this.autocomplete = component}
642
- * />
643
- * <button onClick={() => alert(this.autocomplete.value)}>alert value</button>
644
- * </div>
645
- * );
646
- * }
647
- * }
648
- * ReactDOM.render(<App />, document.querySelector('my-app'));
649
- * ```
650
- */
651
- export var AutoComplete = withPropsContext(AutoCompletePropsContext, AutoCompleteWithoutContext);
652
- AutoComplete.displayName = 'KendoReactAutoComplete';