@progress/kendo-react-dropdowns 4.14.0-dev.202201141457 → 5.0.0-dev.202201182040

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 (71) hide show
  1. package/dist/cdn/js/kendo-react-dropdowns.js +1 -1
  2. package/dist/es/AutoComplete/AutoComplete.d.ts +7 -4
  3. package/dist/es/AutoComplete/AutoComplete.js +30 -19
  4. package/dist/es/AutoComplete/AutoCompleteProps.d.ts +37 -0
  5. package/dist/es/ComboBox/ComboBox.d.ts +8 -1
  6. package/dist/es/ComboBox/ComboBox.js +46 -33
  7. package/dist/es/ComboBox/ComboBoxProps.d.ts +37 -0
  8. package/dist/es/DropDownList/DropDownList.d.ts +6 -8
  9. package/dist/es/DropDownList/DropDownList.js +56 -48
  10. package/dist/es/DropDownList/DropDownListProps.d.ts +37 -0
  11. package/dist/es/DropDownTree/DropDownTree.js +44 -24
  12. package/dist/es/DropDownTree/DropDownTreeProps.d.ts +37 -0
  13. package/dist/es/MultiColumnComboBox/MultiColumnComboBox.d.ts +37 -0
  14. package/dist/es/MultiColumnComboBox/MultiColumnComboBox.js +23 -12
  15. package/dist/es/MultiSelect/MultiSelect.d.ts +8 -5
  16. package/dist/es/MultiSelect/MultiSelect.js +51 -32
  17. package/dist/es/MultiSelect/MultiSelectProps.d.ts +38 -1
  18. package/dist/es/MultiSelect/TagList.d.ts +2 -1
  19. package/dist/es/MultiSelect/TagList.js +10 -15
  20. package/dist/es/MultiSelectTree/MultiSelectTree.js +42 -29
  21. package/dist/es/MultiSelectTree/MultiSelectTreeProps.d.ts +37 -0
  22. package/dist/es/common/ClearButton.js +2 -1
  23. package/dist/es/common/DropDownBase.d.ts +2 -3
  24. package/dist/es/common/DropDownBase.js +2 -16
  25. package/dist/es/common/List.d.ts +1 -0
  26. package/dist/es/common/List.js +3 -2
  27. package/dist/es/common/ListDefaultItem.js +2 -2
  28. package/dist/es/common/ListFilter.d.ts +5 -0
  29. package/dist/es/common/ListFilter.js +12 -3
  30. package/dist/es/common/ListItem.js +5 -5
  31. package/dist/es/common/MultiColumnList.js +1 -1
  32. package/dist/es/common/SearchBar.d.ts +1 -4
  33. package/dist/es/common/SearchBar.js +2 -8
  34. package/dist/es/common/VirtualScroll.js +3 -2
  35. package/dist/es/package-metadata.js +1 -1
  36. package/dist/npm/AutoComplete/AutoComplete.d.ts +7 -4
  37. package/dist/npm/AutoComplete/AutoComplete.js +29 -18
  38. package/dist/npm/AutoComplete/AutoCompleteProps.d.ts +37 -0
  39. package/dist/npm/ComboBox/ComboBox.d.ts +8 -1
  40. package/dist/npm/ComboBox/ComboBox.js +45 -32
  41. package/dist/npm/ComboBox/ComboBoxProps.d.ts +37 -0
  42. package/dist/npm/DropDownList/DropDownList.d.ts +6 -8
  43. package/dist/npm/DropDownList/DropDownList.js +55 -47
  44. package/dist/npm/DropDownList/DropDownListProps.d.ts +37 -0
  45. package/dist/npm/DropDownTree/DropDownTree.js +43 -23
  46. package/dist/npm/DropDownTree/DropDownTreeProps.d.ts +37 -0
  47. package/dist/npm/MultiColumnComboBox/MultiColumnComboBox.d.ts +37 -0
  48. package/dist/npm/MultiColumnComboBox/MultiColumnComboBox.js +22 -11
  49. package/dist/npm/MultiSelect/MultiSelect.d.ts +8 -5
  50. package/dist/npm/MultiSelect/MultiSelect.js +50 -31
  51. package/dist/npm/MultiSelect/MultiSelectProps.d.ts +38 -1
  52. package/dist/npm/MultiSelect/TagList.d.ts +2 -1
  53. package/dist/npm/MultiSelect/TagList.js +10 -15
  54. package/dist/npm/MultiSelectTree/MultiSelectTree.js +40 -27
  55. package/dist/npm/MultiSelectTree/MultiSelectTreeProps.d.ts +37 -0
  56. package/dist/npm/common/ClearButton.js +2 -1
  57. package/dist/npm/common/DropDownBase.d.ts +2 -3
  58. package/dist/npm/common/DropDownBase.js +2 -16
  59. package/dist/npm/common/List.d.ts +1 -0
  60. package/dist/npm/common/List.js +3 -2
  61. package/dist/npm/common/ListDefaultItem.js +2 -2
  62. package/dist/npm/common/ListFilter.d.ts +5 -0
  63. package/dist/npm/common/ListFilter.js +12 -3
  64. package/dist/npm/common/ListItem.js +5 -5
  65. package/dist/npm/common/MultiColumnList.js +1 -1
  66. package/dist/npm/common/SearchBar.d.ts +1 -4
  67. package/dist/npm/common/SearchBar.js +2 -8
  68. package/dist/npm/common/VirtualScroll.js +3 -2
  69. package/dist/npm/package-metadata.js +1 -1
  70. package/dist/systemjs/kendo-react-dropdowns.js +1 -1
  71. package/package.json +19 -13
@@ -24,7 +24,7 @@ var __assign = (this && this.__assign) || function () {
24
24
  };
25
25
  import * as React from 'react';
26
26
  import * as PropTypes from 'prop-types';
27
- import { classNames, Keys, guid, createPropsContext, withPropsContext } from '@progress/kendo-react-common';
27
+ import { classNames, Keys, guid, createPropsContext, kendoThemeMaps, withPropsContext } from '@progress/kendo-react-common';
28
28
  import { FloatingLabel } from '@progress/kendo-react-labels';
