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

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 +8 -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 +4397 -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,2 +0,0 @@
1
- export {};
2
- // tslint:enable:max-line-length
@@ -1,540 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
- if (ar || !(i in from)) {
15
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
- ar[i] = from[i];
17
- }
18
- }
19
- return to.concat(ar || Array.prototype.slice.call(from));
20
- };
21
- var _this = this;
22
- import * as React from 'react';
23
- import * as PropTypes from 'prop-types';
24
- import { classNames, noop, useRtl, getTabIndex, Keys, mapTree, extendDataItem, guid, createPropsContext, kendoThemeMaps, usePropsContext, IconWrap, canUseDOM } from '@progress/kendo-react-common';
25
- import { Popup } from '@progress/kendo-react-popup';
26
- import { useLocalization } from '@progress/kendo-react-intl';
27
- import { TreeView } from '@progress/kendo-react-treeview';
28
- import { validatePackage } from '@progress/kendo-react-common';
29
- import { packageMetadata } from './../package-metadata';
30
- import { getItemValue, areSame, isPresent } from '../common/utils';
31
- import { useDropdownWidth } from './useDropdownWidth';
32
- import { ListNoData } from './ListNoData';
33
- import { messages, clear, nodata } from './../messages';
34
- import { FloatingLabel } from '@progress/kendo-react-labels';
35
- import ListFilter from '../common/ListFilter';
36
- import { Button } from '@progress/kendo-react-buttons';
37
- import { xIcon, caretAltDownIcon } from '@progress/kendo-svg-icons';
38
- import { AdaptiveMode } from '../common/AdaptiveMode';
39
- import { ActionSheetContent } from '@progress/kendo-react-layout';
40
- import { MOBILE_MEDIUM_DEVISE } from '../common/constants';
41
- var sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;
42
- var VALIDATION_MESSAGE = 'Please select a value from the list!';
43
- var ValueHolder = function (props) {
44
- return React.createElement("span", { className: "k-input-value-text" }, props.children);
45
- };
46
- var toLevel = function (hierarchicalIndex) {
47
- return hierarchicalIndex.split('_').map(function (i) { return parseInt(i, 10); });
48
- };
49
- var getValidity = function (parameters, hasValue) {
50
- var validationMessage = parameters.validationMessage, valid = parameters.valid, required = parameters.required;
51
- return ({
52
- customError: validationMessage !== undefined,
53
- valid: Boolean(valid !== undefined ? valid : (!required || hasValue)),
54
- valueMissing: !hasValue
55
- });
56
- };
57
- var defaultProps = {
58
- selectField: 'selected',
59
- subItemsField: 'items',
60
- popupSettings: {
61
- animate: true,
62
- width: '200px',
63
- height: '200px'
64
- },
65
- data: [],
66
- required: false,
67
- style: {},
68
- validityStyles: true,
69
- size: 'medium',
70
- rounded: 'medium',
71
- fillMode: 'solid'
72
- };
73
- /**
74
- * Represents the PropsContext of the `DropDownTree` component.
75
- * Used for global configuration of all `DropDownTree` instances.
76
- *
77
- * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.
78
- */
79
- export var DropDownTreePropsContext = createPropsContext();
80
- /**
81
- * Represents the DropDownTree component.
82
- *
83
- * Accepts properties of type [DropDownTreeProps]({% slug api_dropdowns_dropdowntreeprops %}).
84
- * Obtaining the `ref` returns an object of type [DropDownTreeHandle]({% slug api_dropdowns_dropdowntreehandle %}).
85
- *
86
- * @example
87
- * ```jsx
88
- * const selectField = "selected";
89
- * const expandField = "expanded";
90
- * const dataItemKey = "id";
91
- * const textField = "text";
92
- * const subItemsField = "items";
93
- * const fields = {
94
- * selectField,
95
- * expandField,
96
- * dataItemKey,
97
- * subItemsField,
98
- * };
99
- * const App = () => {
100
- * const [value, setValue] = React.useState(null);
101
- * const [expanded, setExpanded] = React.useState([data[0][dataItemKey]]);
102
- * const onChange = (event) => setValue(event.value);
103
- * const onExpandChange = React.useCallback(
104
- * (event) => setExpanded(expandedState(event.item, dataItemKey, expanded)),
105
- * [expanded]
106
- * );
107
- * const treeData = React.useMemo(
108
- * () =>
109
- * processTreeData(
110
- * data,
111
- * {
112
- * expanded,
113
- * value,
114
- * },
115
- * fields
116
- * ),
117
- * [expanded, value]
118
- * );
119
- *
120
- * return (
121
- * <DropDownTree
122
- * style={{
123
- * width: '300px',
124
- * }}
125
- * placeholder="Please select ..."
126
- * data={treeData}
127
- * value={value}
128
- * onChange={onChange}
129
- * textField={textField}
130
- * dataItemKey={dataItemKey}
131
- * selectField={selectField}
132
- * expandField={expandField}
133
- * onExpandChange={onExpandChange}
134
- * />
135
- * );
136
- * };
137
- * ReactDOM.render(<App />, document.querySelector('my-app'));
138
- * ```
139
- */
140
- export var DropDownTree = React.forwardRef(function (directProps, ref) {
141
- var _a;
142
- validatePackage(packageMetadata);
143
- var props = usePropsContext(DropDownTreePropsContext, directProps);
144
- var combinedProps = __assign(__assign({}, defaultProps), props);
145
- var calculatedId = React.useMemo(function () { return guid(); }, []);
146
- var id = combinedProps.id || calculatedId;
147
- var data = combinedProps.data, dataItemKey = combinedProps.dataItemKey, popupSettings = combinedProps.popupSettings, style = combinedProps.style, opened = combinedProps.opened, disabled = combinedProps.disabled, _b = combinedProps.onOpen, onOpen = _b === void 0 ? noop : _b, _c = combinedProps.onClose, onClose = _c === void 0 ? noop : _c, placeholder = combinedProps.placeholder, label = combinedProps.label, name = combinedProps.name, selectField = combinedProps.selectField, subItemsField = combinedProps.subItemsField, validationMessage = combinedProps.validationMessage, valid = combinedProps.valid, required = combinedProps.required, validityStyles = combinedProps.validityStyles;
148
- var tabIndex = getTabIndex(combinedProps.tabIndex, disabled);
149
- var target = React.useRef(null);
150
- var elementRef = React.useRef(null);
151
- var inputRef = React.useRef(null);
152
- var adaptiveInputRef = React.useRef(null);
153
- var selectRef = React.useRef(null);
154
- var treeViewRef = React.useRef(null);
155
- var skipFocusRef = React.useRef(false);
156
- var _d = React.useState(undefined), stateValue = _d[0], setStateValue = _d[1];
157
- var controlled = combinedProps.value !== undefined;
158
- var value = controlled ? combinedProps.value : (stateValue !== undefined ? stateValue : combinedProps.defaultValue);
159
- var hasValue = isPresent(value);
160
- var currentValueText = hasValue ? getItemValue(value, combinedProps.textField) : '';
161
- var validity = getValidity({ validationMessage: validationMessage, valid: valid, required: required }, hasValue);
162
- var focus = React.useCallback(function () { return elementRef.current && elementRef.current.focus(); }, []);
163
- React.useImperativeHandle(target, function () { return ({
164
- props: combinedProps,
165
- element: elementRef.current,
166
- focus: focus
167
- }); });
168
- React.useImperativeHandle(ref, function () { return target.current; });
169
- var dir = useRtl(elementRef, combinedProps.dir);
170
- var initialStyleWidth = popupSettings.width !== undefined ?
171
- popupSettings.width : (style.width !== undefined ? style.width : defaultProps.popupSettings.width);
172
- var popupWidth = useDropdownWidth(elementRef, initialStyleWidth);
173
- var popupStyles = __assign({ width: popupWidth }, (dir !== undefined ? { direction: dir } : {}));
174
- var _e = React.useState(false), open = _e[0], setOpen = _e[1];
175
- var isOpen = opened !== undefined ? opened : open;
176
- var _f = React.useState(false), focused = _f[0], setFocused = _f[1];
177
- var _g = React.useState(), windowWidth = _g[0], setWindowWidth = _g[1];
178
- var isAdaptive = !!(windowWidth && windowWidth <= MOBILE_MEDIUM_DEVISE && combinedProps.adaptive);
179
- var _h = React.useState(''), filter = _h[0], setFilter = _h[1];
180
- var setValidity = React.useCallback(function () {
181
- if (selectRef.current && selectRef.current.setCustomValidity) {
182
- selectRef.current.setCustomValidity(validity.valid
183
- ? ''
184
- : validationMessage === undefined ? VALIDATION_MESSAGE : validationMessage);
185
- }
186
- }, [validationMessage, validity]);
187
- React.useEffect(setValidity);
188
- React.useEffect(function () {
189
- var observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(calculateMedia.bind(_this));
190
- if ((document === null || document === void 0 ? void 0 : document.body) && observerResize) {
191
- observerResize.observe(document.body);
192
- }
193
- return function () {
194
- if ((document === null || document === void 0 ? void 0 : document.body) && observerResize) {
195
- observerResize.disconnect();
196
- }
197
- };
198
- }, []);
199
- var openPopup = React.useCallback(function (event) {
200
- if (!isOpen) {
201
- if (onOpen) {
202
- var openEvent = __assign({}, event);
203
- onOpen.call(undefined, openEvent);
204
- }
205
- if (opened === undefined) {
206
- setOpen(true);
207
- }
208
- }
209
- }, [isOpen, opened, onOpen]);
210
- var closePopup = React.useCallback(function (event) {
211
- if (isOpen) {
212
- if (onClose) {
213
- var closeEvent = __assign({}, event);
214
- onClose.call(undefined, closeEvent);
215
- }
216
- if (opened === undefined) {
217
- setOpen(false);
218
- if (isAdaptive) {
219
- setTimeout(function () {
220
- var _a;
221
- focusElement((_a = adaptiveInputRef.current) === null || _a === void 0 ? void 0 : _a.element);
222
- }, 300);
223
- }
224
- }
225
- }
226
- }, [isOpen, opened, onClose, isAdaptive]);
227
- var onWrapperClick = React.useCallback(function (event) {
228
- if (!event.isDefaultPrevented() && target.current) {
229
- setFocused(true);
230
- var ev = {
231
- syntheticEvent: event,
232
- nativeEvent: event.nativeEvent,
233
- target: target.current
234
- };
235
- (isOpen ? closePopup : openPopup)(ev);
236
- }
237
- }, [isOpen, opened, onOpen, onClose]);
238
- var switchFocus = React.useCallback(function (focusFn) {
239
- skipFocusRef.current = true;
240
- focusFn();
241
- window.setTimeout(function () { return skipFocusRef.current = false; }, 0);
242
- }, []);
243
- var onWrapperKeyDown = React.useCallback(function (event) {
244
- var _a, _b;
245
- var keyCode = event.keyCode, altKey = event.altKey;
246
- var treeview = treeViewRef.current && treeViewRef.current.element;
247
- if (!target.current || (event.isDefaultPrevented() && ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element) === event.target)) {
248
- return;
249
- }
250
- var ev = {
251
- syntheticEvent: event,
252
- nativeEvent: event.nativeEvent,
253
- target: target.current
254
- };
255
- if (isOpen) {
256
- if (keyCode === Keys.esc || (altKey && keyCode === Keys.up)) {
257
- event.preventDefault();
258
- closePopup(ev);
259
- }
260
- else if (treeview && treeview.querySelector('.k-focus') &&
261
- (keyCode === Keys.up || keyCode === Keys.down ||
262
- keyCode === Keys.left || keyCode === Keys.right ||
263
- keyCode === Keys.home || keyCode === Keys.end)) {
264
- if (keyCode === Keys.up && ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.element)) {
265
- var items = Array.from(treeview.querySelectorAll('.k-treeview-item'));
266
- var focusedItem = __spreadArray([], items, true).reverse().find(function (i) { return Boolean(i && i.querySelector('.k-focus')); });
267
- if (focusedItem && items.indexOf(focusedItem) === 0) {
268
- return switchFocus(function () { var _a; focusElement((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element); });
269
- }
270
- }
271
- switchFocus(noop);
272
- }
273
- else if (keyCode === Keys.down) {
274
- switchFocus(function () { var _a; focusElement(((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element) || treeview); });
275
- }
276
- }
277
- else if (altKey && keyCode === Keys.down) {
278
- event.preventDefault();
279
- openPopup(ev);
280
- }
281
- else if (!isOpen) {
282
- if (keyCode === Keys.esc) {
283
- onClear(event);
284
- }
285
- }
286
- }, [isOpen, opened, onOpen, onClose]);
287
- var onInputKeyDown = React.useCallback(function (event) {
288
- var keyCode = event.keyCode, altKey = event.altKey;
289
- if (altKey || (keyCode !== Keys.up && keyCode !== Keys.down)) {
290
- return;
291
- }
292
- event.preventDefault();
293
- switchFocus(keyCode === Keys.up ?
294
- function () { focusElement(elementRef.current); } :
295
- function () { focusElement(treeViewRef.current && treeViewRef.current.element); });
296
- }, []);
297
- var focusElement = React.useCallback(function (element) {
298
- if (element) {
299
- switchFocus(function () { return element.focus(); });
300
- }
301
- }, []);
302
- var onPopupOpened = React.useCallback(function () {
303
- var _a;
304
- if (!focused && isOpen && !opened) {
305
- closePopup({ target: target.current });
306
- }
307
- else {
308
- if (props.filterable) {
309
- focusElement((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element);
310
- }
311
- else {
312
- focusElement(treeViewRef.current && treeViewRef.current.element);
313
- }
314
- }
315
- }, [onClose, props.filterable, focused, opened, isOpen]);
316
- var onPopupClosed = React.useCallback(function () {
317
- if (focused) {
318
- // Move the focus from treeview to dropdown without triggering Focus or Blur events.
319
- focusElement(elementRef.current);
320
- }
321
- }, [focused]);
322
- var onFocus = React.useCallback(function (event) {
323
- if (!focused && !skipFocusRef.current) {
324
- setFocused(true);
325
- if (props.onFocus && target.current) {
326
- var focusEvent = {
327
- syntheticEvent: event,
328
- nativeEvent: event.nativeEvent,
329
- target: target.current
330
- };
331
- props.onFocus.call(undefined, focusEvent);
332
- }
333
- }
334
- }, [focused, props.onFocus]);
335
- var onBlur = React.useCallback(function (event) {
336
- if (focused && !skipFocusRef.current && target.current) {
337
- setFocused(false);
338
- var ev = {
339
- syntheticEvent: event,
340
- nativeEvent: event.nativeEvent,
341
- target: target.current
342
- };
343
- if (props.onBlur) {
344
- var focusEvent = __assign({}, ev);
345
- props.onBlur.call(undefined, focusEvent);
346
- }
347
- if (!isAdaptive) {
348
- closePopup(ev);
349
- }
350
- }
351
- }, [focused, props.onBlur, isOpen, opened, onClose]);
352
- var onWrapperMouseDown = React.useCallback(function () {
353
- if (focused) {
354
- // moving focus from treeview to dropdown triggers Focus and Blur events.
355
- switchFocus(noop);
356
- }
357
- if (isAdaptive) {
358
- setTimeout(function () {
359
- var _a;
360
- focusElement((_a = adaptiveInputRef.current) === null || _a === void 0 ? void 0 : _a.element);
361
- }, 300);
362
- }
363
- }, [focused, isAdaptive]);
364
- var changeValue = React.useCallback(function (event, newValue, hierarchicalIndex) {
365
- if (props.onChange) {
366
- var changeEvent = __assign({ value: newValue, level: hierarchicalIndex ? toLevel(hierarchicalIndex) : [] }, event);
367
- props.onChange.call(undefined, changeEvent);
368
- }
369
- if (!controlled) {
370
- setStateValue(newValue);
371
- }
372
- }, [props.onChange, controlled]);
373
- var onChange = React.useCallback(function (event) {
374
- if (areSame(event.item, value, dataItemKey) || !target.current) {
375
- return;
376
- }
377
- var item = event.item, itemHierarchicalIndex = event.itemHierarchicalIndex, nativeEvent = event.nativeEvent, syntheticEvent = event.syntheticEvent;
378
- var ev = {
379
- syntheticEvent: syntheticEvent,
380
- nativeEvent: nativeEvent,
381
- target: target.current
382
- };
383
- changeValue(ev, item, itemHierarchicalIndex);
384
- closePopup(ev);
385
- }, [controlled, value, props.onChange, dataItemKey, isOpen, opened, onClose]);
386
- var onClear = React.useCallback(function (event) {
387
- if (!target.current) {
388
- return;
389
- }
390
- var ev = {
391
- syntheticEvent: event,
392
- nativeEvent: event.nativeEvent,
393
- target: target.current
394
- };
395
- changeValue(ev, null);
396
- closePopup(ev);
397
- event.preventDefault();
398
- }, [controlled, props.onChange, isOpen, opened, onClose]);
399
- var onExpand = React.useCallback(function (event) {
400
- event.syntheticEvent.stopPropagation();
401
- if (props.onExpandChange && target.current) {
402
- var item = event.item, itemHierarchicalIndex = event.itemHierarchicalIndex, nativeEvent = event.nativeEvent, syntheticEvent = event.syntheticEvent;
403
- var expandEvent = {
404
- level: toLevel(itemHierarchicalIndex),
405
- item: item,
406
- nativeEvent: nativeEvent,
407
- syntheticEvent: syntheticEvent,
408
- target: target.current
409
- };
410
- props.onExpandChange.call(undefined, expandEvent);
411
- }
412
- }, [props.onExpandChange]);
413
- var onFilterChange = React.useCallback(function (event) {
414
- if (props.onFilterChange && target.current) {
415
- var filterDesc = { field: props.textField, operator: 'contains', value: event.target.value };
416
- var ev = {
417
- filter: filterDesc,
418
- syntheticEvent: event.syntheticEvent,
419
- nativeEvent: event.nativeEvent,
420
- target: target.current
421
- };
422
- props.onFilterChange.call(undefined, ev);
423
- if (props.filter === undefined) {
424
- setFilter(event.target.value);
425
- }
426
- }
427
- }, [props.onFilterChange, props.filter, props.textField]);
428
- var renderAdaptiveListContainer = function () {
429
- var mobileFilter = combinedProps.filterable ? (React.createElement(ListFilter, { value: combinedProps.filter === undefined ? filter : combinedProps.filter, ref: adaptiveInputRef, onChange: onFilterChange, onKeyDown: onInputKeyDown, size: size, rounded: rounded, fillMode: fillMode })) : null;
430
- var actionSheetProps = {
431
- adaptiveTitle: combinedProps.adaptiveTitle,
432
- expand: isOpen,
433
- onClose: function (event) { return closePopup(event); },
434
- windowWidth: windowWidth,
435
- mobileFilter: mobileFilter
436
- };
437
- return (React.createElement(AdaptiveMode, __assign({}, actionSheetProps),
438
- React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' },
439
- React.createElement("div", { className: 'k-list-container' },
440
- React.createElement("div", { className: 'k-list k-list-lg' }, data.length > 0 ? (React.createElement(TreeView, { ref: treeViewRef, tabIndex: tabIndex, data: treeViewData, focusIdField: dataItemKey, textField: combinedProps.textField, selectField: selectField, expandField: combinedProps.expandField, childrenField: subItemsField, expandIcons: true, onItemClick: onChange, onExpandChange: onExpand, size: size, item: combinedProps.item, dir: dir })) : (React.createElement(NoData, null, localization.toLanguageString(nodata, messages[nodata]))))))));
441
- };
442
- var calculateMedia = React.useCallback(function (entries) {
443
- for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
444
- var entry = entries_1[_i];
445
- setWindowWidth(entry.target.clientWidth);
446
- }
447
- ;
448
- }, []);
449
- var treeViewData = React.useMemo(function () {
450
- return (controlled || !hasValue) ? data :
451
- mapTree(data, subItemsField, function (item) {
452
- var _a;
453
- return extendDataItem(item, subItemsField, (_a = {}, _a[selectField] = areSame(item, value, dataItemKey), _a));
454
- });
455
- }, [data, value, controlled, hasValue, selectField, subItemsField]);
456
- var NoData = combinedProps.listNoData || ListNoData;
457
- var ValueComponent = combinedProps.valueHolder || ValueHolder;
458
- var localization = useLocalization();
459
- var isValid = !validityStyles || validity.valid;
460
- var size = combinedProps.size, rounded = combinedProps.rounded, fillMode = combinedProps.fillMode;
461
- var dropdowntree = (React.createElement(React.Fragment, null,
462
- React.createElement("span", { className: classNames('k-dropdowntree k-picker', combinedProps.className, (_a = {},
463
- _a["k-picker-".concat(sizeMap[size] || size)] = size,
464
- _a["k-rounded-".concat(roundedMap[rounded] || rounded)] = rounded,
465
- _a["k-picker-".concat(fillMode)] = fillMode,
466
- _a['k-focus'] = focused,
467
- _a['k-invalid'] = !isValid,
468
- _a['k-loading'] = combinedProps.loading,
469
- _a['k-required'] = required,
470
- _a['k-disabled'] = combinedProps.disabled,
471
- _a)), tabIndex: tabIndex, accessKey: combinedProps.accessKey, id: id, style: label ? __assign(__assign({}, style), { width: undefined }) : style, dir: dir, ref: elementRef, onKeyDown: disabled ? undefined : onWrapperKeyDown, onMouseDown: onWrapperMouseDown, onClick: disabled ? undefined : onWrapperClick, onFocus: onFocus, onBlur: onBlur, role: "combobox", "aria-haspopup": "tree", "aria-expanded": isOpen, "aria-disabled": disabled, "aria-label": label, "aria-labelledby": combinedProps.ariaLabelledBy, "aria-describedby": combinedProps.ariaDescribedBy, "aria-required": required },
472
- React.createElement("span", { className: "k-input-inner" },
473
- React.createElement(ValueComponent, { item: value }, currentValueText || placeholder)),
474
- combinedProps.loading && React.createElement(IconWrap, { className: "k-input-loading-icon", name: 'loading' }),
475
- hasValue && !disabled && (React.createElement("span", { onClick: onClear, className: "k-clear-value", title: localization.toLanguageString(clear, messages[clear]), role: "button", tabIndex: -1, onMouseDown: function (e) { return e.preventDefault(); } },
476
- React.createElement(IconWrap, { name: 'x', icon: xIcon }))),
477
- React.createElement(Button, { tabIndex: -1, type: "button", "aria-label": "select", className: "k-input-button", size: size, fillMode: fillMode, themeColor: "base", rounded: null, icon: "caret-alt-down", svgIcon: caretAltDownIcon }),
478
- React.createElement("select", { name: name, ref: selectRef, tabIndex: -1, "aria-hidden": true, title: label, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' } },
479
- React.createElement("option", { value: combinedProps.valueMap ? combinedProps.valueMap.call(undefined, value) : value })),
480
- !isAdaptive && React.createElement(Popup, { className: classNames(popupSettings.className, { 'k-rtl': dir === 'rtl' }), popupClass: classNames(popupSettings.popupClass, 'k-dropdowntree-popup'), style: popupStyles, animate: popupSettings.animate, anchor: elementRef.current, show: isOpen, onOpen: onPopupOpened, onClose: onPopupClosed, appendTo: popupSettings.appendTo },
481
- combinedProps.filterable && (React.createElement(ListFilter, { value: combinedProps.filter === undefined ? filter : combinedProps.filter, ref: inputRef, onChange: onFilterChange, onKeyDown: onInputKeyDown, size: size, rounded: rounded, fillMode: fillMode })),
482
- data.length > 0 ? (React.createElement(TreeView, { ref: treeViewRef, tabIndex: tabIndex, data: treeViewData, focusIdField: dataItemKey, textField: combinedProps.textField, selectField: selectField, expandField: combinedProps.expandField, childrenField: subItemsField, expandIcons: true, onItemClick: onChange, onExpandChange: onExpand, size: size, item: combinedProps.item, dir: dir })) : (React.createElement(NoData, null, localization.toLanguageString(nodata, messages[nodata]))))),
483
- isAdaptive && renderAdaptiveListContainer()));
484
- return label ? (React.createElement(FloatingLabel, { label: label, editorValue: currentValueText, editorPlaceholder: placeholder, editorValid: isValid, editorDisabled: disabled, editorId: id, style: { width: style ? style.width : undefined }, children: dropdowntree, dir: dir })) : dropdowntree;
485
- });
486
- var propTypes = {
487
- opened: PropTypes.bool,
488
- disabled: PropTypes.bool,
489
- dir: PropTypes.string,
490
- tabIndex: PropTypes.number,
491
- accessKey: PropTypes.string,
492
- data: PropTypes.array,
493
- value: PropTypes.any,
494
- valueMap: PropTypes.func,
495
- placeholder: PropTypes.string,
496
- dataItemKey: PropTypes.string.isRequired,
497
- textField: PropTypes.string.isRequired,
498
- selectField: PropTypes.string,
499
- expandField: PropTypes.string,
500
- subItemsField: PropTypes.string,
501
- className: PropTypes.string,
502
- style: PropTypes.object,
503
- label: PropTypes.string,
504
- validationMessage: PropTypes.string,
505
- validityStyles: PropTypes.bool,
506
- valid: PropTypes.bool,
507
- required: PropTypes.bool,
508
- name: PropTypes.string,
509
- id: PropTypes.string,
510
- ariaLabelledBy: PropTypes.string,
511
- ariaDescribedBy: PropTypes.string,
512
- filterable: PropTypes.bool,
513
- filter: PropTypes.string,
514
- loading: PropTypes.bool,
515
- popupSettings: PropTypes.shape({
516
- animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({
517
- openDuration: PropTypes.number,
518
- closeDuration: PropTypes.number
519
- })]),
520
- popupClass: PropTypes.string,
521
- className: PropTypes.string,
522
- appendTo: PropTypes.any,
523
- width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
524
- height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
525
- }),
526
- onOpen: PropTypes.func,
527
- onClose: PropTypes.func,
528
- onFocus: PropTypes.func,
529
- onBlur: PropTypes.func,
530
- onChange: PropTypes.func,
531
- onFilterChange: PropTypes.func,
532
- onExpandChange: PropTypes.func,
533
- item: PropTypes.func,
534
- valueHolder: PropTypes.func,
535
- listNoData: PropTypes.func,
536
- adaptiveTitle: PropTypes.string,
537
- adaptive: PropTypes.bool
538
- };
539
- DropDownTree.displayName = 'KendoReactDropDownTree';
540
- DropDownTree.propTypes = propTypes;