@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,887 +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 { classNames, Keys, getTabIndex, createPropsContext, withPropsContext, kendoThemeMaps, IconWrap, svgIconPropType, guid } from '@progress/kendo-react-common';
30
- import { FloatingLabel } from '@progress/kendo-react-labels';
31
- import { caretAltDownIcon, xIcon } from '@progress/kendo-svg-icons';
32
- import ListContainer from '../common/ListContainer';
33
- import ListFilter from '../common/ListFilter';
34
- import GroupStickyHeader from '../common/GroupStickyHeader';
35
- import ListDefaultItem from '../common/ListDefaultItem';
36
- import List from '../common/List';
37
- import DropDownBase from '../common/DropDownBase';
38
- import { isPresent, getItemValue, sameCharsOnly, shuffleData, matchText, areSame, itemIndexStartsWith } from '../common/utils';
39
- import { validatePackage, canUseDOM } from '@progress/kendo-react-common';
40
- import { packageMetadata } from '../package-metadata';
41
- import { Button } from '@progress/kendo-react-buttons';
42
- import { provideLocalizationService } from '@progress/kendo-react-intl';
43
- import { dropDownListArrowBtnAriaLabel, messages } from '../messages';
44
- import { MOBILE_SMALL_DEVISE, MOBILE_MEDIUM_DEVISE } from '../common/constants';
45
- import { ActionSheet, ActionSheetContent, ActionSheetHeader } from '@progress/kendo-react-layout';
46
- var VALIDATION_MESSAGE = 'Please select a value from the list!';
47
- var sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;
48
- /**
49
- * @hidden
50
- */
51
- var DropDownListWithoutContext = /** @class */ (function (_super) {
52
- __extends(DropDownListWithoutContext, _super);
53
- function DropDownListWithoutContext(props) {
54
- var _this = _super.call(this, props) || this;
55
- /**
56
- * @hidden
57
- */
58
- _this.state = {};
59
- _this._element = null;
60
- _this.base = new DropDownBase(_this);
61
- _this.searchState = { word: '', last: '' };
62
- _this._select = null;
63
- _this._skipFocusEvent = false;
64
- _this._filterInput = null;
65
- _this._navigated = false;
66
- _this._lastKeypressIsFilter = false;
67
- _this._inputId = guid();
68
- _this.itemHeight = 0;
69
- /**
70
- * @hidden
71
- */
72
- _this.focus = function () {
73
- if (_this.base.wrapper) {
74
- _this.base.wrapper.focus();
75
- }
76
- };
77
- /**
78
- * @hidden
79
- */
80
- _this.handleItemSelect = function (index, state) {
81
- var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual, dataItemKey = _a.dataItemKey, defaultItem = _a.defaultItem;
82
- var skip = virtual ? virtual.skip : 0;
83
- var item = (index === -1 && defaultItem !== undefined) ?
84
- defaultItem : data[index - skip];
85
- var newSelected = !areSame(item, _this.value, dataItemKey);
86
- _this.triggerOnChange(item, state);
87
- if (newSelected) {
88
- _this.base.triggerPageChangeCornerItems(item, state);
89
- }
90
- };
91
- _this.componentRef = function (element) {
92
- _this._element = element;
93
- _this.base.wrapper = element;
94
- };
95
- _this.dummySelect = function (value) {
96
- /* Dummy component to support forms */
97
- return (React.createElement("select", { name: _this.props.name, ref: function (el) { _this._select = el; }, tabIndex: -1, "aria-hidden": true, title: _this.props.label, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' } },
98
- React.createElement("option", { value: _this.props.valueMap ? _this.props.valueMap.call(undefined, value) : value })));
99
- };
100
- _this.renderListContainer = function () {
101
- var _a;
102
- var _b = _this.props, header = _b.header, footer = _b.footer, dir = _b.dir, _c = _b.data, data = _c === void 0 ? [] : _c, size = _b.size, groupField = _b.groupField, groupStickyHeaderItemRender = _b.groupStickyHeaderItemRender, list = _b.list;
103
- var base = _this.base;
104
- var popupSettings = base.getPopupSettings();
105
- var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;
106
- var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;
107
- var listContainerProps = {
108
- dir: dir !== undefined ? dir : base.dirCalculated,
109
- width: popupWidth,
110
- popupSettings: {
111
- popupClass: classNames(popupSettings.popupClass, 'k-list-container', 'k-dropdownlist-popup'),
112
- className: popupSettings.className,
113
- animate: popupSettings.animate,
114
- anchor: _this.element,
115
- show: opened,
116
- onOpen: _this.onPopupOpened,
117
- onClose: _this.onPopupClosed,
118
- appendTo: popupSettings.appendTo
119
- },
120
- itemsCount: [data.length]
121
- };
122
- var group = _this.state.group;
123
- if (group === undefined && groupField !== undefined) {
124
- group = getItemValue(data[0], groupField);
125
- }
126
- return (React.createElement(ListContainer, __assign({}, listContainerProps),
127
- _this.renderListFilter(),
128
- header && React.createElement("div", { className: "k-list-header" }, header),
129
- React.createElement("div", { className: classNames('k-list', (_a = {}, _a["k-list-".concat(sizeMap[size] || size)] = size, _a['k-virtual-list'] = _this.base.vs.enabled, _a)) },
130
- _this.renderDefaultItem(),
131
- !list && group && data.length !== 0 && React.createElement(GroupStickyHeader, { group: group, groupMode: 'modern', render: groupStickyHeaderItemRender }),
132
- _this.renderList()),
133
- footer && React.createElement("div", { className: "k-list-footer" }, footer)));
134
- };
135
- _this.renderList = function () {
136
- 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, groupHeaderItemRender = _a.groupHeaderItemRender, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender;
137
- var vs = _this.base.vs;
138
- var skip = virtual.skip;
139
- var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;
140
- var popupSettings = _this.base.getPopupSettings();
141
- var translate = "translateY(".concat(vs.translate, "px)");
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() }));
143
- };
144
- _this.onScroll = function (event) {
145
- var _a = _this.base, vs = _a.vs, list = _a.list;
146
- vs.scrollHandler(event);
147
- var groupField = _this.props.groupField;
148
- var _b = _this.props.data, data = _b === void 0 ? [] : _b;
149
- if (!groupField || !data.length) {
150
- return;
151
- }
152
- if (groupField) {
153
- var itemHeight = _this.itemHeight =
154
- _this.itemHeight || (vs.enabled ? vs.itemHeight : (list ? list.children[0].offsetHeight : 0));
155
- var target = event.target;
156
- var scrollTop = target.scrollTop - (vs.skip * itemHeight);
157
- data = _this.base.getGroupedDataModernMode(data, groupField);
158
- var group = data[0][groupField];
159
- for (var i = 1; i < data.length; i++) {
160
- if (itemHeight * i > scrollTop) {
161
- break;
162
- }
163
- if (data[i] && data[i][groupField]) {
164
- group = data[i][groupField];
165
- }
166
- }
167
- if (group !== _this.state.group) {
168
- _this.setState({
169
- group: group
170
- });
171
- }
172
- }
173
- };
174
- _this.renderListFilter = function () {
175
- var filterText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;
176
- return _this.props.filterable && (React.createElement(ListFilter, { value: filterText, ref: function (filter) { return _this._filterInput = filter && filter.element; }, onChange: _this.handleListFilterChange, onKeyDown: _this.handleKeyDown, size: _this.props.size, rounded: _this.props.rounded, fillMode: _this.props.fillMode }));
177
- };
178
- _this.renderDefaultItem = function () {
179
- var _a = _this.props, textField = _a.textField, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey;
180
- return defaultItem !== undefined && (React.createElement(ListDefaultItem, { defaultItem: defaultItem, textField: textField, selected: areSame(_this.value, defaultItem, dataItemKey), key: "defaultitemkey", onClick: _this.handleDefaultItemClick }));
181
- };
182
- _this.search = function (event) {
183
- clearTimeout(_this._typingTimeout);
184
- if (!_this.props.filterable) {
185
- _this._typingTimeout = window.setTimeout(function () { return _this.searchState.word = ''; }, _this.props.delay);
186
- _this.selectNext(event);
187
- }
188
- };
189
- _this.selectNext = function (event) {
190
- var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;
191
- var mappedData = data.map(function (item, idx) {
192
- return { item: item, itemIndex: idx };
193
- });
194
- var word = _this.searchState.word;
195
- var last = _this.searchState.last;
196
- var isInLoop = sameCharsOnly(word, last);
197
- var dataLength = mappedData.length;
198
- var startIndex = Math.max(0, data.findIndex(function (i) { return areSame(i, _this.value, dataItemKey); }));
199
- var defaultItem;
200
- if (_this.props.defaultItem) {
201
- defaultItem = { item: _this.props.defaultItem, itemIndex: -1 };
202
- dataLength += 1;
203
- startIndex += 1;
204
- }
205
- startIndex += isInLoop ? 1 : 0;
206
- mappedData = shuffleData(mappedData, startIndex, defaultItem);
207
- var text, loopMatch, nextMatch, index = 0;
208
- var _c = _this.props, textField = _c.textField, ignoreCase = _c.ignoreCase;
209
- for (; index < dataLength; index++) {
210
- text = getItemValue(mappedData[index].item, textField);
211
- loopMatch = isInLoop && matchText(text, last, ignoreCase);
212
- nextMatch = matchText(text, word, ignoreCase);
213
- if (loopMatch || nextMatch) {
214
- index = mappedData[index].itemIndex;
215
- break;
216
- }
217
- }
218
- if (index !== dataLength) {
219
- var state = _this.base.initState();
220
- state.syntheticEvent = event;
221
- _this.handleItemSelect(index, state);
222
- _this.applyState(state);
223
- _this._valueDuringOnChange = undefined;
224
- }
225
- };
226
- _this.handleKeyDown = function (event) {
227
- // The following added here to prevent the propagation of the keyDown event when the filter prop is set to true
228
- if (event && event.target instanceof Element && event.target.nodeName === 'INPUT') {
229
- event.stopPropagation && event.stopPropagation();
230
- }
231
- 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, _f = _a.skipDisabledItems, skipDisabledItems = _f === void 0 ? true : _f;
232
- var value = _this.value;
233
- var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });
234
- var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;
235
- var keyCode = event.keyCode;
236
- var homeOrEndKeys = keyCode === Keys.home || keyCode === Keys.end;
237
- var upOrDownKeys = keyCode === Keys.up || keyCode === Keys.down;
238
- var shouldOpen = !opened && ((event.altKey && keyCode === Keys.down) || keyCode === Keys.enter || keyCode === Keys.space);
239
- var shouldClose = opened && ((event.altKey && keyCode === Keys.up) || keyCode === Keys.esc);
240
- var leftOrRightKeys = leftRightKeysNavigation && (keyCode === Keys.left || keyCode === Keys.right);
241
- var shouldNavigate = upOrDownKeys || (leftOrRightKeys && !filterable) || homeOrEndKeys;
242
- var state = _this.base.initState();
243
- state.syntheticEvent = event;
244
- if (disabled) {
245
- return;
246
- }
247
- else if (homeOrEndKeys && _this.base.vs.enabled) {
248
- if (keyCode === Keys.home) {
249
- if (virtual.skip !== 0) {
250
- _this.base.triggerOnPageChange(state, 0, virtual.pageSize);
251
- _this._navigated = true;
252
- }
253
- else {
254
- _this.triggerOnChange(data[0], state);
255
- }
256
- }
257
- else {
258
- if (virtual.skip < virtual.total - virtual.pageSize) {
259
- _this.base.triggerOnPageChange(state, virtual.total - virtual.pageSize, virtual.pageSize);
260
- _this._navigated = true;
261
- }
262
- else {
263
- _this.triggerOnChange(data[data.length - 1], state);
264
- }
265
- }
266
- }
267
- else if (opened && keyCode === Keys.pageUp) {
268
- _this.base.scrollPopupByPageSize(-1);
269
- }
270
- else if (opened && keyCode === Keys.pageDown) {
271
- _this.base.scrollPopupByPageSize(1);
272
- }
273
- else if (opened && keyCode === Keys.enter) {
274
- var focusedIndex = _this.getFocusedIndex();
275
- if (_this.haveFocusedItemAndDataNotEmpty(data, focusedIndex)) {
276
- _this.triggerOnChange(null, state);
277
- _this.applyState(state);
278
- }
279
- else {
280
- _this.handleItemSelect(focusedIndex, state);
281
- }
282
- _this.base.togglePopup(state);
283
- event.preventDefault();
284
- }
285
- else if (shouldOpen || shouldClose) {
286
- if (shouldClose) {
287
- _this.resetValueIfDisabledItem();
288
- }
289
- _this.base.togglePopup(state);
290
- event.preventDefault();
291
- }
292
- else if (shouldNavigate) {
293
- _this._lastKeypressIsFilter = false;
294
- if (groupField !== '' && textField) {
295
- if (!skipDisabledItems && opened) {
296
- _this.onNavigate(state, keyCode);
297
- }
298
- else {
299
- var newIndex = undefined;
300
- if (keyCode === Keys.down || keyCode === Keys.right) {
301
- var tempnewIndex_1 = data.slice(selectedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });
302
- newIndex = tempnewIndex_1 && data.findIndex(function (el) { return el[textField] === tempnewIndex_1[textField]; });
303
- }
304
- else if (keyCode === Keys.up || keyCode === Keys.left) {
305
- var dataToSearch = void 0;
306
- if (selectedIndex === 0 && defaultItem) {
307
- newIndex = -1;
308
- }
309
- else if (selectedIndex === -1) {
310
- dataToSearch = data;
311
- newIndex = data.findIndex(function (i) { return !i.disabled && i[textField]; });
312
- }
313
- else {
314
- dataToSearch = data.slice(0, selectedIndex);
315
- var tempnewIndex_2 = dataToSearch.pop();
316
- while (tempnewIndex_2 && tempnewIndex_2.disabled) {
317
- tempnewIndex_2 = dataToSearch.pop();
318
- }
319
- newIndex = tempnewIndex_2 && data.findIndex(function (el) { return el[textField] === tempnewIndex_2[textField]; });
320
- }
321
- }
322
- if (newIndex !== undefined) {
323
- var skipItems = newIndex - selectedIndex;
324
- _this.onNavigate(state, keyCode, skipItems);
325
- }
326
- else if (newIndex === undefined && data.findIndex(function (el) { return el[textField] === value[textField]; }) === data.length - 1) {
327
- _this.onNavigate(state, keyCode);
328
- }
329
- }
330
- }
331
- else if (!skipDisabledItems && opened || homeOrEndKeys) {
332
- _this.onNavigate(state, keyCode);
333
- }
334
- else if (textField) {
335
- var newIndex = undefined;
336
- if (keyCode === Keys.down || keyCode === Keys.right) {
337
- var tempnewIndex_3 = data.slice(selectedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });
338
- newIndex = tempnewIndex_3 && data.findIndex(function (el) { return el[textField] === tempnewIndex_3[textField]; });
339
- }
340
- else if (keyCode === Keys.up || keyCode === Keys.left) {
341
- var dataTest = void 0;
342
- if (selectedIndex === 0 && defaultItem) {
343
- newIndex = -1;
344
- }
345
- else if (selectedIndex === -1) {
346
- dataTest = data;
347
- newIndex = data.find(function (i) { return !i.disabled && i[textField]; });
348
- }
349
- else {
350
- dataTest = data.slice(0, selectedIndex);
351
- var tempnewIndex_4 = dataTest.pop();
352
- while (tempnewIndex_4 && tempnewIndex_4.disabled) {
353
- tempnewIndex_4 = dataTest.pop();
354
- }
355
- newIndex = tempnewIndex_4 && data.findIndex(function (el) { return el[textField] === tempnewIndex_4[textField]; });
356
- }
357
- }
358
- if (newIndex !== undefined) {
359
- var skipItems = newIndex - selectedIndex;
360
- _this.onNavigate(state, keyCode, skipItems);
361
- }
362
- else if (newIndex === undefined && data.findIndex(function (el) { return el[textField] === value[textField]; }) === data.length - 1) {
363
- _this.onNavigate(state, keyCode);
364
- }
365
- }
366
- else {
367
- _this.onNavigate(state, keyCode);
368
- }
369
- event.preventDefault();
370
- }
371
- _this.applyState(state);
372
- };
373
- _this.handleItemClick = function (index, event) {
374
- _this.base.handleItemClick(index, event);
375
- _this._valueDuringOnChange = undefined;
376
- };
377
- _this.handleFocus = function (event) {
378
- if (_this._skipFocusEvent) {
379
- return;
380
- }
381
- _this.base.handleFocus(event);
382
- };
383
- _this.handleBlur = function (event) {
384
- if (_this._skipFocusEvent || !_this.state.focused) {
385
- return;
386
- }
387
- var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;
388
- var adaptive = _this.props.adaptive;
389
- var _a = _this.state.windowWidth, windowWidth = _a === void 0 ? 0 : _a;
390
- var renderAdaptive = windowWidth <= MOBILE_MEDIUM_DEVISE && adaptive;
391
- var state = _this.base.initState();
392
- state.syntheticEvent = event;
393
- state.data.focused = false;
394
- state.events.push({ type: 'onBlur' });
395
- if (opened) {
396
- _this.resetValueIfDisabledItem();
397
- }
398
- if (opened && !renderAdaptive) {
399
- _this.base.togglePopup(state);
400
- }
401
- _this.applyState(state);
402
- };
403
- _this.handleDefaultItemClick = function (event) {
404
- var state = _this.base.initState();
405
- state.syntheticEvent = event;
406
- _this.base.togglePopup(state);
407
- _this.triggerOnChange(_this.props.defaultItem, state);
408
- _this.applyState(state);
409
- };
410
- _this.handleWrapperClick = function (event) {
411
- if (event.isPropagationStopped()) {
412
- return;
413
- }
414
- var state = _this.base.initState();
415
- state.syntheticEvent = event;
416
- if (!_this.state.focused) {
417
- state.data.focused = true;
418
- }
419
- _this.resetValueIfDisabledItem();
420
- _this.base.togglePopup(state);
421
- _this.applyState(state);
422
- };
423
- _this.handleKeyPress = function (event) {
424
- if (_this.props.filterable || event.which === 0 || event.keyCode === Keys.enter) {
425
- return;
426
- }
427
- var character = String.fromCharCode(event.charCode || event.keyCode);
428
- if (_this.props.ignoreCase) {
429
- character = character.toLowerCase();
430
- }
431
- if (character === ' ') {
432
- event.preventDefault();
433
- }
434
- _this.searchState = {
435
- word: _this.searchState.word + character,
436
- last: _this.searchState.last + character
437
- };
438
- _this.search(event);
439
- };
440
- _this.handleListFilterChange = function (event) {
441
- var state = _this.base.initState();
442
- state.syntheticEvent = event.syntheticEvent;
443
- if (_this.props.filter === undefined) {
444
- state.data.text = event.target.value;
445
- }
446
- _this.base.filterChanged(event.target.value, state);
447
- _this._lastKeypressIsFilter = true;
448
- _this.applyState(state);
449
- _this.setState({ group: undefined });
450
- };
451
- _this.onPopupOpened = function () {
452
- if (_this._filterInput) {
453
- _this.focusElement(_this._filterInput);
454
- }
455
- if (_this.props.adaptive) {
456
- setTimeout(function () {
457
- if (_this._filterInput) {
458
- _this.focusElement(_this._filterInput);
459
- }
460
- }, 300);
461
- }
462
- };
463
- _this.onPopupClosed = function () {
464
- if (_this.state.focused) {
465
- window.setTimeout(function () {
466
- if (_this.state.focused && _this.base.wrapper) {
467
- _this.focusElement(_this.base.wrapper);
468
- }
469
- });
470
- }
471
- };
472
- _this.setValidity = function () {
473
- if (_this._select && _this._select.setCustomValidity) {
474
- _this._select.setCustomValidity(_this.validity.valid
475
- ? ''
476
- : _this.props.validationMessage || VALIDATION_MESSAGE);
477
- }
478
- };
479
- validatePackage(packageMetadata);
480
- return _this;
481
- }
482
- Object.defineProperty(DropDownListWithoutContext.prototype, "document", {
483
- get: function () {
484
- if (!canUseDOM) {
485
- return;
486
- }
487
- // useful only for user actions
488
- return (this.element && this.element.ownerDocument) || document;
489
- },
490
- enumerable: false,
491
- configurable: true
492
- });
493
- Object.defineProperty(DropDownListWithoutContext.prototype, "element", {
494
- /**
495
- * @hidden
496
- */
497
- get: function () {
498
- return this._element;
499
- },
500
- enumerable: false,
501
- configurable: true
502
- });
503
- Object.defineProperty(DropDownListWithoutContext.prototype, "value", {
504
- /**
505
- * The value of the DropDownList.
506
- */
507
- get: function () {
508
- var value;
509
- if (this._valueDuringOnChange !== undefined) {
510
- value = this._valueDuringOnChange;
511
- }
512
- else if (this.props.value !== undefined) {
513
- value = this.props.value;
514
- }
515
- else if (this.state.value !== undefined) {
516
- value = this.state.value;
517
- }
518
- else if (this.props.defaultValue !== undefined) {
519
- value = this.props.defaultValue;
520
- }
521
- if (!isPresent(value) && this.props.defaultItem !== undefined) {
522
- value = this.props.defaultItem;
523
- }
524
- return value;
525
- },
526
- enumerable: false,
527
- configurable: true
528
- });
529
- Object.defineProperty(DropDownListWithoutContext.prototype, "index", {
530
- /**
531
- * The index of the selected item.
532
- */
533
- get: function () {
534
- var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;
535
- var value = this.value;
536
- // TO DO: deprecate it!
537
- return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });
538
- },
539
- enumerable: false,
540
- configurable: true
541
- });
542
- Object.defineProperty(DropDownListWithoutContext.prototype, "name", {
543
- /**
544
- * Gets the `name` property of the DropDownList.
545
- */
546
- get: function () {
547
- return this.props.name;
548
- },
549
- enumerable: false,
550
- configurable: true
551
- });
552
- Object.defineProperty(DropDownListWithoutContext.prototype, "validity", {
553
- /**
554
- * Represents the validity state into which the DropDownList is set.
555
- */
556
- get: function () {
557
- var customError = this.props.validationMessage !== undefined;
558
- var isValid = (!this.required
559
- || (this.value !== null && this.value !== '' && this.value !== undefined));
560
- var valid = this.props.valid !== undefined ? this.props.valid : isValid;
561
- return {
562
- customError: customError,
563
- valid: valid,
564
- valueMissing: this.value === null
565
- };
566
- },
567
- enumerable: false,
568
- configurable: true
569
- });
570
- Object.defineProperty(DropDownListWithoutContext.prototype, "validityStyles", {
571
- get: function () {
572
- return this.props.validityStyles !== undefined
573
- ? this.props.validityStyles
574
- : DropDownListWithoutContext.defaultProps.validityStyles;
575
- },
576
- enumerable: false,
577
- configurable: true
578
- });
579
- Object.defineProperty(DropDownListWithoutContext.prototype, "required", {
580
- /**
581
- * @hidden
582
- */
583
- get: function () {
584
- return this.props.required !== undefined
585
- ? this.props.required
586
- : DropDownListWithoutContext.defaultProps.required;
587
- },
588
- enumerable: false,
589
- configurable: true
590
- });
591
- /**
592
- * @hidden
593
- */
594
- DropDownListWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {
595
- var _a;
596
- var _b = this.props, dataItemKey = _b.dataItemKey, virtual = _b.virtual, _c = _b.groupField, groupField = _c === void 0 ? '' : _c, textField = _b.textField;
597
- var _d = this.props.data, data = _d === void 0 ? [] : _d;
598
- var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;
599
- var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
600
- var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;
601
- var opening = !prevOpened && opened;
602
- var closing = prevOpened && !opened;
603
- if (!this.base.getPopupSettings().animate) {
604
- if (opening) {
605
- this.onPopupOpened();
606
- }
607
- else if (closing) {
608
- // this.onPopupClosed();
609
- }
610
- }
611
- if (virtual && virtual.total !== prevTotal) {
612
- this.base.vs.calcScrollElementHeight();
613
- this.base.vs.reset();
614
- }
615
- else {
616
- var selectedItem_1 = this.value;
617
- var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;
618
- var selectedItemIndex = data.findIndex(function (i) { return areSame(i, selectedItem_1, dataItemKey); });
619
- if (groupField !== '' && selectedItem_1 && textField) {
620
- selectedItemIndex = (_a = this.base.getGroupedDataModernMode(data, groupField)) === null || _a === void 0 ? void 0 : _a.map(function (el) { return el[textField]; }).indexOf(selectedItem_1[textField]);
621
- }
622
- var selectedItemChanged = !areSame(prevSelectedItem, selectedItem_1, dataItemKey);
623
- if (opening && virtual) {
624
- this.base.scrollToVirtualItem(virtual, selectedItemIndex);
625
- }
626
- else if (opening && !virtual) {
627
- this.onPopupOpened();
628
- // Resets the sticky header group value for scenarios with open/close of component's popup
629
- if (data && data.length !== 0) {
630
- this.base.resetGroupStickyHeader(data[0][groupField], this);
631
- }
632
- this.base.scrollToItem(selectedItemIndex);
633
- }
634
- else if (opened && prevOpened && selectedItem_1 && selectedItemChanged && !this._navigated) {
635
- this.base.scrollToItem(selectedItemIndex);
636
- }
637
- else if (opened && prevOpened && this._navigated) {
638
- if (this._navigated && virtual && virtual.skip === 0) {
639
- this.base.vs.reset();
640
- }
641
- else if (this._navigated && virtual && virtual.skip === virtual.total - virtual.pageSize) {
642
- this.base.vs.scrollToEnd();
643
- }
644
- }
645
- }
646
- this._navigated = false;
647
- this.setValidity();
648
- };
649
- /**
650
- * @hidden
651
- */
652
- DropDownListWithoutContext.prototype.componentDidMount = function () {
653
- var _a;
654
- this.observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(this.calculateMedia.bind(this));
655
- this.base.didMount();
656
- this.setValidity();
657
- if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {
658
- this.observerResize.observe(this.document.body);
659
- }
660
- };
661
- /** @hidden */
662
- DropDownListWithoutContext.prototype.componentWillUnmount = function () {
663
- var _a;
664
- if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {
665
- this.observerResize.disconnect();
666
- }
667
- };
668
- /**
669
- * @hidden
670
- */
671
- DropDownListWithoutContext.prototype.render = function () {
672
- var _a;
673
- var _this = this;
674
- var btnAriaLabel = provideLocalizationService(this).toLanguageString(dropDownListArrowBtnAriaLabel, messages[dropDownListArrowBtnAriaLabel]);
675
- var _b = this.props, style = _b.style, className = _b.className, label = _b.label, dir = _b.dir, virtual = _b.virtual, size = _b.size, rounded = _b.rounded, fillMode = _b.fillMode, adaptive = _b.adaptive;
676
- var _c = this.state.windowWidth, windowWidth = _c === void 0 ? 0 : _c;
677
- var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
678
- var value = this.value;
679
- var text = getItemValue(value, this.props.textField);
680
- var isValid = !this.validityStyles || this.validity.valid;
681
- var base = this.base;
682
- var vs = base.vs;
683
- var renderAdaptive = windowWidth <= MOBILE_MEDIUM_DEVISE && adaptive;
684
- vs.enabled = virtual !== undefined;
685
- if (virtual !== undefined) {
686
- base.vs.skip = virtual.skip;
687
- base.vs.total = virtual.total;
688
- base.vs.pageSize = virtual.pageSize;
689
- }
690
- var _d = this.props, dataItemKey = _d.dataItemKey, _e = _d.data, data = _e === void 0 ? [] : _e, disabled = _d.disabled, tabIndex = _d.tabIndex, loading = _d.loading, iconClassName = _d.iconClassName, valueRender = _d.valueRender;
691
- var focused = this.state.focused;
692
- var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });
693
- var valueDefaultRendering = (React.createElement("span", { id: this._inputId, className: "k-input-inner" },
694
- React.createElement("span", { className: "k-input-value-text" }, text)));
695
- var valueElement = valueRender !== undefined ?
696
- valueRender.call(undefined, valueDefaultRendering, value) : valueDefaultRendering;
697
- var dropdownlist = (React.createElement(React.Fragment, null,
698
- React.createElement("span", { ref: this.componentRef, className: classNames('k-dropdownlist k-picker', className, (_a = {},
699
- _a["k-picker-".concat(sizeMap[size] || size)] = size,
700
- _a["k-rounded-".concat(roundedMap[rounded] || rounded)] = rounded,
701
- _a["k-picker-".concat(fillMode)] = fillMode,
702
- _a['k-focus'] = focused,
703
- _a['k-disabled'] = disabled,
704
- _a['k-invalid'] = !isValid,
705
- _a['k-loading'] = loading,
706
- _a['k-required'] = this.required,
707
- _a)), style: !label
708
- ? style
709
- : __assign(__assign({}, style), { width: undefined }), dir: dir, onMouseDown: opened ? function (event) {
710
- if (event.target.nodeName !== 'INPUT') {
711
- _this.focusElement(_this.base.wrapper);
712
- event.preventDefault();
713
- }
714
- } : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, tabIndex: getTabIndex(tabIndex, disabled), accessKey: this.props.accessKey, onKeyDown: this.handleKeyDown, onKeyPress: this.handleKeyPress, onClick: disabled ? undefined : this.handleWrapperClick, role: 'combobox', "aria-required": this.required, "aria-disabled": disabled || undefined, "aria-haspopup": 'listbox', "aria-expanded": opened || false, "aria-owns": this.base.listBoxId, "aria-activedescendant": opened ? ('option-' + this.base.guid + '-' + (selectedIndex + (virtual ? virtual.skip : 0))) : undefined, "aria-label": this.props.ariaLabel || this.props.label, "aria-labelledby": this.props.ariaLabelledBy, "aria-describedby": this.props.ariaDescribedBy || this._inputId, id: this.props.id, title: this.props.title },
715
- valueElement,
716
- loading && React.createElement(IconWrap, { className: "k-input-loading-icon", name: 'loading' }),
717
- React.createElement(Button, { tabIndex: -1, type: "button", "aria-label": btnAriaLabel, "aria-hidden": true, size: size, fillMode: fillMode, iconClass: iconClassName, className: "k-input-button", rounded: null, themeColor: 'base', icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? caretAltDownIcon : this.props.svgIcon, onMouseDown: function (e) { return _this.state.focused && e.preventDefault(); } }),
718
- this.dummySelect(value),
719
- !renderAdaptive && this.renderListContainer()),
720
- renderAdaptive && this.renderAdaptiveListContainer()));
721
- return label ? (React.createElement(FloatingLabel, { label: label, editorValue: text, editorValid: isValid, editorDisabled: this.props.disabled, style: { width: style ? style.width : undefined }, children: dropdownlist })) : dropdownlist;
722
- };
723
- /**
724
- * @hidden
725
- */
726
- DropDownListWithoutContext.prototype.onNavigate = function (state, keyCode, skipItems) {
727
- 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;
728
- var vs = this.base.vs;
729
- var value = this.value;
730
- var index = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });
731
- var newIndex = this.base.navigation.navigate({
732
- current: virtual.skip + index,
733
- max: (vs.enabled ? virtual.total : data.length) - 1,
734
- min: defaultItem !== undefined ? -1 : 0,
735
- keyCode: keyCode,
736
- skipItems: skipItems ? skipItems : undefined
737
- });
738
- if (newIndex !== undefined) {
739
- this.handleItemSelect(newIndex, state);
740
- }
741
- this.applyState(state);
742
- };
743
- DropDownListWithoutContext.prototype.renderAdaptiveListContainer = function () {
744
- var _a;
745
- var _this = this;
746
- var _b = this.state.windowWidth, windowWidth = _b === void 0 ? 0 : _b;
747
- var _c = this.props, header = _c.header, footer = _c.footer, size = _c.size, adaptiveTitle = _c.adaptiveTitle, groupField = _c.groupField, groupStickyHeaderItemRender = _c.groupStickyHeaderItemRender, list = _c.list, _d = _c.data, data = _d === void 0 ? [] : _d;
748
- var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
749
- var actionSheetProps = {
750
- navigatable: false,
751
- navigatableElements: [],
752
- expand: opened,
753
- animation: true,
754
- onClose: function (event) { return _this.handleWrapperClick(event); },
755
- animationStyles: windowWidth <= MOBILE_SMALL_DEVISE ? { top: 0, width: '100%', height: '100%' } : undefined,
756
- className: windowWidth <= MOBILE_SMALL_DEVISE
757
- ? 'k-adaptive-actionsheet k-actionsheet-fullscreen'
758
- : 'k-adaptive-actionsheet k-actionsheet-bottom'
759
- };
760
- var group = this.state.group;
761
- if (group === undefined && groupField !== undefined) {
762
- group = getItemValue(data[0], groupField);
763
- }
764
- return (React.createElement(React.Fragment, null,
765
- React.createElement(ActionSheet, __assign({}, actionSheetProps),
766
- React.createElement(ActionSheetHeader, { className: 'k-text-center' },
767
- React.createElement("div", { className: "k-actionsheet-titlebar-group k-hbox" },
768
- React.createElement("div", { className: "k-actionsheet-title" },
769
- React.createElement("div", null, adaptiveTitle)),
770
- React.createElement("div", { className: "k-actionsheet-actions" },
771
- React.createElement(Button, { tabIndex: 0, "aria-label": "Cancel", "aria-disabled": "false", type: "button", fillMode: "flat", onClick: this.handleWrapperClick, icon: 'x', svgIcon: xIcon }))),
772
- React.createElement("div", { className: "k-actionsheet-titlebar-group k-actionsheet-filter" }, this.renderListFilter())),
773
- React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' },
774
- header && React.createElement("div", { className: "k-list-header" }, header),
775
- React.createElement("div", { className: classNames('k-list', (_a = {}, _a["k-list-".concat(sizeMap[size] || size)] = size, _a['k-virtual-list'] = this.base.vs.enabled, _a)) },
776
- this.renderDefaultItem(),
777
- !list && group && data.length !== 0 && React.createElement(GroupStickyHeader, { group: group, groupMode: 'modern', render: groupStickyHeaderItemRender }),
778
- this.renderList()),
779
- footer && React.createElement("div", { className: "k-list-footer" }, footer)))));
780
- };
781
- DropDownListWithoutContext.prototype.getFocusedIndex = function () {
782
- var value = this.value;
783
- 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;
784
- var text = this.props.filter ? this.props.filter : this.state.text;
785
- if (skipDisabledItems && textField && !text && !value) {
786
- return data.findIndex(function (i) { return !i.disabled && i[textField]; });
787
- }
788
- else if (isPresent(value) && text === undefined || filterable && text === '') {
789
- return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });
790
- }
791
- else if (text) {
792
- if (this._lastKeypressIsFilter) {
793
- return focusedItemIndex(data, text, textField);
794
- }
795
- return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });
796
- }
797
- else {
798
- return virtual.skip === 0 ? 0 : -1;
799
- }
800
- };
801
- DropDownListWithoutContext.prototype.focusElement = function (element) {
802
- var _this = this;
803
- this._skipFocusEvent = true;
804
- element.focus();
805
- window.setTimeout(function () { return _this._skipFocusEvent = false; }, 30);
806
- };
807
- DropDownListWithoutContext.prototype.triggerOnChange = function (item, state) {
808
- if (areSame(this.value, item, this.props.dataItemKey)) {
809
- return;
810
- }
811
- if (this.props.value === undefined) {
812
- state.data.value = item;
813
- }
814
- this._valueDuringOnChange = item;
815
- state.events.push({ type: 'onChange' });
816
- };
817
- DropDownListWithoutContext.prototype.applyState = function (state) {
818
- this.base.applyState(state);
819
- this._valueDuringOnChange = undefined;
820
- };
821
- DropDownListWithoutContext.prototype.calculateMedia = function (entries) {
822
- for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
823
- var entry = entries_1[_i];
824
- this.setState({ windowWidth: entry.target.clientWidth });
825
- }
826
- ;
827
- };
828
- ;
829
- DropDownListWithoutContext.prototype.resetValueIfDisabledItem = function () {
830
- var _a = this.props.data, data = _a === void 0 ? [] : _a;
831
- var state = this.base.initState();
832
- var focusedIndex = this.getFocusedIndex();
833
- if (this.haveFocusedItemAndDataNotEmpty(data, focusedIndex)) {
834
- this.triggerOnChange(null, state);
835
- this.applyState(state);
836
- }
837
- };
838
- DropDownListWithoutContext.prototype.haveFocusedItemAndDataNotEmpty = function (data, focusedIndex) {
839
- return focusedIndex !== undefined && focusedIndex !== -1 && data && data.length > 0 && data[focusedIndex].disabled;
840
- };
841
- DropDownListWithoutContext.displayName = 'DropDownList';
842
- /**
843
- * @hidden
844
- */
845
- 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);
846
- /**
847
- * @hidden
848
- */
849
- DropDownListWithoutContext.defaultProps = __assign(__assign({ delay: 500, tabIndex: 0, ignoreCase: true }, DropDownBase.defaultProps), { required: false, size: 'medium', rounded: 'medium', fillMode: 'solid', groupMode: 'modern' });
850
- return DropDownListWithoutContext;
851
- }(React.Component));
852
- export { DropDownListWithoutContext };
853
- /**
854
- * Represents the PropsContext of the `DropDownList` component.
855
- * Used for global configuration of all `DropDownList` instances.
856
- *
857
- * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.
858
- */
859
- export var DropDownListPropsContext = createPropsContext();
860
- /* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */
861
- /**
862
- * Represents the [KendoReact DropDownList component]({% slug overview_dropdownlist %}).
863
- *
864
- * Accepts properties of type [DropDownListProps]({% slug api_dropdowns_dropdownlistprops %}).
865
- * Obtaining the `ref` returns an object of type [DropDownListHandle]({% slug api_dropdowns_dropdownlisthandle %}).
866
- *
867
- * @example
868
- * ```jsx
869
- * class App extends React.Component {
870
- * dropdownlist = null;
871
- * render() {
872
- * return (
873
- * <div>
874
- * <DropDownList
875
- * data={[ "Albania", "Andorra", "Austria", "Belarus" ]}
876
- * ref={component => this.dropdownlist = component}
877
- * />
878
- * <button onClick={() => alert(this.dropdownlist.value)}>alert value</button>
879
- * </div>
880
- * );
881
- * }
882
- * }
883
- * ReactDOM.render(<App />, document.querySelector('my-app'));
884
- * ```
885
- */
886
- export var DropDownList = withPropsContext(DropDownListPropsContext, DropDownListWithoutContext);
887
- DropDownList.displayName = 'KendoReactDropDownList';