29
29
  import ListContainer from '../common/ListContainer';
30
30
  import List from '../common/List';
@@ -35,6 +35,8 @@ import { ActiveDescendant } from './../common/settings';
35
35
  import { itemIndexStartsWith, getItemValue, areSame, removeDataItems, isPresent, preventDefaultNonInputs, matchTags } from '../common/utils';
36
36
  import { validatePackage } from '@progress/kendo-react-common';
37
37
  import { packageMetadata } from '../package-metadata';
38
+ import ClearButton from '../common/ClearButton';
39
+ var sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;
38
40
  var VALIDATION_MESSAGE = 'Please enter a valid value!';
39
41
  var preventDefault = function (event) { return event.preventDefault(); };
40
42
  var isCustom = function (type) { return type === FocusedItemType.CustomItem; };
@@ -140,6 +142,10 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
140
142
  }
141
143
  _this.base.triggerPageChangeCornerItems(nextFocusedItem, state);
142
144
  };
145
+ _this.componentRef = function (element) {
146
+ _this._element = element;
147
+ _this.base.wrapper = element;
148
+ };
143
149
  _this.searchbarRef = function (searchbar) {
144
150
  var input = _this._input = searchbar && searchbar.input;
145
151
  if (input && _this.state.focused) {
@@ -228,19 +234,22 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
228
234
  }
229
235
  };
230
236
  _this.renderListContainer = function () {
237
+ var _a, _b;
231
238
  var base = _this.base;
232
- var _a = _this.props, header = _a.header, footer = _a.footer, allowCustom = _a.allowCustom, dir = _a.dir, _b = _a.data, data = _b === void 0 ? [] : _b;
239
+ var _c = _this.props, header = _c.header, footer = _c.footer, allowCustom = _c.allowCustom, dir = _c.dir, _d = _c.data, data = _d === void 0 ? [] : _d, size = _c.size;
233
240
  var popupSettings = _this.base.getPopupSettings();
234
241
  var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;
235
242
  var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;
236
- var virtual = _this.props.virtual !== undefined;
237
243
  var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;
238
244
  var listContainerProps = {
239
245
  dir: dir !== undefined ? dir : base.dirCalculated,
240
246
  width: popupWidth,
241
247
  popupSettings: {
242
- popupClass: popupSettings.popupClass,
243
- className: classNames('k-list-container k-reset', popupSettings.className),
248
+ popupClass: classNames(popupSettings.popupClass, 'k-list', (_a = {},
249
+ _a["k-list-" + (sizeMap[size] || size)] = size,
250
+ _a['k-virtual-list'] = _this.base.vs.enabled,
251
+ _a)),
252
+ className: popupSettings.className,
244
253
  animate: popupSettings.animate,
245
254
  anchor: _this.element,
246
255
  show: opened,
@@ -251,19 +260,17 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
251
260
  itemsCount: [data.length, _this.value.length]
252
261
  };
253
262
  var focusedType = _this.getFocusedState().focusedType;
254
- var customItem = allowCustom && text && (React.createElement("div", { className: "k-list", key: "customitem", onClick: _this.customItemSelect, onMouseDown: preventDefault },
255
- React.createElement("div", { className: classNames('k-item k-custom-item', { 'k-state-focused': isCustom(focusedType) }) },
263
+ var customItem = allowCustom && text && (React.createElement("div", { className: classNames('k-list', (_b = {},
264
+ _b["k-list-" + (sizeMap[size] || size)] = size,
265
+ _b)), key: "customitem", onClick: _this.customItemSelect, onMouseDown: preventDefault },
266
+ React.createElement("div", { className: classNames('k-list-item k-custom-item', { 'k-focus': isCustom(focusedType) }), style: { fontStyle: 'italic' } },
256
267
  text,
257
- React.createElement("span", { className: "k-icon k-i-plus", style: { float: 'right' } }))));
268
+ React.createElement("span", { className: "k-icon k-i-plus", style: { position: 'absolute', right: '0.5em' } }))));
258
269
  return (React.createElement(ListContainer, __assign({}, listContainerProps),
259
- virtual && header,
260
- _this.base.renderScrollWrapper(React.createElement(React.Fragment, null,
261
- !virtual && header,
262
- customItem,
263
- _this.renderList(),
264
- !virtual && footer,
265
- _this.base.renderScrollElement())),
266
- virtual && footer));
270
+ header && React.createElement("div", { className: "k-list-header" }, header),
271
+ customItem,
272
+ _this.renderList(),
273
+ footer && React.createElement("div", { className: "k-list-footer" }, footer)));
267
274
  };
268
275
  _this.renderList = function () {
269
276
  var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender, dataItemKey = _a.dataItemKey, virtual = _a.virtual;
@@ -273,8 +280,9 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
273
280
  var focusedIndex = _this.getFocusedState().focusedIndex;
274
281
  var popupSettings = _this.base.getPopupSettings();
275
282
  var translate = "translateY(" + vs.translate + "px)";
276
- return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: focusedIndex - skip, value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, listRef: function (list) { vs.list = _this.base.list = list; }, wrapperStyle: vs.enabled ?
277
- { float: 'left', width: '100%' } : { maxHeight: popupSettings.height }, wrapperCssClass: vs.enabled ? undefined : 'k-list-scroller', listStyle: vs.enabled ? { transform: translate } : undefined, key: "listKey", skip: skip, onClick: _this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender, onMouseDown: preventDefault, onBlur: _this.handleBlur }));
283
+ return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: focusedIndex - skip, value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, listRef: function (list) { 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, noDataRender: listNoDataRender, onMouseDown: preventDefault, onBlur: _this.handleBlur, onScroll: function (e) {
284
+ vs.scrollHandler(e);
285
+ }, wrapperRef: vs.scrollerRef, scroller: _this.base.renderScrollElement() }));
278
286
  };
279
287
  _this.customItemSelect = function (event) {
280
288
  var _a;
@@ -318,6 +326,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
318
326
  if (_this.props.autoClose) {
319
327
  _this.base.togglePopup(state);
320
328
  }
329
+ event.stopPropagation();
321
330
  _this.applyState(state);
322
331
  };
