@progress/kendo-react-dropdowns 5.10.0-dev.202301111405 → 5.10.0-dev.202301121619
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.
- package/dist/cdn/js/kendo-react-dropdowns.js +1 -1
- package/dist/es/AutoComplete/AutoComplete.js +1 -1
- package/dist/es/ComboBox/ComboBox.d.ts +3 -1
- package/dist/es/ComboBox/ComboBox.js +7 -3
- package/dist/es/DropDownList/DropDownList.d.ts +5 -3
- package/dist/es/DropDownList/DropDownList.js +8 -4
- package/dist/es/MultiSelectTree/MultiSelectTree.js +5 -5
- package/dist/es/messages/index.d.ts +15 -0
- package/dist/es/messages/index.js +15 -0
- package/dist/es/package-metadata.js +1 -1
- package/dist/npm/AutoComplete/AutoComplete.js +1 -1
- package/dist/npm/ComboBox/ComboBox.d.ts +3 -1
- package/dist/npm/ComboBox/ComboBox.js +7 -3
- package/dist/npm/DropDownList/DropDownList.d.ts +5 -3
- package/dist/npm/DropDownList/DropDownList.js +7 -3
- package/dist/npm/MultiSelectTree/MultiSelectTree.js +5 -5
- package/dist/npm/messages/index.d.ts +15 -0
- package/dist/npm/messages/index.js +16 -1
- package/dist/npm/package-metadata.js +1 -1
- package/dist/systemjs/kendo-react-dropdowns.js +1 -1
- package/package.json +13 -13
|
@@ -370,7 +370,7 @@ var AutoCompleteWithoutContext = /** @class */ (function (_super) {
|
|
|
370
370
|
var _a = this.props, placeholder = _a.placeholder, tabIndex = _a.tabIndex, disabled = _a.disabled, readonly = _a.readonly;
|
|
371
371
|
var focused = this.state.focused;
|
|
372
372
|
var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
|
|
373
|
-
return (React.createElement(SearchBar, { id: id, placeholder: placeholder, tabIndex: tabIndex
|
|
373
|
+
return (React.createElement(SearchBar, { id: id, placeholder: placeholder, tabIndex: tabIndex, accessKey: this.props.accessKey, value: value, suggestedText: this._suggested, focused: focused, name: this.props.name, ref: function (searchbar) { return _this._input = searchbar && searchbar.input; }, onKeyDown: this.onInputKeyDown, onChange: this.onChangeHandler, onFocus: base.handleFocus, onBlur: this.handleBlur, disabled: disabled, readOnly: readonly, expanded: opened, owns: base.listBoxId, activedescendant: 'option-' + base.guid + '-' + this.focusedIndex(), role: "combobox", ariaLabelledBy: this.props.ariaLabelledBy, ariaDescribedBy: this.props.ariaDescribedBy, render: this.props.valueRender }));
|
|
374
374
|
};
|
|
375
375
|
AutoCompleteWithoutContext.prototype.renderListContainer = function () {
|
|
376
376
|
var _a;
|
|
@@ -81,7 +81,9 @@ export declare class ComboBoxWithoutContext extends React.Component<ComboBoxProp
|
|
|
81
81
|
onOpen: PropTypes.Requireable<(...args: any[]) => any>;
|
|
82
82
|
onClose: PropTypes.Requireable<(...args: any[]) => any>;
|
|
83
83
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
84
|
-
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
84
|
+
onBlur: PropTypes.Requireable<(...args: any[]) => any>; /**
|
|
85
|
+
* @hidden
|
|
86
|
+
*/
|
|
85
87
|
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
86
88
|
itemRender: PropTypes.Requireable<(...args: any[]) => any>;
|
|
87
89
|
listNoDataRender: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -38,6 +38,8 @@ import { packageMetadata } from '../package-metadata';
|
|
|
38
38
|
import ClearButton from '../common/ClearButton';
|
|
39
39
|
import { Button } from '@progress/kendo-react-buttons';
|
|
40
40
|
import { caretAltDownIcon } from '@progress/kendo-svg-icons';
|
|
41
|
+
import { messages, comboArrowBtnAriaLabelExpand, comboArrowBtnAriaLabelCollapse } from './../messages';
|
|
42
|
+
import { provideLocalizationService } from '@progress/kendo-react-intl';
|
|
41
43
|
var VALIDATION_MESSAGE = 'Please enter a valid value!';
|
|
42
44
|
var sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;
|
|
43
45
|
/** @hidden */
|
|
@@ -364,7 +366,9 @@ var ComboBoxWithoutContext = /** @class */ (function (_super) {
|
|
|
364
366
|
*/
|
|
365
367
|
ComboBoxWithoutContext.prototype.render = function () {
|
|
366
368
|
var _a;
|
|
367
|
-
var
|
|
369
|
+
var btnAriaLabelExpand = provideLocalizationService(this).toLanguageString(comboArrowBtnAriaLabelExpand, messages[comboArrowBtnAriaLabelExpand]);
|
|
370
|
+
var btnAriaLabelCollapse = provideLocalizationService(this).toLanguageString(comboArrowBtnAriaLabelCollapse, messages[comboArrowBtnAriaLabelCollapse]);
|
|
371
|
+
var _b = this.props, dir = _b.dir, disabled = _b.disabled, _c = _b.clearButton, clearButton = _c === void 0 ? ComboBoxWithoutContext.defaultProps.clearButton : _c, label = _b.label, textField = _b.textField, className = _b.className, style = _b.style, loading = _b.loading, iconClassName = _b.iconClassName, virtual = _b.virtual, size = _b.size, rounded = _b.rounded, fillMode = _b.fillMode, _d = _b.opened, opened = _d === void 0 ? this.state.opened : _d;
|
|
368
372
|
var isValid = !this.validityStyles || this.validity.valid;
|
|
369
373
|
var text = this.props.filter !== undefined ? this.props.filter : this.state.text;
|
|
370
374
|
var selectedItemText = getItemValue(this.value, textField);
|
|
@@ -391,7 +395,7 @@ var ComboBoxWithoutContext = /** @class */ (function (_super) {
|
|
|
391
395
|
this.renderSearchBar(inputText || '', id),
|
|
392
396
|
renderClearButton && !loading && React.createElement(ClearButton, { onClick: this.clearButtonClick, key: "clearbutton" }),
|
|
393
397
|
loading && React.createElement("span", { className: "k-icon k-i-loading k-input-loading-icon", key: "loading" }),
|
|
394
|
-
React.createElement(Button, { tabIndex: -1, type: "button", icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? caretAltDownIcon : this.props.svgIcon, iconClass: iconClassName, size: size, fillMode: fillMode, rounded: null, themeColor: 'base', className: "k-input-button", onClick: this.toggleBtnClick, onMouseDown: function (e) { return e.preventDefault(); } }),
|
|
398
|
+
React.createElement(Button, { tabIndex: -1, type: "button", "aria-label": opened ? btnAriaLabelCollapse : btnAriaLabelExpand, icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? caretAltDownIcon : this.props.svgIcon, iconClass: iconClassName, size: size, fillMode: fillMode, rounded: null, themeColor: 'base', className: "k-input-button", onClick: this.toggleBtnClick, onMouseDown: function (e) { return e.preventDefault(); } }),
|
|
395
399
|
this.renderListContainer()));
|
|
396
400
|
return label
|
|
397
401
|
? (React.createElement(FloatingLabel, { label: label, editorId: id, editorValue: inputText, editorValid: isValid, editorDisabled: disabled, style: { width: style ? style.width : undefined }, children: combobox }))
|
|
@@ -566,7 +570,7 @@ var ComboBoxWithoutContext = /** @class */ (function (_super) {
|
|
|
566
570
|
if (this._suggested && !areSame(this._valueOnDidUpdate, value, dataItemKey)) {
|
|
567
571
|
this._suggested = '';
|
|
568
572
|
}
|
|
569
|
-
return (React.createElement(SearchBar, { id: id, placeholder: placeholder, tabIndex: tabIndex
|
|
573
|
+
return (React.createElement(SearchBar, { id: id, placeholder: placeholder, tabIndex: tabIndex, accessKey: this.props.accessKey, value: text + this._suggested, suggestedText: this._suggested, ref: function (el) { return _this._input = el && el.input; }, onKeyDown: this.onInputKeyDown, onChange: this.inputOnChange, onFocus: this.base.handleFocus, onBlur: this.handleBlur, disabled: disabled, expanded: opened, owns: this.base.listBoxId, activedescendant: "option-".concat(this.base.guid, "-").concat(selectedIndex + virtual.skip), role: "combobox", ariaLabelledBy: this.props.ariaLabelledBy, ariaDescribedBy: this.props.ariaDescribedBy, render: this.props.valueRender }));
|
|
570
574
|
};
|
|
571
575
|
ComboBoxWithoutContext.prototype.triggerOnChange = function (item, state) {
|
|
572
576
|
var value = this.value;
|
|
@@ -28,9 +28,7 @@ export declare class DropDownListWithoutContext extends React.Component<DropDown
|
|
|
28
28
|
total: PropTypes.Validator<number>;
|
|
29
29
|
}>>;
|
|
30
30
|
onFilterChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
31
|
-
onPageChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
32
|
-
* @hidden
|
|
33
|
-
*/
|
|
31
|
+
onPageChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
34
32
|
opened: PropTypes.Requireable<boolean>;
|
|
35
33
|
disabled: PropTypes.Requireable<boolean>;
|
|
36
34
|
dir: PropTypes.Requireable<string>;
|
|
@@ -90,6 +88,9 @@ export declare class DropDownListWithoutContext extends React.Component<DropDown
|
|
|
90
88
|
size: "small" | "medium" | "large" | null | undefined;
|
|
91
89
|
rounded: "small" | "medium" | "full" | "large" | null | undefined;
|
|
92
90
|
fillMode: "flat" | "outline" | "solid" | null | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* @hidden
|
|
93
|
+
*/
|
|
93
94
|
popupSettings: {
|
|
94
95
|
height: string;
|
|
95
96
|
};
|
|
@@ -111,6 +112,7 @@ export declare class DropDownListWithoutContext extends React.Component<DropDown
|
|
|
111
112
|
private _filterInput;
|
|
112
113
|
private _valueDuringOnChange;
|
|
113
114
|
private _navigated;
|
|
115
|
+
private _inputId;
|
|
114
116
|
constructor(props: DropDownListProps);
|
|
115
117
|
/**
|
|
116
118
|
* @hidden
|
|
@@ -26,7 +26,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
26
26
|
};
|
|
27
27
|
import * as React from 'react';
|
|
28
28
|
import * as PropTypes from 'prop-types';
|
|
29
|
-
import { classNames, Keys, getTabIndex, createPropsContext, withPropsContext, kendoThemeMaps, IconWrap, svgIconPropType } from '@progress/kendo-react-common';
|
|
29
|
+
import { classNames, Keys, getTabIndex, createPropsContext, withPropsContext, kendoThemeMaps, IconWrap, svgIconPropType, guid } from '@progress/kendo-react-common';
|
|
30
30
|
import { FloatingLabel } from '@progress/kendo-react-labels';
|
|
31
31
|
import { caretAltDownIcon } from '@progress/kendo-svg-icons';
|
|
32
32
|
import ListContainer from '../common/ListContainer';
|
|
@@ -38,6 +38,8 @@ import { isPresent, getItemValue, sameCharsOnly, shuffleData, matchText, areSame
|
|
|
38
38
|
import { validatePackage } from '@progress/kendo-react-common';
|
|
39
39
|
import { packageMetadata } from '../package-metadata';
|
|
40
40
|
import { Button } from '@progress/kendo-react-buttons';
|
|
41
|
+
import { provideLocalizationService } from '@progress/kendo-react-intl';
|
|
42
|
+
import { dropDownListArrowBtnAriaLabel, messages } from '../messages';
|
|
41
43
|
var VALIDATION_MESSAGE = 'Please select a value from the list!';
|
|
42
44
|
var sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;
|
|
43
45
|
/**
|
|
@@ -58,6 +60,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
58
60
|
_this._skipFocusEvent = false;
|
|
59
61
|
_this._filterInput = null;
|
|
60
62
|
_this._navigated = false;
|
|
63
|
+
_this._inputId = guid();
|
|
61
64
|
/**
|
|
62
65
|
* @hidden
|
|
63
66
|
*/
|
|
@@ -488,6 +491,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
488
491
|
DropDownListWithoutContext.prototype.render = function () {
|
|
489
492
|
var _a;
|
|
490
493
|
var _this = this;
|
|
494
|
+
var btnAriaLabel = provideLocalizationService(this).toLanguageString(dropDownListArrowBtnAriaLabel, messages[dropDownListArrowBtnAriaLabel]);
|
|
491
495
|
var _b = this.props, style = _b.style, className = _b.className, label = _b.label, dir = _b.dir, virtual = _b.virtual, size = _b.size, rounded = _b.rounded, fillMode = _b.fillMode;
|
|
492
496
|
var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
|
|
493
497
|
var value = this.value;
|
|
@@ -504,7 +508,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
504
508
|
var _c = this.props, dataItemKey = _c.dataItemKey, _d = _c.data, data = _d === void 0 ? [] : _d, disabled = _c.disabled, tabIndex = _c.tabIndex, loading = _c.loading, iconClassName = _c.iconClassName, valueRender = _c.valueRender;
|
|
505
509
|
var focused = this.state.focused;
|
|
506
510
|
var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });
|
|
507
|
-
var valueDefaultRendering = (React.createElement("span", { className: "k-input-inner" },
|
|
511
|
+
var valueDefaultRendering = (React.createElement("span", { id: this._inputId, className: "k-input-inner" },
|
|
508
512
|
React.createElement("span", { className: "k-input-value-text" }, text)));
|
|
509
513
|
var valueElement = valueRender !== undefined ?
|
|
510
514
|
valueRender.call(undefined, valueDefaultRendering, value) : valueDefaultRendering;
|
|
@@ -519,10 +523,10 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
519
523
|
_a['k-required'] = this.required,
|
|
520
524
|
_a)), style: !label
|
|
521
525
|
? style
|
|
522
|
-
: __assign(__assign({}, style), { width: undefined }), dir: dir, onMouseDown: opened ? preventDefaultNonInputs : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, tabIndex: getTabIndex(tabIndex, disabled), accessKey: this.props.accessKey, onKeyDown: this.handleKeyDown, onKeyPress: this.handleKeyPress, onClick: disabled ? undefined : this.handleWrapperClick, role: 'combobox', "aria-required": this.required, "aria-disabled": disabled || undefined, "aria-haspopup": 'listbox', "aria-expanded": opened || false, "aria-owns": this.base.listBoxId, "aria-activedescendant": opened ? ('option-' + this.base.guid + '-' + (selectedIndex + (virtual ? virtual.skip : 0))) : undefined, "aria-label": this.props.ariaLabel || this.props.label, "aria-labelledby": this.props.ariaLabelledBy, "aria-describedby": this.props.ariaDescribedBy, id: this.props.id, title: this.props.title },
|
|
526
|
+
: __assign(__assign({}, style), { width: undefined }), dir: dir, onMouseDown: opened ? preventDefaultNonInputs : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, tabIndex: getTabIndex(tabIndex, disabled), accessKey: this.props.accessKey, onKeyDown: this.handleKeyDown, onKeyPress: this.handleKeyPress, onClick: disabled ? undefined : this.handleWrapperClick, role: 'combobox', "aria-required": this.required, "aria-disabled": disabled || undefined, "aria-haspopup": 'listbox', "aria-expanded": opened || false, "aria-owns": this.base.listBoxId, "aria-activedescendant": opened ? ('option-' + this.base.guid + '-' + (selectedIndex + (virtual ? virtual.skip : 0))) : undefined, "aria-label": this.props.ariaLabel || this.props.label, "aria-labelledby": this.props.ariaLabelledBy, "aria-describedby": this.props.ariaDescribedBy || this._inputId, id: this.props.id, title: this.props.title },
|
|
523
527
|
valueElement,
|
|
524
528
|
loading && React.createElement(IconWrap, { className: "k-input-loading-icon", name: 'loading' }),
|
|
525
|
-
React.createElement(Button, { tabIndex: -1, type: "button", "aria-hidden": true, size: size, fillMode: fillMode, iconClass: iconClassName, className: "k-input-button", themeColor: 'base', icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? caretAltDownIcon : this.props.svgIcon, onMouseDown: function (e) { return _this.state.focused && e.preventDefault(); } }),
|
|
529
|
+
React.createElement(Button, { tabIndex: -1, type: "button", "aria-label": btnAriaLabel, "aria-hidden": true, size: size, fillMode: fillMode, iconClass: iconClassName, className: "k-input-button", themeColor: 'base', icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? caretAltDownIcon : this.props.svgIcon, onMouseDown: function (e) { return _this.state.focused && e.preventDefault(); } }),
|
|
526
530
|
this.dummySelect(value),
|
|
527
531
|
this.renderListContainer()));
|
|
528
532
|
return label ? (React.createElement(FloatingLabel, { label: label, editorValue: text, editorValid: isValid, editorDisabled: this.props.disabled, style: { width: style ? style.width : undefined }, children: dropdownlist })) : dropdownlist;
|
|
@@ -399,12 +399,12 @@ export var MultiSelectTree = React.forwardRef(function (directProps, ref) {
|
|
|
399
399
|
_a['k-loading'] = props.loading,
|
|
400
400
|
_a['k-required'] = required,
|
|
401
401
|
_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": "true", "aria-expanded": isOpen, "aria-disabled": disabled, "aria-label": label, "aria-labelledby": props.ariaLabelledBy, "aria-describedby": props.ariaDescribedBy, onClick: disabled ? undefined : onWrapperClick },
|
|
402
|
-
|
|
402
|
+
React.createElement("div", { id: 'tagslist-' + id, className: classNames('k-input-values k-chip-list k-selection-multiple', (_b = {},
|
|
403
403
|
_b["k-chip-list-".concat(sizeMap[size] || size)] = size,
|
|
404
|
-
_b)),
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
404
|
+
_b)) }, tagsToRenderRef.current.length > 0 && (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 }))),
|
|
405
|
+
!hasValue &&
|
|
406
|
+
React.createElement("span", { className: "k-input-inner", role: 'combobox', tabIndex: tabIndex, "aria-expanded": isOpen, "aria-describedby": 'tagslist-' + id, "aria-label": props.ariaLabelledBy },
|
|
407
|
+
React.createElement("span", { className: "k-input-value-text" }, "\u00A0")),
|
|
408
408
|
props.loading && React.createElement(IconWrap, { className: "k-input-loading-icon", name: 'loading' }),
|
|
409
409
|
hasValue && !disabled && React.createElement(ClearButton, { onClick: onClear }),
|
|
410
410
|
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%' } },
|
|
@@ -6,10 +6,25 @@ export declare const nodata = "dropdowns.nodata";
|
|
|
6
6
|
* @hidden
|
|
7
7
|
*/
|
|
8
8
|
export declare const clear = "dropdowns.clear";
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export declare const comboArrowBtnAriaLabelExpand = "dropdowns.comboArrowBtnAriaLabelExpand";
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export declare const comboArrowBtnAriaLabelCollapse = "dropdowns.comboArrowBtnAriaLabelCollapse";
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
export declare const dropDownListArrowBtnAriaLabel = "dropdowns.dropDownListArrowBtnAriaLabel";
|
|
9
21
|
/**
|
|
10
22
|
* @hidden
|
|
11
23
|
*/
|
|
12
24
|
export declare const messages: {
|
|
13
25
|
"dropdowns.clear": string;
|
|
14
26
|
"dropdowns.nodata": string;
|
|
27
|
+
"dropdowns.comboArrowBtnAriaLabelExpand": string;
|
|
28
|
+
"dropdowns.comboArrowBtnAriaLabelCollapse": string;
|
|
29
|
+
"dropdowns.dropDownListArrowBtnAriaLabel": string;
|
|
15
30
|
};
|
|
@@ -7,10 +7,25 @@ export var nodata = 'dropdowns.nodata';
|
|
|
7
7
|
* @hidden
|
|
8
8
|
*/
|
|
9
9
|
export var clear = 'dropdowns.clear';
|
|
10
|
+
/**
|
|
11
|
+
* @hidden
|
|
12
|
+
*/
|
|
13
|
+
export var comboArrowBtnAriaLabelExpand = 'dropdowns.comboArrowBtnAriaLabelExpand';
|
|
14
|
+
/**
|
|
15
|
+
* @hidden
|
|
16
|
+
*/
|
|
17
|
+
export var comboArrowBtnAriaLabelCollapse = 'dropdowns.comboArrowBtnAriaLabelCollapse';
|
|
18
|
+
/**
|
|
19
|
+
* @hidden
|
|
20
|
+
*/
|
|
21
|
+
export var dropDownListArrowBtnAriaLabel = 'dropdowns.dropDownListArrowBtnAriaLabel';
|
|
10
22
|
/**
|
|
11
23
|
* @hidden
|
|
12
24
|
*/
|
|
13
25
|
export var messages = (_a = {},
|
|
14
26
|
_a[clear] = 'clear',
|
|
15
27
|
_a[nodata] = 'NO DATA FOUND.',
|
|
28
|
+
_a[comboArrowBtnAriaLabelExpand] = 'expand combobox',
|
|
29
|
+
_a[comboArrowBtnAriaLabelCollapse] = 'collapse combobox',
|
|
30
|
+
_a[dropDownListArrowBtnAriaLabel] = 'select',
|
|
16
31
|
_a);
|
|
@@ -5,7 +5,7 @@ export var packageMetadata = {
|
|
|
5
5
|
name: '@progress/kendo-react-dropdowns',
|
|
6
6
|
productName: 'KendoReact',
|
|
7
7
|
productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],
|
|
8
|
-
publishDate:
|
|
8
|
+
publishDate: 1673538574,
|
|
9
9
|
version: '',
|
|
10
10
|
licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'
|
|
11
11
|
};
|
|
@@ -373,7 +373,7 @@ var AutoCompleteWithoutContext = /** @class */ (function (_super) {
|
|
|
373
373
|
var _a = this.props, placeholder = _a.placeholder, tabIndex = _a.tabIndex, disabled = _a.disabled, readonly = _a.readonly;
|
|
374
374
|
var focused = this.state.focused;
|
|
375
375
|
var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
|
|
376
|
-
return (React.createElement(SearchBar_1.default, { id: id, placeholder: placeholder, tabIndex: tabIndex
|
|
376
|
+
return (React.createElement(SearchBar_1.default, { id: id, placeholder: placeholder, tabIndex: tabIndex, accessKey: this.props.accessKey, value: value, suggestedText: this._suggested, focused: focused, name: this.props.name, ref: function (searchbar) { return _this._input = searchbar && searchbar.input; }, onKeyDown: this.onInputKeyDown, onChange: this.onChangeHandler, onFocus: base.handleFocus, onBlur: this.handleBlur, disabled: disabled, readOnly: readonly, expanded: opened, owns: base.listBoxId, activedescendant: 'option-' + base.guid + '-' + this.focusedIndex(), role: "combobox", ariaLabelledBy: this.props.ariaLabelledBy, ariaDescribedBy: this.props.ariaDescribedBy, render: this.props.valueRender }));
|
|
377
377
|
};
|
|
378
378
|
AutoCompleteWithoutContext.prototype.renderListContainer = function () {
|
|
379
379
|
var _a;
|
|
@@ -81,7 +81,9 @@ export declare class ComboBoxWithoutContext extends React.Component<ComboBoxProp
|
|
|
81
81
|
onOpen: PropTypes.Requireable<(...args: any[]) => any>;
|
|
82
82
|
onClose: PropTypes.Requireable<(...args: any[]) => any>;
|
|
83
83
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
84
|
-
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
84
|
+
onBlur: PropTypes.Requireable<(...args: any[]) => any>; /**
|
|
85
|
+
* @hidden
|
|
86
|
+
*/
|
|
85
87
|
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
86
88
|
itemRender: PropTypes.Requireable<(...args: any[]) => any>;
|
|
87
89
|
listNoDataRender: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -41,6 +41,8 @@ var package_metadata_1 = require("../package-metadata");
|
|
|
41
41
|
var ClearButton_1 = require("../common/ClearButton");
|
|
42
42
|
var kendo_react_buttons_1 = require("@progress/kendo-react-buttons");
|
|
43
43
|
var kendo_svg_icons_1 = require("@progress/kendo-svg-icons");
|
|
44
|
+
var messages_1 = require("./../messages");
|
|
45
|
+
var kendo_react_intl_1 = require("@progress/kendo-react-intl");
|
|
44
46
|
var VALIDATION_MESSAGE = 'Please enter a valid value!';
|
|
45
47
|
var sizeMap = kendo_react_common_1.kendoThemeMaps.sizeMap, roundedMap = kendo_react_common_1.kendoThemeMaps.roundedMap;
|
|
46
48
|
/** @hidden */
|
|
@@ -367,7 +369,9 @@ var ComboBoxWithoutContext = /** @class */ (function (_super) {
|
|
|
367
369
|
*/
|
|
368
370
|
ComboBoxWithoutContext.prototype.render = function () {
|
|
369
371
|
var _a;
|
|
370
|
-
var
|
|
372
|
+
var btnAriaLabelExpand = (0, kendo_react_intl_1.provideLocalizationService)(this).toLanguageString(messages_1.comboArrowBtnAriaLabelExpand, messages_1.messages[messages_1.comboArrowBtnAriaLabelExpand]);
|
|
373
|
+
var btnAriaLabelCollapse = (0, kendo_react_intl_1.provideLocalizationService)(this).toLanguageString(messages_1.comboArrowBtnAriaLabelCollapse, messages_1.messages[messages_1.comboArrowBtnAriaLabelCollapse]);
|
|
374
|
+
var _b = this.props, dir = _b.dir, disabled = _b.disabled, _c = _b.clearButton, clearButton = _c === void 0 ? ComboBoxWithoutContext.defaultProps.clearButton : _c, label = _b.label, textField = _b.textField, className = _b.className, style = _b.style, loading = _b.loading, iconClassName = _b.iconClassName, virtual = _b.virtual, size = _b.size, rounded = _b.rounded, fillMode = _b.fillMode, _d = _b.opened, opened = _d === void 0 ? this.state.opened : _d;
|
|
371
375
|
var isValid = !this.validityStyles || this.validity.valid;
|
|
372
376
|
var text = this.props.filter !== undefined ? this.props.filter : this.state.text;
|
|
373
377
|
var selectedItemText = (0, utils_1.getItemValue)(this.value, textField);
|
|
@@ -394,7 +398,7 @@ var ComboBoxWithoutContext = /** @class */ (function (_super) {
|
|
|
394
398
|
this.renderSearchBar(inputText || '', id),
|
|
395
399
|
renderClearButton && !loading && React.createElement(ClearButton_1.default, { onClick: this.clearButtonClick, key: "clearbutton" }),
|
|
396
400
|
loading && React.createElement("span", { className: "k-icon k-i-loading k-input-loading-icon", key: "loading" }),
|
|
397
|
-
React.createElement(kendo_react_buttons_1.Button, { tabIndex: -1, type: "button", icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? kendo_svg_icons_1.caretAltDownIcon : this.props.svgIcon, iconClass: iconClassName, size: size, fillMode: fillMode, rounded: null, themeColor: 'base', className: "k-input-button", onClick: this.toggleBtnClick, onMouseDown: function (e) { return e.preventDefault(); } }),
|
|
401
|
+
React.createElement(kendo_react_buttons_1.Button, { tabIndex: -1, type: "button", "aria-label": opened ? btnAriaLabelCollapse : btnAriaLabelExpand, icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? kendo_svg_icons_1.caretAltDownIcon : this.props.svgIcon, iconClass: iconClassName, size: size, fillMode: fillMode, rounded: null, themeColor: 'base', className: "k-input-button", onClick: this.toggleBtnClick, onMouseDown: function (e) { return e.preventDefault(); } }),
|
|
398
402
|
this.renderListContainer()));
|
|
399
403
|
return label
|
|
400
404
|
? (React.createElement(kendo_react_labels_1.FloatingLabel, { label: label, editorId: id, editorValue: inputText, editorValid: isValid, editorDisabled: disabled, style: { width: style ? style.width : undefined }, children: combobox }))
|
|
@@ -569,7 +573,7 @@ var ComboBoxWithoutContext = /** @class */ (function (_super) {
|
|
|
569
573
|
if (this._suggested && !(0, utils_1.areSame)(this._valueOnDidUpdate, value, dataItemKey)) {
|
|
570
574
|
this._suggested = '';
|
|
571
575
|
}
|
|
572
|
-
return (React.createElement(SearchBar_1.default, { id: id, placeholder: placeholder, tabIndex: tabIndex
|
|
576
|
+
return (React.createElement(SearchBar_1.default, { id: id, placeholder: placeholder, tabIndex: tabIndex, accessKey: this.props.accessKey, value: text + this._suggested, suggestedText: this._suggested, ref: function (el) { return _this._input = el && el.input; }, onKeyDown: this.onInputKeyDown, onChange: this.inputOnChange, onFocus: this.base.handleFocus, onBlur: this.handleBlur, disabled: disabled, expanded: opened, owns: this.base.listBoxId, activedescendant: "option-".concat(this.base.guid, "-").concat(selectedIndex + virtual.skip), role: "combobox", ariaLabelledBy: this.props.ariaLabelledBy, ariaDescribedBy: this.props.ariaDescribedBy, render: this.props.valueRender }));
|
|
573
577
|
};
|
|
574
578
|
ComboBoxWithoutContext.prototype.triggerOnChange = function (item, state) {
|
|
575
579
|
var value = this.value;
|
|
@@ -28,9 +28,7 @@ export declare class DropDownListWithoutContext extends React.Component<DropDown
|
|
|
28
28
|
total: PropTypes.Validator<number>;
|
|
29
29
|
}>>;
|
|
30
30
|
onFilterChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
31
|
-
onPageChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
32
|
-
* @hidden
|
|
33
|
-
*/
|
|
31
|
+
onPageChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
34
32
|
opened: PropTypes.Requireable<boolean>;
|
|
35
33
|
disabled: PropTypes.Requireable<boolean>;
|
|
36
34
|
dir: PropTypes.Requireable<string>;
|
|
@@ -90,6 +88,9 @@ export declare class DropDownListWithoutContext extends React.Component<DropDown
|
|
|
90
88
|
size: "small" | "medium" | "large" | null | undefined;
|
|
91
89
|
rounded: "small" | "medium" | "full" | "large" | null | undefined;
|
|
92
90
|
fillMode: "flat" | "outline" | "solid" | null | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* @hidden
|
|
93
|
+
*/
|
|
93
94
|
popupSettings: {
|
|
94
95
|
height: string;
|
|
95
96
|
};
|
|
@@ -111,6 +112,7 @@ export declare class DropDownListWithoutContext extends React.Component<DropDown
|
|
|
111
112
|
private _filterInput;
|
|
112
113
|
private _valueDuringOnChange;
|
|
113
114
|
private _navigated;
|
|
115
|
+
private _inputId;
|
|
114
116
|
constructor(props: DropDownListProps);
|
|
115
117
|
/**
|
|
116
118
|
* @hidden
|
|
@@ -41,6 +41,8 @@ var utils_1 = require("../common/utils");
|
|
|
41
41
|
var kendo_react_common_2 = require("@progress/kendo-react-common");
|
|
42
42
|
var package_metadata_1 = require("../package-metadata");
|
|
43
43
|
var kendo_react_buttons_1 = require("@progress/kendo-react-buttons");
|
|
44
|
+
var kendo_react_intl_1 = require("@progress/kendo-react-intl");
|
|
45
|
+
var messages_1 = require("../messages");
|
|
44
46
|
var VALIDATION_MESSAGE = 'Please select a value from the list!';
|
|
45
47
|
var sizeMap = kendo_react_common_1.kendoThemeMaps.sizeMap, roundedMap = kendo_react_common_1.kendoThemeMaps.roundedMap;
|
|
46
48
|
/**
|
|
@@ -61,6 +63,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
61
63
|
_this._skipFocusEvent = false;
|
|
62
64
|
_this._filterInput = null;
|
|
63
65
|
_this._navigated = false;
|
|
66
|
+
_this._inputId = (0, kendo_react_common_1.guid)();
|
|
64
67
|
/**
|
|
65
68
|
* @hidden
|
|
66
69
|
*/
|
|
@@ -491,6 +494,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
491
494
|
DropDownListWithoutContext.prototype.render = function () {
|
|
492
495
|
var _a;
|
|
493
496
|
var _this = this;
|
|
497
|
+
var btnAriaLabel = (0, kendo_react_intl_1.provideLocalizationService)(this).toLanguageString(messages_1.dropDownListArrowBtnAriaLabel, messages_1.messages[messages_1.dropDownListArrowBtnAriaLabel]);
|
|
494
498
|
var _b = this.props, style = _b.style, className = _b.className, label = _b.label, dir = _b.dir, virtual = _b.virtual, size = _b.size, rounded = _b.rounded, fillMode = _b.fillMode;
|
|
495
499
|
var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;
|
|
496
500
|
var value = this.value;
|
|
@@ -507,7 +511,7 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
507
511
|
var _c = this.props, dataItemKey = _c.dataItemKey, _d = _c.data, data = _d === void 0 ? [] : _d, disabled = _c.disabled, tabIndex = _c.tabIndex, loading = _c.loading, iconClassName = _c.iconClassName, valueRender = _c.valueRender;
|
|
508
512
|
var focused = this.state.focused;
|
|
509
513
|
var selectedIndex = data.findIndex(function (i) { return (0, utils_1.areSame)(i, value, dataItemKey); });
|
|
510
|
-
var valueDefaultRendering = (React.createElement("span", { className: "k-input-inner" },
|
|
514
|
+
var valueDefaultRendering = (React.createElement("span", { id: this._inputId, className: "k-input-inner" },
|
|
511
515
|
React.createElement("span", { className: "k-input-value-text" }, text)));
|
|
512
516
|
var valueElement = valueRender !== undefined ?
|
|
513
517
|
valueRender.call(undefined, valueDefaultRendering, value) : valueDefaultRendering;
|
|
@@ -522,10 +526,10 @@ var DropDownListWithoutContext = /** @class */ (function (_super) {
|
|
|
522
526
|
_a['k-required'] = this.required,
|
|
523
527
|
_a)), style: !label
|
|
524
528
|
? style
|
|
525
|
-
: __assign(__assign({}, style), { width: undefined }), dir: dir, onMouseDown: opened ? utils_1.preventDefaultNonInputs : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, tabIndex: (0, kendo_react_common_1.getTabIndex)(tabIndex, disabled), accessKey: this.props.accessKey, onKeyDown: this.handleKeyDown, onKeyPress: this.handleKeyPress, onClick: disabled ? undefined : this.handleWrapperClick, role: 'combobox', "aria-required": this.required, "aria-disabled": disabled || undefined, "aria-haspopup": 'listbox', "aria-expanded": opened || false, "aria-owns": this.base.listBoxId, "aria-activedescendant": opened ? ('option-' + this.base.guid + '-' + (selectedIndex + (virtual ? virtual.skip : 0))) : undefined, "aria-label": this.props.ariaLabel || this.props.label, "aria-labelledby": this.props.ariaLabelledBy, "aria-describedby": this.props.ariaDescribedBy, id: this.props.id, title: this.props.title },
|
|
529
|
+
: __assign(__assign({}, style), { width: undefined }), dir: dir, onMouseDown: opened ? utils_1.preventDefaultNonInputs : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, tabIndex: (0, kendo_react_common_1.getTabIndex)(tabIndex, disabled), accessKey: this.props.accessKey, onKeyDown: this.handleKeyDown, onKeyPress: this.handleKeyPress, onClick: disabled ? undefined : this.handleWrapperClick, role: 'combobox', "aria-required": this.required, "aria-disabled": disabled || undefined, "aria-haspopup": 'listbox', "aria-expanded": opened || false, "aria-owns": this.base.listBoxId, "aria-activedescendant": opened ? ('option-' + this.base.guid + '-' + (selectedIndex + (virtual ? virtual.skip : 0))) : undefined, "aria-label": this.props.ariaLabel || this.props.label, "aria-labelledby": this.props.ariaLabelledBy, "aria-describedby": this.props.ariaDescribedBy || this._inputId, id: this.props.id, title: this.props.title },
|
|
526
530
|
valueElement,
|
|
527
531
|
loading && React.createElement(kendo_react_common_1.IconWrap, { className: "k-input-loading-icon", name: 'loading' }),
|
|
528
|
-
React.createElement(kendo_react_buttons_1.Button, { tabIndex: -1, type: "button", "aria-hidden": true, size: size, fillMode: fillMode, iconClass: iconClassName, className: "k-input-button", themeColor: 'base', icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? kendo_svg_icons_1.caretAltDownIcon : this.props.svgIcon, onMouseDown: function (e) { return _this.state.focused && e.preventDefault(); } }),
|
|
532
|
+
React.createElement(kendo_react_buttons_1.Button, { tabIndex: -1, type: "button", "aria-label": btnAriaLabel, "aria-hidden": true, size: size, fillMode: fillMode, iconClass: iconClassName, className: "k-input-button", themeColor: 'base', icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? kendo_svg_icons_1.caretAltDownIcon : this.props.svgIcon, onMouseDown: function (e) { return _this.state.focused && e.preventDefault(); } }),
|
|
529
533
|
this.dummySelect(value),
|
|
530
534
|
this.renderListContainer()));
|
|
531
535
|
return label ? (React.createElement(kendo_react_labels_1.FloatingLabel, { label: label, editorValue: text, editorValid: isValid, editorDisabled: this.props.disabled, style: { width: style ? style.width : undefined }, children: dropdownlist })) : dropdownlist;
|
|
@@ -402,12 +402,12 @@ exports.MultiSelectTree = React.forwardRef(function (directProps, ref) {
|
|
|
402
402
|
_a['k-loading'] = props.loading,
|
|
403
403
|
_a['k-required'] = required,
|
|
404
404
|
_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": "true", "aria-expanded": isOpen, "aria-disabled": disabled, "aria-label": label, "aria-labelledby": props.ariaLabelledBy, "aria-describedby": props.ariaDescribedBy, onClick: disabled ? undefined : onWrapperClick },
|
|
405
|
-
|
|
405
|
+
React.createElement("div", { id: 'tagslist-' + id, className: (0, kendo_react_common_1.classNames)('k-input-values k-chip-list k-selection-multiple', (_b = {},
|
|
406
406
|
_b["k-chip-list-".concat(sizeMap[size] || size)] = size,
|
|
407
|
-
_b)),
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
407
|
+
_b)) }, tagsToRenderRef.current.length > 0 && (React.createElement(TagList_1.default, { tag: props.tag, onTagDelete: onTagDelete, data: tagsToRenderRef.current, guid: id, focused: focusedTagState ? tagsToRenderRef.current.find(function (t) { return (0, utils_1.matchTags)(t, focusedTagState, dataItemKey); }) : undefined, size: size }))),
|
|
408
|
+
!hasValue &&
|
|
409
|
+
React.createElement("span", { className: "k-input-inner", role: 'combobox', tabIndex: tabIndex, "aria-expanded": isOpen, "aria-describedby": 'tagslist-' + id, "aria-label": props.ariaLabelledBy },
|
|
410
|
+
React.createElement("span", { className: "k-input-value-text" }, "\u00A0")),
|
|
411
411
|
props.loading && React.createElement(kendo_react_common_1.IconWrap, { className: "k-input-loading-icon", name: 'loading' }),
|
|
412
412
|
hasValue && !disabled && React.createElement(ClearButton_1.default, { onClick: onClear }),
|
|
413
413
|
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%' } },
|
|
@@ -6,10 +6,25 @@ export declare const nodata = "dropdowns.nodata";
|
|
|
6
6
|
* @hidden
|
|
7
7
|
*/
|
|
8
8
|
export declare const clear = "dropdowns.clear";
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export declare const comboArrowBtnAriaLabelExpand = "dropdowns.comboArrowBtnAriaLabelExpand";
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export declare const comboArrowBtnAriaLabelCollapse = "dropdowns.comboArrowBtnAriaLabelCollapse";
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
export declare const dropDownListArrowBtnAriaLabel = "dropdowns.dropDownListArrowBtnAriaLabel";
|
|
9
21
|
/**
|
|
10
22
|
* @hidden
|
|
11
23
|
*/
|
|
12
24
|
export declare const messages: {
|
|
13
25
|
"dropdowns.clear": string;
|
|
14
26
|
"dropdowns.nodata": string;
|
|
27
|
+
"dropdowns.comboArrowBtnAriaLabelExpand": string;
|
|
28
|
+
"dropdowns.comboArrowBtnAriaLabelCollapse": string;
|
|
29
|
+
"dropdowns.dropDownListArrowBtnAriaLabel": string;
|
|
15
30
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.messages = exports.clear = exports.nodata = void 0;
|
|
4
|
+
exports.messages = exports.dropDownListArrowBtnAriaLabel = exports.comboArrowBtnAriaLabelCollapse = exports.comboArrowBtnAriaLabelExpand = exports.clear = exports.nodata = void 0;
|
|
5
5
|
/**
|
|
6
6
|
* @hidden
|
|
7
7
|
*/
|
|
@@ -10,10 +10,25 @@ exports.nodata = 'dropdowns.nodata';
|
|
|
10
10
|
* @hidden
|
|
11
11
|
*/
|
|
12
12
|
exports.clear = 'dropdowns.clear';
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
exports.comboArrowBtnAriaLabelExpand = 'dropdowns.comboArrowBtnAriaLabelExpand';
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
exports.comboArrowBtnAriaLabelCollapse = 'dropdowns.comboArrowBtnAriaLabelCollapse';
|
|
21
|
+
/**
|
|
22
|
+
* @hidden
|
|
23
|
+
*/
|
|
24
|
+
exports.dropDownListArrowBtnAriaLabel = 'dropdowns.dropDownListArrowBtnAriaLabel';
|
|
13
25
|
/**
|
|
14
26
|
* @hidden
|
|
15
27
|
*/
|
|
16
28
|
exports.messages = (_a = {},
|
|
17
29
|
_a[exports.clear] = 'clear',
|
|
18
30
|
_a[exports.nodata] = 'NO DATA FOUND.',
|
|
31
|
+
_a[exports.comboArrowBtnAriaLabelExpand] = 'expand combobox',
|
|
32
|
+
_a[exports.comboArrowBtnAriaLabelCollapse] = 'collapse combobox',
|
|
33
|
+
_a[exports.dropDownListArrowBtnAriaLabel] = 'select',
|
|
19
34
|
_a);
|
|
@@ -8,7 +8,7 @@ exports.packageMetadata = {
|
|
|
8
8
|
name: '@progress/kendo-react-dropdowns',
|
|
9
9
|
productName: 'KendoReact',
|
|
10
10
|
productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],
|
|
11
|
-
publishDate:
|
|
11
|
+
publishDate: 1673538574,
|
|
12
12
|
version: '',
|
|
13
13
|
licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'
|
|
14
14
|
};
|