@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,622 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
- if (ar || !(i in from)) {
16
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
- ar[i] = from[i];
18
- }
19
- }
20
- return to.concat(ar || Array.prototype.slice.call(from));
21
- };
22
- var _this = this;
23
- Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.MultiSelectTree = exports.MultiSelectTreePropsContext = void 0;
25
- var React = require("react");
26
- var PropTypes = require("prop-types");
27
- var kendo_react_common_1 = require("@progress/kendo-react-common");
28
- var kendo_react_popup_1 = require("@progress/kendo-react-popup");
29
- var kendo_react_intl_1 = require("@progress/kendo-react-intl");
30
- var kendo_react_treeview_1 = require("@progress/kendo-react-treeview");
31
- var kendo_react_common_2 = require("@progress/kendo-react-common");
32
- var package_metadata_1 = require("./../package-metadata");
33
- var utils_1 = require("../common/utils");
34
- var useDropdownWidth_1 = require("./../DropDownTree/useDropdownWidth");
35
- var ListNoData_1 = require("./../DropDownTree/ListNoData");
36
- var messages_1 = require("./../messages");
37
- var kendo_react_labels_1 = require("@progress/kendo-react-labels");
38
- var TagList_1 = require("../MultiSelect/TagList");
39
- var ClearButton_1 = require("../common/ClearButton");
40
- var ListFilter_1 = require("../common/ListFilter");
41
- var AdaptiveMode_1 = require("../common/AdaptiveMode");
42
- var kendo_react_layout_1 = require("@progress/kendo-react-layout");
43
- var constants_1 = require("../common/constants");
44
- var VALIDATION_MESSAGE = 'Please select a value from the list!';
45
- var sizeMap = kendo_react_common_1.kendoThemeMaps.sizeMap, roundedMap = kendo_react_common_1.kendoThemeMaps.roundedMap;
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
- checkField: 'checkField',
59
- checkIndeterminateField: 'checkIndeterminateField',
60
- subItemsField: 'items',
61
- popupSettings: {
62
- animate: true,
63
- width: '200px',
64
- height: '200px'
65
- },
66
- size: 'medium',
67
- rounded: 'medium',
68
- fillMode: 'solid',
69
- required: false,
70
- validityStyles: true
71
- };
72
- /**
73
- * Represents the PropsContext of the `MultiSelectTree` component.
74
- * Used for global configuration of all `MultiSelectTree` instances.
75
- *
76
- * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.
77
- */
78
- exports.MultiSelectTreePropsContext = (0, kendo_react_common_1.createPropsContext)();
79
- /**
80
- * Represents the MultiSelectTree component.
81
- *
82
- * Accepts properties of type [MultiSelectTreeProps]({% slug api_dropdowns_multiselecttreeprops %}).
83
- * Obtaining the `ref` returns an object of type [MultiSelectTreeHandle]({% slug api_dropdowns_multiselecttreehandle %}).
84
- *
85
- * @example
86
- * ```jsx
87
- * const dataItemKey = 'id';
88
- * const checkField = 'checkField';
89
- * const checkIndeterminateField = 'checkIndeterminateField';
90
- * const subItemsField = 'items';
91
- * const expandField = 'expanded';
92
- * const textField = 'text';
93
- * const fields = {
94
- * dataItemKey,
95
- * checkField,
96
- * checkIndeterminateField,
97
- * expandField,
98
- * subItemsField,
99
- * };
100
- * const App = () => {
101
- * const [value, setValue] = React.useState([]);
102
- * const [expanded, setExpanded] = React.useState([data[0][dataItemKey]]);
103
- * const onChange = (event) =>
104
- * setValue(
105
- * getMultiSelectTreeValue(data, {
106
- * ...fields,
107
- * ...event,
108
- * value,
109
- * })
110
- * );
111
- * const onExpandChange = React.useCallback(
112
- * (event) => setExpanded(expandedState(event.item, dataItemKey, expanded)),
113
- * [expanded]
114
- * );
115
- * const treeData = React.useMemo(
116
- * () =>
117
- * processMultiSelectTreeData(data, {
118
- * expanded,
119
- * value,
120
- * ...fields,
121
- * }),
122
- * [expanded, value]
123
- * );
124
- *
125
- * return (
126
- * <div>
127
- * <div>Categories:</div>
128
- * <MultiSelectTree
129
- * style={{
130
- * width: '300px',
131
- * }}
132
- * data={treeData}
133
- * value={value}
134
- * onChange={onChange}
135
- * placeholder="Please select ..."
136
- * textField={textField}
137
- * dataItemKey={dataItemKey}
138
- * checkField={checkField}
139
- * checkIndeterminateField={checkIndeterminateField}
140
- * expandField={expandField}
141
- * subItemsField={subItemsField}
142
- * onExpandChange={onExpandChange}
143
- * />
144
- * </div>
145
- * );
146
- * };
147
- * ReactDOM.render(<App />, document.querySelector('my-app'));
148
- * ```
149
- */
150
- exports.MultiSelectTree = React.forwardRef(function (directProps, ref) {
151
- var _a, _b;
152
- var props = (0, kendo_react_common_1.usePropsContext)(exports.MultiSelectTreePropsContext, directProps);
153
- (0, kendo_react_common_2.validatePackage)(package_metadata_1.packageMetadata);
154
- var componentGuid = React.useMemo(function () { return (0, kendo_react_common_1.guid)(); }, []);
155
- var id = props.id || componentGuid;
156
- var _c = props.data, data = _c === void 0 ? [] : _c, dataItemKey = props.dataItemKey, _d = props.popupSettings, popupSettings = _d === void 0 ? {} : _d, _e = props.style, style = _e === void 0 ? {} : _e, opened = props.opened, disabled = props.disabled, _f = props.onOpen, onOpen = _f === void 0 ? kendo_react_common_1.noop : _f, _g = props.onClose, onClose = _g === void 0 ? kendo_react_common_1.noop : _g, placeholder = props.placeholder, label = props.label, name = props.name, _h = props.checkField, checkField = _h === void 0 ? defaultProps.checkField : _h, _j = props.checkIndeterminateField, checkIndeterminateField = _j === void 0 ? defaultProps.checkIndeterminateField : _j, _k = props.subItemsField, subItemsField = _k === void 0 ? defaultProps.subItemsField : _k, validationMessage = props.validationMessage, valid = props.valid, tags = props.tags, value = props.value, _l = props.required, required = _l === void 0 ? defaultProps.required : _l, _m = props.validityStyles, validityStyles = _m === void 0 ? defaultProps.validityStyles : _m;
157
- var tabIndex = (0, kendo_react_common_1.getTabIndex)(props.tabIndex, disabled);
158
- var targetRef = React.useRef(null);
159
- var elementRef = React.useRef(null);
160
- var inputRef = React.useRef(null);
161
- var adaptiveInputRef = React.useRef(null);
162
- var selectRef = React.useRef(null);
163
- var treeViewRef = React.useRef(null);
164
- var skipFocusRef = React.useRef(false);
165
- var tagsToRenderRef = React.useRef([]);
166
- var popupRef = React.useRef(null);
167
- var _o = React.useState(), focusedTagState = _o[0], setFocusedTagState = _o[1];
168
- var _p = React.useState(false), openState = _p[0], setOpenState = _p[1];
169
- var _q = React.useState(false), focusedState = _q[0], setFocusedState = _q[1];
170
- var _r = React.useState(), windowWidth = _r[0], setWindowWidth = _r[1];
171
- var _s = React.useState([]), currentTreeValue = _s[0], setCurrentTreeValue = _s[1];
172
- var _t = React.useState(''), filterState = _t[0], setFilterState = _t[1];
173
- var isAdaptive = !!(windowWidth && windowWidth <= constants_1.MOBILE_MEDIUM_DEVISE && props.adaptive);
174
- var isOpen = opened !== undefined ? opened : openState;
175
- var hasValue = Boolean(Array.isArray(value) && value.length);
176
- var validity = getValidity({ validationMessage: validationMessage, valid: valid, required: required }, hasValue);
177
- var dir = (0, kendo_react_common_1.useRtl)(elementRef, props.dir);
178
- var initialStyleWidth = popupSettings.width !== undefined ?
179
- popupSettings.width : (style.width !== undefined ? style.width : defaultProps.popupSettings.width);
180
- var popupWidth = (0, useDropdownWidth_1.useDropdownWidth)(elementRef, initialStyleWidth);
181
- var popupStyles = __assign({ width: popupWidth }, (dir !== undefined ? { direction: dir } : {}));
182
- var focus = React.useCallback(function () { return elementRef.current && elementRef.current.focus(); }, []);
183
- tagsToRenderRef.current = tags === undefined ?
184
- (value || []).map(function (item) { return ({ text: (0, utils_1.getItemValue)(item, props.textField), data: [item] }); }) : __spreadArray([], tags, true);
185
- React.useImperativeHandle(targetRef, function () { return ({
186
- props: props,
187
- element: elementRef.current,
188
- focus: focus
189
- }); });
190
- React.useImperativeHandle(ref, function () { return targetRef.current; });
191
- var setValidity = React.useCallback(function () {
192
- if (selectRef.current && selectRef.current.setCustomValidity) {
193
- selectRef.current.setCustomValidity(validity.valid
194
- ? ''
195
- : validationMessage === undefined ? VALIDATION_MESSAGE : validationMessage);
196
- }
197
- }, [validationMessage, validity]);
198
- React.useEffect(setValidity);
199
- React.useEffect(function () {
200
- var observerResize = kendo_react_common_1.canUseDOM && window.ResizeObserver && new window.ResizeObserver(calculateMedia.bind(_this));
201
- if ((document === null || document === void 0 ? void 0 : document.body) && observerResize) {
202
- observerResize.observe(document.body);
203
- }
204
- return function () {
205
- if (observerResize) {
206
- observerResize.disconnect();
207
- }
208
- };
209
- }, []);
210
- React.useEffect(function () {
211
- if (popupRef.current && isOpen) {
212
- popupRef.current.setPosition(popupRef.current._popup);
213
- }
214
- }, [value, isOpen]);
215
- var changeValue = React.useCallback(function (event, relatedItems, operation) {
216
- if (props.onChange) {
217
- var changeEvent = __assign({ items: relatedItems, operation: operation }, event);
218
- props.onChange.call(undefined, changeEvent);
219
- }
220
- }, [props.onChange]);
221
- var onChange = React.useCallback(function (event) {
222
- if ((0, utils_1.areSame)(event.item, value, dataItemKey) || !targetRef.current) {
223
- return;
224
- }
225
- var item = event.item, nativeEvent = event.nativeEvent, syntheticEvent = event.syntheticEvent;
226
- var ev = {
227
- syntheticEvent: syntheticEvent,
228
- nativeEvent: nativeEvent,
229
- target: targetRef.current
230
- };
231
- changeValue(ev, [item], 'toggle');
232
- }, [value, dataItemKey, changeValue]);
233
- var openPopup = React.useCallback(function (event) {
234
- if (!isOpen) {
235
- if (onOpen) {
236
- var openEvent = __assign({}, event);
237
- onOpen.call(undefined, openEvent);
238
- }
239
- if (opened === undefined) {
240
- setOpenState(true);
241
- setCurrentTreeValue(value || []);
242
- if (isAdaptive) {
243
- setTimeout(function () {
244
- var _a;
245
- focusElement((_a = adaptiveInputRef.current) === null || _a === void 0 ? void 0 : _a.element);
246
- }, 300);
247
- }
248
- }
249
- }
250
- }, [isOpen, opened, onOpen, isAdaptive, adaptiveInputRef]);
251
- var closePopup = React.useCallback(function (event) {
252
- if (isOpen) {
253
- if (onClose) {
254
- var closeEvent = __assign({}, event);
255
- onClose.call(undefined, closeEvent);
256
- }
257
- if (opened === undefined) {
258
- setOpenState(false);
259
- }
260
- }
261
- }, [isOpen, opened, onClose]);
262
- var switchFocus = React.useCallback(function (focusFn) {
263
- skipFocusRef.current = true;
264
- focusFn();
265
- window.setTimeout(function () { return skipFocusRef.current = false; }, 0);
266
- }, []);
267
- var focusElement = React.useCallback(function (element) {
268
- if (element) {
269
- switchFocus(function () { return element.focus(); });
270
- }
271
- }, [switchFocus]);
272
- var onPopupOpened = React.useCallback(function () {
273
- var _a;
274
- if (!focusedState && isOpen) {
275
- closePopup({ target: targetRef.current });
276
- }
277
- else {
278
- if (props.filterable) {
279
- focusElement((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element);
280
- }
281
- else {
282
- focusElement(treeViewRef.current && treeViewRef.current.element);
283
- }
284
- }
285
- }, [focusedState, isOpen, focusElement, closePopup, props.filterable]);
286
- var onPopupClosed = React.useCallback(function () {
287
- if (focusedState) {
288
- // Move the focus from treeview to dropdown without triggering Focus or Blur events.
289
- focusElement(elementRef.current);
290
- }
291
- }, [focusedState, focusElement]);
292
- var onFocus = React.useCallback(function (event) {
293
- if (!focusedState && !skipFocusRef.current) {
294
- setFocusedState(true);
295
- if (props.onFocus && targetRef.current) {
296
- var focusEvent = {
297
- syntheticEvent: event,
298
- nativeEvent: event.nativeEvent,
299
- target: targetRef.current
300
- };
301
- props.onFocus.call(undefined, focusEvent);
302
- }
303
- }
304
- }, [focusedState, props.onFocus]);
305
- var onBlur = React.useCallback(function (event) {
306
- if (focusedState && !skipFocusRef.current && targetRef.current) {
307
- setFocusedState(false);
308
- var ev = {
309
- syntheticEvent: event,
310
- nativeEvent: event.nativeEvent,
311
- target: targetRef.current
312
- };
313
- if (props.onBlur) {
314
- var focusEvent = __assign({}, ev);
315
- props.onBlur.call(undefined, focusEvent);
316
- }
317
- if (!isAdaptive) {
318
- closePopup(ev);
319
- }
320
- }
321
- }, [focusedState, props.onBlur, isOpen, opened, onClose]);
322
- var onWrapperMouseDown = React.useCallback(function () {
323
- if (focusedState) {
324
- // moving focus from treeview to dropdown triggers Focus and Blur events.
325
- switchFocus(kendo_react_common_1.noop);
326
- }
327
- }, [focusedState, switchFocus]);
328
- var onWrapperClick = React.useCallback(function (event) {
329
- if (!event.isDefaultPrevented() && targetRef.current) {
330
- setFocusedState(true);
331
- var ev = {
332
- syntheticEvent: event,
333
- nativeEvent: event.nativeEvent,
334
- target: targetRef.current
335
- };
336
- if (!isOpen) {
337
- openPopup(ev);
338
- }
339
- }
340
- }, [isOpen, openPopup]);
341
- var onWrapperKeyDown = React.useCallback(function (event) {
342
- var _a, _b;
343
- var keyCode = event.keyCode, altKey = event.altKey;
344
- var treeviewElement = treeViewRef.current && treeViewRef.current.element;
345
- if (!targetRef.current || (event.isDefaultPrevented() && ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element) === event.target)) {
346
- return;
347
- }
348
- var ev = {
349
- syntheticEvent: event,
350
- nativeEvent: event.nativeEvent,
351
- target: targetRef.current
352
- };
353
- if (value && value.length > 0 &&
354
- (keyCode === kendo_react_common_1.Keys.left || keyCode === kendo_react_common_1.Keys.right ||
355
- keyCode === kendo_react_common_1.Keys.home || keyCode === kendo_react_common_1.Keys.end ||
356
- keyCode === kendo_react_common_1.Keys.delete)) {
357
- var tagsToRender = tagsToRenderRef.current;
358
- var focusedIndex = focusedTagState ?
359
- tagsToRender.findIndex(function (t) { return (0, utils_1.matchTags)(t, focusedTagState, dataItemKey); }) : -1;
360
- var newFocusedTag = undefined;
361
- var hasFocused = focusedIndex !== -1;
362
- if (keyCode === kendo_react_common_1.Keys.left) {
363
- if (hasFocused) {
364
- focusedIndex = Math.max(0, focusedIndex - 1);
365
- }
366
- else {
367
- focusedIndex = tagsToRender.length - 1;
368
- }
369
- newFocusedTag = tagsToRender[focusedIndex];
370
- }
371
- else if (keyCode === kendo_react_common_1.Keys.right) {
372
- if (focusedIndex === tagsToRender.length - 1) {
373
- newFocusedTag = undefined;
374
- }
375
- else if (hasFocused) {
376
- focusedIndex = Math.min(tagsToRender.length - 1, focusedIndex + 1);
377
- newFocusedTag = tagsToRender[focusedIndex];
378
- }
379
- }
380
- else if (keyCode === kendo_react_common_1.Keys.home) {
381
- newFocusedTag = tagsToRender[0];
382
- }
383
- else if (keyCode === kendo_react_common_1.Keys.end) {
384
- newFocusedTag = tagsToRender[tagsToRender.length - 1];
385
- }
386
- else if (keyCode === kendo_react_common_1.Keys.delete) {
387
- if (hasFocused) {
388
- changeValue(ev, tagsToRender[focusedIndex].data, 'delete');
389
- }
390
- }
391
- if (newFocusedTag !== focusedTagState) {
392
- setFocusedTagState(newFocusedTag);
393
- }
394
- }
395
- if (isOpen) {
396
- if (keyCode === kendo_react_common_1.Keys.esc || (altKey && keyCode === kendo_react_common_1.Keys.up)) {
397
- event.preventDefault();
398
- closePopup(ev);
399
- }
400
- else if (treeviewElement && treeviewElement.querySelector('.k-focus') &&
401
- (keyCode === kendo_react_common_1.Keys.up || keyCode === kendo_react_common_1.Keys.down ||
402
- keyCode === kendo_react_common_1.Keys.left || keyCode === kendo_react_common_1.Keys.right ||
403
- keyCode === kendo_react_common_1.Keys.home || keyCode === kendo_react_common_1.Keys.end)) {
404
- if (keyCode === kendo_react_common_1.Keys.up && ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.element)) {
405
- var items = Array.from(treeviewElement.querySelectorAll('.k-treeview-item'));
406
- var focusedItem = __spreadArray([], items, true).reverse().find(function (i) { return Boolean(i && i.querySelector('.k-focus')); });
407
- if (focusedItem && items.indexOf(focusedItem) === 0) {
408
- return switchFocus(function () { var _a; focusElement((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element); });
409
- }
410
- }
411
- switchFocus(kendo_react_common_1.noop);
412
- }
413
- else if (keyCode === kendo_react_common_1.Keys.down) {
414
- switchFocus(function () { var _a; focusElement(((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element) || treeviewElement); });
415
- }
416
- }
417
- else {
418
- if (altKey && keyCode === kendo_react_common_1.Keys.down) {
419
- event.preventDefault();
420
- openPopup(ev);
421
- }
422
- }
423
- }, [isOpen, closePopup, focusElement, switchFocus, openPopup, focusedTagState, dataItemKey, value, changeValue]);
424
- var onInputKeyDown = React.useCallback(function (event) {
425
- var keyCode = event.keyCode, altKey = event.altKey;
426
- if (altKey || (keyCode !== kendo_react_common_1.Keys.up && keyCode !== kendo_react_common_1.Keys.down)) {
427
- return;
428
- }
429
- event.preventDefault();
430
- switchFocus(keyCode === kendo_react_common_1.Keys.up ?
431
- function () { focusElement(elementRef.current); } :
432
- function () { focusElement(treeViewRef.current && treeViewRef.current.element); });
433
- }, [focusElement, switchFocus]);
434
- var onClear = React.useCallback(function (event) {
435
- if (!targetRef.current) {
436
- return;
437
- }
438
- var ev = {
439
- syntheticEvent: event,
440
- nativeEvent: event.nativeEvent,
441
- target: targetRef.current
442
- };
443
- changeValue(ev, [], 'clear');
444
- closePopup(ev);
445
- event.preventDefault();
446
- }, [changeValue, closePopup]);
447
- var onTagDelete = React.useCallback(function (itemsToRemove, event) {
448
- var _a;
449
- closePopup({ target: targetRef.current });
450
- if (!focusedState) {
451
- focusElement((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element);
452
- }
453
- changeValue({
454
- syntheticEvent: event,
455
- nativeEvent: event.nativeEvent,
456
- target: targetRef.current
457
- }, itemsToRemove, 'delete');
458
- }, [changeValue, closePopup, focusElement, focusedState]);
459
- var onExpand = React.useCallback(function (event) {
460
- if (props.onExpandChange && targetRef.current) {
461
- var item = event.item, itemHierarchicalIndex = event.itemHierarchicalIndex, nativeEvent = event.nativeEvent, syntheticEvent = event.syntheticEvent;
462
- var expandEvent = {
463
- level: toLevel(itemHierarchicalIndex),
464
- item: item,
465
- nativeEvent: nativeEvent,
466
- syntheticEvent: syntheticEvent,
467
- target: targetRef.current
468
- };
469
- props.onExpandChange.call(undefined, expandEvent);
470
- }
471
- }, [props.onExpandChange]);
472
- var onFilterChange = React.useCallback(function (event) {
473
- if (props.onFilterChange && targetRef.current) {
474
- var filterDesc = { field: props.textField, operator: 'contains', value: event.target.value };
475
- var ev = {
476
- filter: filterDesc,
477
- syntheticEvent: event.syntheticEvent,
478
- nativeEvent: event.nativeEvent,
479
- target: targetRef.current
480
- };
481
- props.onFilterChange.call(undefined, ev);
482
- if (props.filter === undefined) {
483
- setFilterState(event.target.value);
484
- }
485
- }
486
- }, [props.onFilterChange, props.filter, props.textField]);
487
- var onCancel = React.useCallback(function (event) {
488
- if (!targetRef.current) {
489
- return;
490
- }
491
- var ev = {
492
- syntheticEvent: event,
493
- nativeEvent: event.nativeEvent,
494
- target: targetRef.current
495
- };
496
- if (props.onCancel) {
497
- props.onCancel.call(undefined, ev);
498
- }
499
- ;
500
- closePopup(ev);
501
- event.preventDefault();
502
- }, [props.onCancel, closePopup]);
503
- var renderAdaptiveListContainer = function () {
504
- var mobileFilter = props.filterable ? (React.createElement(ListFilter_1.default, { value: props.filter === undefined ? filterState : props.filter, ref: adaptiveInputRef, onChange: onFilterChange, onKeyDown: onInputKeyDown, size: size, rounded: rounded, fillMode: fillMode })) : null;
505
- var actionSheetProps = {
506
- adaptiveTitle: props.adaptiveTitle,
507
- expand: isOpen,
508
- onClose: function (event) { return props.onCancel ? onCancel(event) : onClear(event); },
509
- windowWidth: windowWidth,
510
- mobileFilter: mobileFilter,
511
- footer: {
512
- cancelText: localization.toLanguageString(messages_1.adaptiveModeFooterCancel, messages_1.messages[messages_1.adaptiveModeFooterCancel]),
513
- onCancel: function (event) { return props.onCancel ? onCancel(event) : onClear(event); },
514
- applyText: localization.toLanguageString(messages_1.adaptiveModeFooterApply, messages_1.messages[messages_1.adaptiveModeFooterApply]),
515
- onApply: function (event) { return closePopup(event); }
516
- }
517
- };
518
- return (React.createElement(AdaptiveMode_1.AdaptiveMode, __assign({}, actionSheetProps),
519
- React.createElement(kendo_react_layout_1.ActionSheetContent, { className: '!k-overflow-hidden' },
520
- React.createElement("div", { className: 'k-list-container' },
521
- React.createElement("div", { className: 'k-list k-list-lg' }, data.length > 0 ? (React.createElement(kendo_react_treeview_1.TreeView, { ref: treeViewRef, tabIndex: tabIndex, data: data, focusIdField: dataItemKey, textField: props.textField, checkField: checkField, checkIndeterminateField: checkIndeterminateField, expandField: props.expandField, childrenField: subItemsField, expandIcons: true, onItemClick: onChange, onCheckChange: onChange, onExpandChange: onExpand, checkboxes: true, size: size, item: props.item, dir: dir })) : (React.createElement(NoData, null, localization.toLanguageString(messages_1.nodata, messages_1.messages[messages_1.nodata]))))))));
522
- };
523
- var calculateMedia = React.useCallback(function (entries) {
524
- for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
525
- var entry = entries_1[_i];
526
- setWindowWidth(entry.target.clientWidth);
527
- }
528
- ;
529
- }, []);
530
- var NoData = props.listNoData || ListNoData_1.ListNoData;
531
- var localization = (0, kendo_react_intl_1.useLocalization)();
532
- var isValid = !validityStyles || validity.valid;
533
- var size = props.size, rounded = props.rounded, fillMode = props.fillMode;
534
- var currentTagsToRender = isAdaptive && isOpen ? currentTreeValue : tagsToRenderRef.current;
535
- var multiselecttree = (React.createElement(React.Fragment, null,
536
- React.createElement("span", { className: (0, kendo_react_common_1.classNames)('k-multiselecttree k-input', props.className, (_a = {},
537
- _a["k-input-".concat(sizeMap[size] || size)] = size,
538
- _a["k-rounded-".concat(roundedMap[rounded] || rounded)] = rounded,
539
- _a["k-input-".concat(fillMode)] = fillMode,
540
- _a['k-focus'] = focusedState && !disabled,
541
- _a['k-invalid'] = !isValid,
542
- _a['k-disabled'] = disabled,
543
- _a['k-loading'] = props.loading,
544
- _a['k-required'] = required,
545
- _a)), tabIndex: tabIndex, accessKey: props.accessKey, id: id, style: label ? __assign(__assign({}, style), { width: undefined }) : style, dir: dir, ref: elementRef, onKeyDown: disabled ? undefined : onWrapperKeyDown, onMouseDown: onWrapperMouseDown, onFocus: onFocus, onBlur: onBlur, role: "combobox", "aria-haspopup": "tree", "aria-expanded": isOpen, "aria-disabled": disabled, "aria-label": label, "aria-labelledby": props.ariaLabelledBy, "aria-describedby": props.ariaDescribedBy ? props.ariaDescribedBy : 'tagslist-' + id, "aria-required": props.required, onClick: disabled ? undefined : onWrapperClick },
546
- React.createElement("div", { id: 'tagslist-' + id, className: (0, kendo_react_common_1.classNames)('k-input-values k-chip-list k-selection-multiple', (_b = {},
547
- _b["k-chip-list-".concat(sizeMap[size] || size)] = size,
548
- _b)) }, currentTagsToRender.length > 0 ? (React.createElement(TagList_1.default, { tag: props.tag, onTagDelete: onTagDelete, data: currentTagsToRender, guid: id, focused: focusedTagState ? tagsToRenderRef.current.find(function (t) { return (0, utils_1.matchTags)(t, focusedTagState, dataItemKey); }) : undefined, size: size })) : placeholder),
549
- React.createElement("span", { className: "k-input-inner" },
550
- React.createElement("span", { className: "k-input-value-text" }, "\u00A0")),
551
- props.loading && React.createElement(kendo_react_common_1.IconWrap, { className: "k-input-loading-icon", name: 'loading' }),
552
- hasValue && !disabled && currentTagsToRender.length > 0 &&
553
- React.createElement(ClearButton_1.default, { onClick: onClear }),
554
- 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%' } },
555
- React.createElement("option", { value: props.valueMap ? props.valueMap.call(undefined, value) : value })),
556
- !isAdaptive && React.createElement(kendo_react_popup_1.Popup, { popupClass: (0, kendo_react_common_1.classNames)(popupSettings.popupClass, 'k-multiselecttree-popup'), className: (0, kendo_react_common_1.classNames)(popupSettings.className, { 'k-rtl': dir === 'rtl' }), style: popupStyles, animate: popupSettings.animate, anchor: elementRef.current, show: isOpen, onOpen: onPopupOpened, onClose: onPopupClosed, appendTo: popupSettings.appendTo, ref: popupRef },
557
- props.filterable && (React.createElement(ListFilter_1.default, { value: props.filter === undefined ? filterState : props.filter, ref: inputRef, onChange: onFilterChange, onKeyDown: onInputKeyDown, tabIndex: tabIndex, size: size, rounded: rounded, fillMode: fillMode })),
558
- data.length > 0 ? (React.createElement(kendo_react_treeview_1.TreeView, { ref: treeViewRef, tabIndex: tabIndex, data: data, focusIdField: dataItemKey, textField: props.textField, checkField: checkField, checkIndeterminateField: checkIndeterminateField, expandField: props.expandField, childrenField: subItemsField, expandIcons: true, onItemClick: onChange, onCheckChange: onChange, onExpandChange: onExpand, checkboxes: true, size: size, item: props.item, dir: dir })) : (React.createElement(NoData, null, localization.toLanguageString(messages_1.nodata, messages_1.messages[messages_1.nodata]))))),
559
- isAdaptive && renderAdaptiveListContainer()));
560
- return label ? (React.createElement(kendo_react_labels_1.FloatingLabel, { label: label, editorValue: hasValue, editorPlaceholder: placeholder, editorValid: isValid, editorDisabled: disabled, editorId: id, style: { width: style ? style.width : undefined }, children: multiselecttree, dir: dir })) : multiselecttree;
561
- });
562
- var propTypes = {
563
- opened: PropTypes.bool,
564
- disabled: PropTypes.bool,
565
- dir: PropTypes.string,
566
- tabIndex: PropTypes.number,
567
- accessKey: PropTypes.string,
568
- data: PropTypes.array,
569
- value: PropTypes.any,
570
- valueMap: PropTypes.func,
571
- placeholder: PropTypes.string,
572
- dataItemKey: PropTypes.string.isRequired,
573
- textField: PropTypes.string.isRequired,
574
- checkField: PropTypes.string,
575
- checkIndeterminateField: PropTypes.string,
576
- expandField: PropTypes.string,
577
- subItemsField: PropTypes.string,
578
- className: PropTypes.string,
579
- style: PropTypes.object,
580
- label: PropTypes.string,
581
- validationMessage: PropTypes.string,
582
- validityStyles: PropTypes.bool,
583
- valid: PropTypes.bool,
584
- required: PropTypes.bool,
585
- name: PropTypes.string,
586
- id: PropTypes.string,
587
- ariaLabelledBy: PropTypes.string,
588
- ariaDescribedBy: PropTypes.string,
589
- filterable: PropTypes.bool,
590
- filter: PropTypes.string,
591
- loading: PropTypes.bool,
592
- tags: PropTypes.arrayOf(PropTypes.shape({
593
- text: PropTypes.string,
594
- data: PropTypes.arrayOf(PropTypes.any)
595
- })),
596
- popupSettings: PropTypes.shape({
597
- animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({
598
- openDuration: PropTypes.number,
599
- closeDuration: PropTypes.number
600
- })]),
601
- popupClass: PropTypes.string,
602
- className: PropTypes.string,
603
- appendTo: PropTypes.any,
604
- width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
605
- height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
606
- }),
607
- onOpen: PropTypes.func,
608
- onClose: PropTypes.func,
609
- onFocus: PropTypes.func,
610
- onBlur: PropTypes.func,
611
- onChange: PropTypes.func,
612
- onFilterChange: PropTypes.func,
613
- onExpandChange: PropTypes.func,
614
- onCancel: PropTypes.func,
615
- item: PropTypes.func,
616
- listNoData: PropTypes.func,
617
- adaptiveTitle: PropTypes.string,
618
- adaptive: PropTypes.bool
619
- };
620
- exports.MultiSelectTree.displayName = 'KendoReactMultiSelectTree';
621
- exports.MultiSelectTree.defaultProps = defaultProps;
622
- exports.MultiSelectTree.propTypes = propTypes;