323
332
  _this.handleBlur = function (event) {
@@ -527,9 +536,9 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
527
536
  * @hidden
528
537
  */
529
538
  MultiSelectWithoutContext.prototype.render = function () {
530
- var _this = this;
531
- var _a = this.props, style = _a.style, className = _a.className, label = _a.label, dir = _a.dir, disabled = _a.disabled, tags = _a.tags, textField = _a.textField, dataItemKey = _a.dataItemKey, virtual = _a.virtual;
532
- var _b = this.state, focused = _b.focused, text = _b.text, focusedTag = _b.focusedTag;
539
+ var _a, _b;
540
+ var _c = this.props, style = _c.style, className = _c.className, label = _c.label, dir = _c.dir, disabled = _c.disabled, tags = _c.tags, textField = _c.textField, dataItemKey = _c.dataItemKey, virtual = _c.virtual, size = _c.size, rounded = _c.rounded, fillMode = _c.fillMode, loading = _c.loading, filter = _c.filter;
541
+ var _d = this.state, text = _d.text, focused = _d.focused, focusedTag = _d.focusedTag;
533
542
  var vs = this.base.vs;
534
543
  var id = this.props.id || this._inputId;
535
544
  vs.enabled = virtual !== undefined;
@@ -549,16 +558,27 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
549
558
  }
550
559
  this.setItems(tagsToRender, this._tags);
551
560
  var isValid = !this.validityStyles || this.validity.valid;
552
- var component = (React.createElement("span", { ref: function (dropdown) { return _this._element = dropdown; }, className: classNames('k-widget k-multiselect', className, {
553
- 'k-state-focused': focused && !disabled,
554
- 'k-state-invalid': !isValid,
555
- 'k-state-disabled': disabled
556
- }), style: !label
561
+ var clearButton = Boolean(filter !== undefined ? filter : text) || this.value.length > 0;
562
+ var component = (React.createElement("div", { ref: this.componentRef, className: classNames('k-multiselect k-input', className, (_a = {},
563
+ _a["k-input-" + (sizeMap[size] || size)] = size,
564
+ _a["k-rounded-" + (roundedMap[rounded] || rounded)] = rounded,
565
+ _a["k-input-" + fillMode] = fillMode,
566
+ _a['k-focus'] = focused && !disabled,
567
+ _a['k-invalid'] = !isValid,
568
+ _a['k-valid'] = isValid,
569
+ _a['k-disabled'] = disabled,
570
+ _a['k-loading'] = loading,
571
+ _a['k-required'] = this.required,
572
+ _a)), style: !label
557
573
  ? style
558
- : __assign({}, style, { width: undefined }), dir: dir, onFocus: this.handleFocus, onBlur: this.handleBlur },
559
- React.createElement("div", { onClick: this.handleWrapperClick, ref: function (wrapper) { return _this.base.wrapper = wrapper; }, className: "k-multiselect-wrap k-floatwrap", onMouseDown: preventDefaultNonInputs },
560
- tagsToRender.length > 0 && React.createElement(TagList, { tagRender: this.props.tagRender, onTagDelete: this.onTagDelete, data: tagsToRender, guid: this.base.guid, focused: focusedTag ? tagsToRender.find(function (t) { return matchTags(t, focusedTag, dataItemKey); }) : undefined }),
574
+ : __assign({}, style, { width: undefined }), dir: dir, onFocus: this.handleFocus, onBlur: this.handleBlur, onClick: this.handleWrapperClick, onMouseDown: preventDefaultNonInputs },
575
+ React.createElement("div", { className: classNames('k-input-values k-chip-list k-selection-multiple', (_b = {},
576
+ _b["k-chip-list-" + (sizeMap[size] || size)] = size,
577
+ _b)), role: "listbox", id: 'tagslist-' + this.base.guid },
578
+ tagsToRender.length > 0 && React.createElement(TagList, { tagRender: this.props.tagRender, onTagDelete: this.onTagDelete, data: tagsToRender, guid: this.base.guid, focused: focusedTag ? tagsToRender.find(function (t) { return matchTags(t, focusedTag, dataItemKey); }) : undefined, size: size }),
561
579
  this.renderSearchbar(id)),
580
+ loading && React.createElement("span", { className: "k-icon k-i-loading" }),
581
+ clearButton && React.createElement(ClearButton, { onClick: this.clearButtonClick }),
562
582
  this.renderListContainer()));
563
583
  return label ? (React.createElement(FloatingLabel, { label: label, editorId: id, editorValue: text || getItemValue(this.value[0], textField), editorValid: isValid, editorDisabled: disabled, style: { width: style ? style.width : undefined }, children: component })) : component;
564
584
  };
@@ -568,12 +588,11 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
568
588
  var text = (this.props.filter !== undefined ? this.props.filter : this.state.text) || '';
569
589
  var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
570
590
  var focusedIndex = this.getFocusedState().focusedIndex;
571
- var clearButton = !!text || this.value.length > 0;
572
591
  var placeholderToShow = this.value.length === 0 && !text ? placeholder : undefined;
573
592
  var ariaActivedescendant = activedescendant === ActiveDescendant.TagsList && focusedTag !== undefined ?
574
593
  "tag-" + this.base.guid + "-" + focusedTag.text.replace(/\s+/g, '-') :
575
594
  "option-" + this.base.guid + "-" + focusedIndex;
576
- return (React.createElement(SearchBar, { id: id, size: Math.max((placeholderToShow || '').length, text.length, 1), tabIndex: this.props.tabIndex, accessKey: this.props.accessKey, placeholder: placeholderToShow, value: text, onChange: this.onChangeHandler, onKeyDown: this.onInputKeyDown, ref: this.searchbarRef, disabled: disabled, expanded: opened, owns: this.base.listBoxId, activedescendant: ariaActivedescendant, ariaDescribedBy: "tagslist-" + this.base.guid + (ariaDescribedBy ? (' ' + ariaDescribedBy) : ''), clearButton: clearButton, clearButtonClick: this.clearButtonClick, loading: this.props.loading, ariaLabelledBy: this.props.ariaLabelledBy }));
595
+ return (React.createElement(SearchBar, { id: id, size: Math.max((placeholderToShow || '').length, text.length, 1), tabIndex: this.props.tabIndex, accessKey: this.props.accessKey, placeholder: placeholderToShow, value: text, onChange: this.onChangeHandler, onKeyDown: this.onInputKeyDown, ref: this.searchbarRef, disabled: disabled, expanded: opened, owns: this.base.listBoxId, activedescendant: ariaActivedescendant, ariaDescribedBy: "tagslist-" + this.base.guid + (ariaDescribedBy ? (' ' + ariaDescribedBy) : ''), ariaLabelledBy: this.props.ariaLabelledBy }));
577
596
  };
578
597
  MultiSelectWithoutContext.prototype.onTagsNavigate = function (event, state) {
579
598
  var keyCode = event.keyCode;
@@ -715,7 +734,7 @@ var MultiSelectWithoutContext = /** @class */ (function (_super) {
715
734
  /**
716
735
  * @hidden
717
736
  */
718
- MultiSelectWithoutContext.defaultProps = __assign({}, DropDownBase.defaultProps, { autoClose: true, required: false });
737
+ MultiSelectWithoutContext.defaultProps = __assign({}, DropDownBase.defaultProps, { autoClose: true, required: false, size: 'medium', rounded: 'medium', fillMode: 'solid' });
719
738
  return MultiSelectWithoutContext;
720
739
  }(React.Component));
721
740
  export { MultiSelectWithoutContext };
@@ -218,7 +218,7 @@ export interface MultiSelectProps extends FormComponentProps {
218
218
  /**
219
219
  * Fires when a tag element is about to be rendered ([see example]({% slug customrendering_multiselect %}#toc-tags)). Used to override the default appearance of the element.
220
220
  */
221
- tagRender?: (tagData: TagData, li: React.ReactElement<HTMLLIElement>) => React.ReactElement<HTMLLIElement> | null;
221
+ tagRender?: (tagData: TagData, tag: React.ReactElement) => React.ReactElement;
222
222
  /**
223
223
  * Sets the header component of the MultiSelect ([see example]({% slug customrendering_multiselect %}#toc-headers-and-footers)).
224
224
  */
@@ -227,4 +227,41 @@ export interface MultiSelectProps extends FormComponentProps {
227
227
  * Sets the footer component of the MultiSelect ([see example]({% slug customrendering_multiselect %}#toc-headers-and-footers)).
228
228
  */
229
229
  footer?: React.ReactNode;
230
+ /**
231
+ * Configures the `size` of the MultiSelect.
232
+ *
233
+ * The available options are:
234
+ * - small
235
+ * - medium
236
+ * - large
237
+ * - null&mdash;Does not set a size `className`.
238
+ *
239
+ * @default `medium`
240
+ */
241
+ size?: null | 'small' | 'medium' | 'large';
242
+ /**
243
+ * Configures the `roundness` of the MultiSelect.
244
+ *
245
+ * The available options are:
246
+ * - small
247
+ * - medium
248
+ * - large
249
+ * - full
250
+ * - null&mdash;Does not set a rounded `className`.
251
+ *
252
+ * @default `medium`
253
+ */
254
+ rounded?: null | 'small' | 'medium' | 'large' | 'full';
255
+ /**
256
+ * Configures the `fillMode` of the MultiSelect.
257
+ *
258
+ * The available options are:
259
+ * - solid
260
+ * - flat
261
+ * - outline
262
+ * - null&mdash;Does not set a fillMode `className`.
263
+ *
264
+ * @default `solid`
265
+ */
266
+ fillMode?: null | 'solid' | 'flat' | 'outline';
230
267
  }
@@ -20,13 +20,14 @@ export interface TagListProps {
20
20
  guid: string;
21
21
  focused?: TagData;
22
22
  onTagDelete: (items: Array<any>, event: React.MouseEvent<HTMLSpanElement>) => void;
23
- tagRender?: (tagData: TagData, li: React.ReactElement<HTMLLIElement>) => React.ReactElement<HTMLLIElement> | null;
23
+ tagRender?: (tagData: TagData, tag: React.ReactElement) => React.ReactElement;
24
24
  tag?: React.ComponentType<{
25
25
  tagData: TagData;
26
26
  guid: string;
27
27
  focusedTag?: TagData;
28
28
  onTagDelete: (items: Array<any>, event: React.MouseEvent<HTMLSpanElement>) => void;
29
29
  }>;
30
+ size?: null | 'small' | 'medium' | 'large';
30
31
  }
31
32
  /**
32
33
  * @hidden
@@ -12,10 +12,9 @@ var __extends = (this && this.__extends) || (function () {
12
12
  };
13
13
  })();
14
14
  import * as React from 'react';
15
- var tagClassName = 'k-button';
16
- var focusedTagClassName = tagClassName + ' k-state-focused';
17
- var preventDefault = function (event) { return event.preventDefault(); };
18
- var stopPropagation = function (event) { return event.stopPropagation(); };
15
+ import { Chip } from '@progress/kendo-react-buttons';
16
+ var preventDefault = function (event) { return event.syntheticEvent.preventDefault(); };
17
+ var stopPropagation = function (event) { return event.syntheticEvent.stopPropagation(); };
19
18
  /**
20
19
  * @hidden
21
20
  */
@@ -25,17 +24,13 @@ var TagList = /** @class */ (function (_super) {
25
24
  return _super !== null && _super.apply(this, arguments) || this;
26
25
  }
27
26
  TagList.prototype.render = function () {
28
- var _this = this;
29
- var _a = this.props, data = _a.data, guid = _a.guid;
30
- var TagComponent = this.props.tag;
31
- return (React.createElement("ul", { className: "k-reset", role: "listbox", id: 'tagslist-' + guid }, data.map(function (tagData, index) {
32
- var tag = TagComponent ? (React.createElement(TagComponent, { tagData: tagData, guid: guid, focusedTag: _this.props.focused, onTagDelete: _this.props.onTagDelete })) : (React.createElement("li", { className: tagData === _this.props.focused ? focusedTagClassName : tagClassName, key: tagData.text + index, id: "tag-" + guid + "-" + tagData.text.replace(/\s+/g, '-'), onMouseDown: preventDefault, onClick: stopPropagation, "aria-selected": true, role: "option", "aria-setsize": data.length },
33
- React.createElement("span", null, tagData.text),
34
- React.createElement("span", { "aria-label": "delete", className: "k-select", onClick: function (e) { return _this.props.onTagDelete.call(undefined, tagData.data, e); } },
35
- React.createElement("span", { className: "k-icon k-i-close" }))));
36
- return _this.props.tagRender ?
37
- _this.props.tagRender(tagData, tag) : tag;
38
- })));
27
+ var _a = this.props, data = _a.data, guid = _a.guid, focused = _a.focused, tagRender = _a.tagRender, TagComponent = _a.tag, onTagDelete = _a.onTagDelete, size = _a.size;
28
+ return (React.createElement(React.Fragment, null,
29
+ data.map(function (tagData, index) {
30
+ var tag = TagComponent ? (React.createElement(TagComponent, { tagData: tagData, guid: guid, focusedTag: focused, onTagDelete: onTagDelete })) : (React.createElement(Chip, { id: "tag-" + guid + "-" + tagData.text.replace(/\s+/g, '-'), "aria-selected": true, role: "option", "aria-setsize": data.length, key: tagData.text + index, text: tagData.text, removable: true, removeIcon: 'k-i-close', onRemove: function (e) { return onTagDelete.call(undefined, tagData.data, e.syntheticEvent); }, onMouseDown: preventDefault, onClick: stopPropagation, className: tagData === focused ? 'k-focus' : undefined, size: size }));
31
+ return tagRender ? tagRender(tagData, tag) : tag;
32
+ }),
33
+ this.props.children));
39
34
  };
40
35
  return TagList;
41
36
  }(React.Component));
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
11
11
  };
12
12
  import * as React from 'react';
13
13
  import * as PropTypes from 'prop-types';
14
- import { classNames, noop, useRtl, getTabIndex, Keys, guid, createPropsContext, usePropsContext } from '@progress/kendo-react-common';
14
+ import { classNames, noop, useRtl, getTabIndex, Keys, guid, kendoThemeMaps, createPropsContext, usePropsContext } from '@progress/kendo-react-common';
15
15
  import { Popup } from '@progress/kendo-react-popup';
16
16
  import { useLocalization } from '@progress/kendo-react-intl';
17
17
  import { TreeView } from '@progress/kendo-react-treeview';
@@ -20,10 +20,13 @@ import { packageMetadata } from './../package-metadata';
20
20
  import { getItemValue, areSame, matchTags } from '../common/utils';
21
21
  import { useDropdownWidth } from './../DropDownTree/useDropdownWidth';
22
22
  import { ListNoData } from './../DropDownTree/ListNoData';
23
- import { messages, clear, nodata } from './../messages';
23
+ import { messages, nodata } from './../messages';
24
24
  import { FloatingLabel } from '@progress/kendo-react-labels';
25
25
  import TagList from '../MultiSelect/TagList';
26
+ import ClearButton from '../common/ClearButton';
27
+ import ListFilter from '../common/ListFilter';
26
28
  var VALIDATION_MESSAGE = 'Please select a value from the list!';
29
+ var sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;
27
30
  var toLevel = function (hierarchicalIndex) {
28
31
  return hierarchicalIndex.split('_').map(function (i) { return parseInt(i, 10); });
29
32
  };
@@ -44,6 +47,9 @@ var defaultProps = {
44
47
  width: '200px',
45
48
  height: '200px'
46
49
  },
50
+ size: 'medium',
51
+ rounded: 'medium',
52
+ fillMode: 'solid',
47
53
  required: false,
48
54
  validityStyles: true
49
55
  };
@@ -61,11 +67,12 @@ export var MultiSelectTreePropsContext = createPropsContext();
61
67
  * Obtaining the `ref` returns an object of type [MultiSelectTreeHandle]({% slug api_dropdowns_multiselecttreehandle %}).
62
68
  */
63
69
  export var MultiSelectTree = React.forwardRef(function (directProps, ref) {
70
+ var _a, _b;
64
71
  var props = usePropsContext(MultiSelectTreePropsContext, directProps);
65
72
  validatePackage(packageMetadata);
66
73
  var componentGuid = React.useMemo(function () { return guid(); }, []);
67
74
  var id = props.id || componentGuid;
68
- var _a = props.data, data = _a === void 0 ? [] : _a, dataItemKey = props.dataItemKey, _b = props.popupSettings, popupSettings = _b === void 0 ? {} : _b, _c = props.style, style = _c === void 0 ? {} : _c, opened = props.opened, disabled = props.disabled, _d = props.onOpen, onOpen = _d === void 0 ? noop : _d, _e = props.onClose, onClose = _e === void 0 ? noop : _e, placeholder = props.placeholder, label = props.label, name = props.name, _f = props.checkField, checkField = _f === void 0 ? defaultProps.checkField : _f, _g = props.checkIndeterminateField, checkIndeterminateField = _g === void 0 ? defaultProps.checkIndeterminateField : _g, _h = props.subItemsField, subItemsField = _h === void 0 ? defaultProps.subItemsField : _h, validationMessage = props.validationMessage, valid = props.valid, tags = props.tags, value = props.value, _j = props.required, required = _j === void 0 ? defaultProps.required : _j, _k = props.validityStyles, validityStyles = _k === void 0 ? defaultProps.validityStyles : _k;
75
+ 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 ? noop : _f, _g = props.onClose, onClose = _g === void 0 ? 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;
69
76
  var tabIndex = getTabIndex(props.tabIndex, disabled);
70
77
  var targetRef = React.useRef(null);
71
78
  var elementRef = React.useRef(null);
@@ -75,10 +82,10 @@ export var MultiSelectTree = React.forwardRef(function (directProps, ref) {
75
82
  var skipFocusRef = React.useRef(false);
76
83
  var tagsToRenderRef = React.useRef([]);
77
84
  var popupRef = React.useRef(null);
78
- var _l = React.useState(), focusedTagState = _l[0], setFocusedTagState = _l[1];
79
- var _m = React.useState(false), openState = _m[0], setOpenState = _m[1];
80
- var _o = React.useState(false), focusedState = _o[0], setFocusedState = _o[1];
81
- var _p = React.useState(''), filterState = _p[0], setFilterState = _p[1];
85
+ var _o = React.useState(), focusedTagState = _o[0], setFocusedTagState = _o[1];
86
+ var _p = React.useState(false), openState = _p[0], setOpenState = _p[1];
87
+ var _q = React.useState(false), focusedState = _q[0], setFocusedState = _q[1];
88
+ var _r = React.useState(''), filterState = _r[0], setFilterState = _r[1];
82
89
  var isOpen = opened !== undefined ? opened : openState;
83
90
  var hasValue = Boolean(Array.isArray(value) && value.length);
84
91
  var validity = getValidity({ validationMessage: validationMessage, valid: valid, required: required }, hasValue);
@@ -283,13 +290,13 @@ export var MultiSelectTree = React.forwardRef(function (directProps, ref) {
283
290
  if (keyCode === Keys.esc || (altKey && keyCode === Keys.up)) {
284
291
  closePopup(ev);
285
292
  }
286
- else if (treeviewElement && treeviewElement.querySelector('.k-state-focused') &&
293
+ else if (treeviewElement && treeviewElement.querySelector('.k-focus') &&
287
294
  (keyCode === Keys.up || keyCode === Keys.down ||
288
295
  keyCode === Keys.left || keyCode === Keys.right ||
289
296
  keyCode === Keys.home || keyCode === Keys.end)) {
290
297
  if (keyCode === Keys.up && inputRef.current) {
291
298
  var items = Array.from(treeviewElement.querySelectorAll('.k-treeview-item'));
292
- var focusedItem = items.slice().reverse().find(function (i) { return Boolean(i && i.querySelector('.k-state-focused')); });
299
+ var focusedItem = items.slice().reverse().find(function (i) { return Boolean(i && i.querySelector('.k-focus')); });
293
300
  if (focusedItem && items.indexOf(focusedItem) === 0) {
294
301
  return switchFocus(function () { focusElement(inputRef.current); });
295
302
  }
@@ -368,26 +375,31 @@ export var MultiSelectTree = React.forwardRef(function (directProps, ref) {
368
375
  var NoData = props.listNoData || ListNoData;
369
376
  var localization = useLocalization();
370
377
  var isValid = !validityStyles || validity.valid;
371
- var multiselecttree = (React.createElement("span", { className: classNames('k-widget k-dropdowntree', props.className, {
372
- 'k-state-focused': focusedState && !disabled,
373
- 'k-state-invalid': !isValid,
374
- 'k-state-disabled': disabled
375
- }), tabIndex: tabIndex, accessKey: props.accessKey, id: id, style: label ? __assign({}, style, { width: undefined }) : style, dir: dir, ref: elementRef, onKeyDown: disabled ? undefined : onWrapperKeyDown, onMouseDown: onWrapperMouseDown, onFocus: onFocus, onBlur: onBlur, role: "listbox", "aria-haspopup": "true", "aria-expanded": isOpen, "aria-disabled": disabled, "aria-label": label, "aria-labelledby": props.ariaLabelledBy, "aria-describedby": props.ariaDescribedBy },
376
- React.createElement("span", { className: classNames('k-multiselect-wrap k-floatwrap', {
377
- 'k-state-focused': focusedState,
378
- 'k-state-disabled': disabled,
379
- 'k-state-invalid': !isValid
380
- }), onClick: disabled ? undefined : onWrapperClick },
381
- tagsToRenderRef.current.length > 0 && (React.createElement(TagList, { tag: props.tag, onTagDelete: onTagDelete, data: tagsToRenderRef.current, guid: componentGuid, focused: focusedTagState ? tagsToRenderRef.current.find(function (t) { return matchTags(t, focusedTagState, dataItemKey); }) : undefined })),
382
- props.loading && (React.createElement("span", { className: classNames('k-icon', { 'k-i-loading': props.loading }) })),
383
- hasValue && !disabled && (React.createElement("span", { onClick: onClear, className: "k-icon k-clear-value k-i-close", title: localization.toLanguageString(clear, messages[clear]), role: "button", tabIndex: -1, onMouseDown: function (e) { return e.preventDefault(); } })),
384
- 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%' } },
385
- React.createElement("option", { value: props.valueMap ? props.valueMap.call(undefined, value) : value }))),
386
- React.createElement(Popup, { popupClass: popupSettings.popupClass, className: classNames('k-list-container k-group k-reset k-popup-dropdowntree', 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 },
387
- props.filterable && (React.createElement("span", { className: "k-list-filter" },
388
- React.createElement("input", { className: "k-textbox", tabIndex: tabIndex, ref: inputRef, value: props.filter === undefined ? filterState : props.filter, onChange: onFilterChange, onKeyDown: onInputKeyDown }),
389
- React.createElement("span", { className: "k-icon k-i-zoom" }))),
390
- data.length > 0 ? (React.createElement(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, item: props.item })) : (React.createElement(NoData, null, localization.toLanguageString(nodata, messages[nodata]))))));
378
+ var size = props.size, rounded = props.rounded, fillMode = props.fillMode;
379
+ var multiselecttree = (React.createElement("span", { className: classNames('k-multiselect k-input', props.className, (_a = {},
380
+ _a["k-input-" + (sizeMap[size] || size)] = size,
381
+ _a["k-rounded-" + (roundedMap[rounded] || rounded)] = rounded,
382
+ _a["k-input-" + fillMode] = fillMode,
383
+ _a['k-focus'] = focusedState && !disabled,
384
+ _a['k-invalid'] = !isValid,
385
+ _a['k-valid'] = isValid,
386
+ _a['k-disabled'] = disabled,
387
+ _a['k-loading'] = props.loading,
388
+ _a['k-required'] = required,
389
+ _a)), tabIndex: tabIndex, accessKey: props.accessKey, id: id, style: label ? __assign({}, style, { width: undefined }) : style, dir: dir, ref: elementRef, onKeyDown: disabled ? undefined : onWrapperKeyDown, onMouseDown: onWrapperMouseDown, onFocus: onFocus, onBlur: onBlur, role: "listbox", "aria-haspopup": "true", "aria-expanded": isOpen, "aria-disabled": disabled, "aria-label": label, "aria-labelledby": props.ariaLabelledBy, "aria-describedby": props.ariaDescribedBy, onClick: disabled ? undefined : onWrapperClick },
390
+ tagsToRenderRef.current.length > 0 && (React.createElement("div", { className: classNames('k-input-values k-chip-list k-selection-multiple', (_b = {},
391
+ _b["k-chip-list-" + (sizeMap[size] || size)] = size,
392
+ _b)), role: "listbox", id: 'tagslist-' + id },
393
+ React.createElement(TagList, { tag: props.tag, onTagDelete: onTagDelete, data: tagsToRenderRef.current, guid: id, focused: focusedTagState ? tagsToRenderRef.current.find(function (t) { return matchTags(t, focusedTagState, dataItemKey); }) : undefined, size: size }))),
394
+ !hasValue && React.createElement("span", { className: "k-input-inner" },
395
+ React.createElement("span", { className: "k-input-value-text" }, "\u00A0")),
396
+ props.loading && React.createElement("span", { className: "k-icon k-i-loading" }),
397
+ hasValue && !disabled && React.createElement(ClearButton, { onClick: onClear }),
398
+ 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%' } },
399
+ React.createElement("option", { value: props.valueMap ? props.valueMap.call(undefined, value) : value })),
400
+ React.createElement(Popup, { popupClass: popupSettings.popupClass, className: 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 },
401
+ props.filterable && (React.createElement(ListFilter, { value: props.filter === undefined ? filterState : props.filter, inputRef: inputRef, onChange: onFilterChange, onKeyDown: onInputKeyDown, tabIndex: tabIndex, size: size, rounded: rounded, fillMode: fillMode })),
402
+ data.length > 0 ? (React.createElement(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 })) : (React.createElement(NoData, null, localization.toLanguageString(nodata, messages[nodata]))))));
391
403
  return label ? (React.createElement(FloatingLabel, { label: label, editorValue: hasValue, editorPlaceholder: placeholder, editorValid: isValid, editorDisabled: disabled, editorId: id, style: { width: style ? style.width : undefined }, children: multiselecttree, dir: dir })) : multiselecttree;
392
404
  });
393
405
  var propTypes = {
@@ -446,4 +458,5 @@ var propTypes = {
446
458
  listNoData: PropTypes.func
447
459
  };
448
460
  MultiSelectTree.displayName = 'KendoReactMultiSelectTree';
461
+ MultiSelectTree.defaultProps = defaultProps;
449
462
  MultiSelectTree.propTypes = propTypes;
@@ -263,4 +263,41 @@ export interface MultiSelectTreeProps extends FormComponentProps {
263
263
  */
264
264
  listNoData?: React.ComponentType<MultiSelectTreeListNoDataProps>;
265
265
  tag?: React.ComponentType<MultiSelectTreeTagProps>;
266
+ /**
267
+ * Configures the `size` of the MultiSelectTree.
268
+ *
269
+ * The available options are:
270
+ * - small
271
+ * - medium
272
+ * - large
273
+ * - null&mdash;Does not set a size `className`.
274
+ *
275
+ * @default `medium`
276
+ */
277
+ size?: null | 'small' | 'medium' | 'large';
278
+ /**
279
+ * Configures the `roundness` of the MultiSelectTree.
280
+ *
281
+ * The available options are:
282
+ * - small
283
+ * - medium
284
+ * - large
285
+ * - full
286
+ * - null&mdash;Does not set a rounded `className`.
287
+ *
288
+ * @default `medium`
289
+ */
290
+ rounded?: null | 'small' | 'medium' | 'large' | 'full';
291
+ /**
292
+ * Configures the `fillMode` of the MultiSelectTree.
293
+ *
294
+ * The available options are:
295
+ * - solid
296
+ * - flat
297
+ * - outline
298
+ * - null&mdash;Does not set a fillMode `className`.
299
+ *
300
+ * @default `solid`
301
+ */
302
+ fillMode?: null | 'solid' | 'flat' | 'outline';
266
303
  }
@@ -26,7 +26,8 @@ var ClearButton = /** @class */ (function (_super) {
26
26
  }
27
27
  ClearButton.prototype.render = function () {
28
28
  var title = provideLocalizationService(this).toLanguageString(clear, messages[clear]);
29
- return (React.createElement("span", { className: "k-icon k-clear-value k-i-close", role: "button", onClick: this.props.onClick, onMouseDown: this.onMouseDown, tabIndex: -1, title: title, key: "clearbutton" }));
29
+ return (React.createElement("span", { className: "k-clear-value", role: "button", onClick: this.props.onClick, onMouseDown: this.onMouseDown, tabIndex: -1, title: title, key: "clearbutton" },
30
+ React.createElement("span", { className: "k-icon k-i-x" })));
30
31
  };
31
32
  return ClearButton;
32
33
  }(React.Component));
@@ -68,7 +68,7 @@ export default class DropDownBase {
68
68
  }>>;
69
69
  popupClass: PropTypes.Requireable<string>;
70
70
  className: PropTypes.Requireable<string>;
71
- appendTo: PropTypes.Requireable<any>;
71
+ appendTo: PropTypes.Requireable<PropTypes.ReactElementLike>;
72
72
  width: PropTypes.Requireable<string | number>;
73
73
  height: PropTypes.Requireable<string | number>;
74
74
  }>>;
@@ -112,7 +112,7 @@ export default class DropDownBase {
112
112
  }>>;
113
113
  popupClass: PropTypes.Requireable<string>;
114
114
  className: PropTypes.Requireable<string>;
115
- appendTo: PropTypes.Requireable<any>;
115
+ appendTo: PropTypes.Requireable<PropTypes.ReactElementLike>;
116
116
  width: PropTypes.Requireable<string | number>;
117
117
  height: PropTypes.Requireable<string | number>;
118
118
  }>>;
@@ -158,7 +158,6 @@ export default class DropDownBase {
158
158
  triggerOnPageChange(state: InternalState, skip: number, take: number): void;
159
159
  triggerPageChangeCornerItems(item: any, state: InternalState): void;
160
160
  scrollToVirtualItem: (virtual: VirtualizationSettings, selectedItemIndex: number) => void;
161
- renderScrollWrapper: (children: React.ReactNode, onScroll?: (event: React.UIEvent<HTMLDivElement>) => void) => {};
162
161
  renderScrollElement: () => JSX.Element;
163
162
  getPopupSettings(): DropDownsPopupSettings;
164
163
  }
@@ -26,6 +26,7 @@ var DropDownBase = /** @class */ (function () {
26
26
  this.handleItemClick = function (index, event) {
27
27
  var state = _this.initState();
28
28
  state.syntheticEvent = event;
29
+ event.stopPropagation();
29
30
  _this.component.handleItemSelect(index, state);
30
31
  _this.togglePopup(state);
31
32
  _this.applyState(state);
@@ -96,21 +97,6 @@ var DropDownBase = /** @class */ (function () {
96
97
  }
97
98
  window.setTimeout(function () { return vs.enabled = true; }, 10);
98
99
  };
99
- // Common rendering
100
- this.renderScrollWrapper = function (children, onScroll) {
101
- var popupSettings = _this.getPopupSettings();
102
- var vs = _this.vs;
103
- return vs.enabled ? (React.createElement("div", { onScroll: function (e) {
104
- vs.scrollHandler(e);
105
- if (onScroll) {
106
- onScroll.call(undefined, e);
107
- }
108
- }, ref: vs.scrollerRef, style: {
109
- height: popupSettings.height,
110
- overflowY: 'scroll'
111
- } }, children)) :
112
- (children);
113
- };
114
100
  this.renderScrollElement = function () {
115
101
  var vs = _this.vs;
116
102
  return vs.enabled && (React.createElement("div", { ref: function (element) { return vs.scrollElement = element; }, key: 'scrollElementKey' }));
@@ -233,7 +219,7 @@ var DropDownBase = /** @class */ (function () {
233
219
  })]),
234
220
  popupClass: PropTypes.string,
235
221
  className: PropTypes.string,
236
- appendTo: PropTypes.any,
222
+ appendTo: PropTypes.element,
237
223
  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
238
224
  height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
239
225
  }),
@@ -28,6 +28,7 @@ export interface ListProps {
28
28
  onMouseDown?: (event: React.MouseEvent<HTMLDivElement>) => void;
29
29
  onBlur?: (event: React.FocusEvent<HTMLDivElement>) => void;
30
30
  onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;
31
+ scroller?: any;
31
32
  }
32
33
  /**
33
34
  * @hidden
@@ -54,10 +54,11 @@ var List = /** @class */ (function (_super) {
54
54
  };
55
55
  List.prototype.render = function () {
56
56
  var localizationService = provideLocalizationService(this);
57
- var _a = this.props, id = _a.id, show = _a.show, wrapperCssClass = _a.wrapperCssClass, wrapperStyle = _a.wrapperStyle, listStyle = _a.listStyle, listRef = _a.listRef, wrapperRef = _a.wrapperRef, _b = _a.listClassName, listClassName = _b === void 0 ? 'k-list' : _b;
57
+ var _a = this.props, id = _a.id, show = _a.show, wrapperCssClass = _a.wrapperCssClass, wrapperStyle = _a.wrapperStyle, listStyle = _a.listStyle, listRef = _a.listRef, wrapperRef = _a.wrapperRef, _b = _a.listClassName, listClassName = _b === void 0 ? 'k-list-ul' : _b;
58
58
  var items = this.renderItems();
59
59
  return (items.length ? (React.createElement("div", { className: wrapperCssClass, style: wrapperStyle, ref: wrapperRef, onMouseDown: this.props.onMouseDown, onBlur: this.props.onBlur, onScroll: this.props.onScroll, unselectable: "on" },
60
- React.createElement("ul", { id: id, role: "listbox", "aria-hidden": !show ? true : undefined, className: listClassName + ' k-reset', ref: listRef, style: listStyle }, items))) : this.renderNoValueElement(localizationService));
60
+ React.createElement("ul", { id: id, role: "listbox", "aria-hidden": !show ? true : undefined, className: listClassName, ref: listRef, style: listStyle }, items),
61
+ this.props.scroller)) : this.renderNoValueElement(localizationService));
61
62
  };
62
63
  return List;
63
64
  }(React.Component));
@@ -25,8 +25,8 @@ var ListDefaultItem = /** @class */ (function (_super) {
25
25
  }
26
26
  ListDefaultItem.prototype.render = function () {
27
27
  var _a = this.props, selected = _a.selected, defaultItem = _a.defaultItem, textField = _a.textField;
28
- return (React.createElement("div", { onClick: this.props.onClick, onMouseDown: preventDefault, className: classNames('k-list-optionlabel', {
29
- 'k-state-selected': selected
28
+ return (React.createElement("div", { onClick: this.props.onClick, onMouseDown: preventDefault, style: { position: 'unset' }, className: classNames('k-list-optionlabel', {
29
+ 'k-selected': selected
30
30
  }) }, getItemValue(defaultItem, textField) || ''));
31
31
  };
32
32
  return ListDefaultItem;
@@ -4,8 +4,13 @@ import * as React from 'react';
4
4
  */
5
5
  export interface ListFilterProps {
6
6
  value?: string;
7
+ inputRef?: any;
8
+ tabIndex?: number;
7
9
  onChange?: React.ChangeEventHandler<HTMLInputElement>;
8
10
  onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;
11
+ size?: null | 'small' | 'medium' | 'large';
12
+ rounded?: null | 'small' | 'medium' | 'large' | 'full';
13
+ fillMode?: null | 'solid' | 'flat' | 'outline';
9
14
  }
10
15
  /**
11
16
  * @hidden