/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ import { default as PropTypes } from 'prop-types'; import { FormComponent, FormComponentValidity } from '@progress/kendo-react-common'; import { TagData } from './TagList.js'; import { default as DropDownBase } from '../common/DropDownBase.js'; import { MultiSelectProps } from './MultiSelectProps.js'; import { DropDownStateBase, InternalState, ActiveDescendant } from './../common/settings.js'; import * as React from 'react'; /** @hidden */ export interface MultiSelectState extends DropDownStateBase { selectedItems?: Array; focusedIndex?: number; focusedTag?: TagData; activedescendant?: ActiveDescendant; value?: Array; currentValue?: Array; windowWidth?: number; } /** @hidden */ export interface MultiSelectInternalState extends InternalState { data: MultiSelectState; } /** @hidden */ export declare class MultiSelectWithoutContext extends React.Component implements FormComponent { static displayName: string; /** @hidden */ static propTypes: { autoClose: PropTypes.Requireable; value: PropTypes.Requireable; defaultValue: PropTypes.Requireable; dataItemKey: PropTypes.Requireable; placeholder: PropTypes.Requireable; tags: PropTypes.Requireable<(PropTypes.InferProps<{ text: PropTypes.Requireable; data: PropTypes.Requireable; }> | null | undefined)[]>; tagRender: PropTypes.Requireable<(...args: any[]) => any>; id: PropTypes.Requireable; ariaLabelledBy: PropTypes.Requireable; ariaDescribedBy: PropTypes.Requireable; groupField: PropTypes.Requireable; list: PropTypes.Requireable; adaptive: PropTypes.Requireable; adaptiveTitle: PropTypes.Requireable; adaptiveSubtitle: PropTypes.Requireable; onCancel: PropTypes.Requireable<(...args: any[]) => any>; skipDisabledItems: PropTypes.Requireable; inputAttributes: PropTypes.Requireable; filterable: PropTypes.Requireable; filter: PropTypes.Requireable; virtual: PropTypes.Requireable; skip: PropTypes.Validator; total: PropTypes.Validator; }>>; onFilterChange: PropTypes.Requireable<(...args: any[]) => any>; onPageChange: PropTypes.Requireable<(...args: any[]) => any>; opened: PropTypes.Requireable; disabled: PropTypes.Requireable; dir: PropTypes.Requireable; tabIndex: PropTypes.Requireable; accessKey: PropTypes.Requireable; data: PropTypes.Requireable; textField: PropTypes.Requireable; className: PropTypes.Requireable; label: PropTypes.Requireable; loading: PropTypes.Requireable; popupSettings: PropTypes.Requireable; closeDuration: PropTypes.Requireable; }> | null | undefined>>; popupClass: PropTypes.Requireable; className: PropTypes.Requireable; appendTo: PropTypes.Requireable; width: PropTypes.Requireable>; height: PropTypes.Requireable>; }>>; onOpen: PropTypes.Requireable<(...args: any[]) => any>; onClose: PropTypes.Requireable<(...args: any[]) => any>; onFocus: PropTypes.Requireable<(...args: any[]) => any>; onBlur: PropTypes.Requireable<(...args: any[]) => any>; onChange: PropTypes.Requireable<(...args: any[]) => any>; itemRender: PropTypes.Requireable<(...args: any[]) => any>; listNoDataRender: PropTypes.Requireable<(...args: any[]) => any>; focusedItemIndex: PropTypes.Requireable<(...args: any[]) => any>; header: PropTypes.Requireable; footer: PropTypes.Requireable; }; /** @hidden */ static defaultProps: { autoClose: boolean; required: boolean; size: "small" | "medium" | "large" | undefined; rounded: "small" | "none" | "medium" | "large" | "full" | undefined; fillMode: "flat" | "solid" | "outline" | undefined; skipDisabledItems: boolean; prefix: undefined; suffix: undefined; popupSettings: { height: string; }; validityStyles: boolean; }; /** @hidden */ readonly state: MultiSelectState; private _element; private _valueItemsDuringOnChange; private get _inputId(); protected readonly base: DropDownBase; private readonly _tags; private _input; private _adaptiveInput; private _skipFocusEvent; private _lastSelectedOrDeslectedItemIndex; private itemHeight; protected scrollToFocused: boolean; private observerResize?; private get document(); private showLicenseWatermark; private readonly licenseMessage?; private KendoPasteSubscription?; private validate; constructor(props: MultiSelectProps); /** @hidden */ focus: () => void; /** @hidden */ get element(): HTMLSpanElement | null; /** @hidden */ get opened(): boolean; /** @hidden */ get tagsToRender(): Array; /** * The mobile mode of the MultiSelect. */ get mobileMode(): boolean; /** * Represents the value of the MultiSelect. */ get value(): Array; /** * Gets the `name` property of the MultiSelect. */ get name(): string | undefined; /** * Represents the validity state into which the MultiSelect is set. */ get validity(): FormComponentValidity; /** @hidden */ protected get required(): boolean; protected get validityStyles(): boolean; /** @hidden */ componentDidUpdate(prevProps: MultiSelectProps, prevState: MultiSelectState): void; /** @hidden */ componentDidMount(): void; /** @hidden */ componentWillUnmount(): void; private readonly handleKendoPasteValue; /** @hidden */ handleItemSelect: (index: number, state: MultiSelectInternalState) => void; /** @hidden */ onTagDelete: (itemsToRemove: Array, event: React.MouseEvent) => void; /** @hidden */ onNavigate(state: MultiSelectInternalState, keyCode: number, skipItems?: number): void; /** @hidden */ itemFocus: (index: number, state: MultiSelectInternalState) => void; /** @hidden */ render(): React.JSX.Element; private componentRef; private renderSearchBar; private searchbarRef; private onChangeHandler; private clearButtonClick; private onInputKeyDown; private onTagsNavigate; private triggerOnChange; private selectFocusedItem; private setItems; private getFocusedState; private listContainerContent; private renderListContainer; private renderAdaptiveListContainer; private closePopup; private onCancel; private renderList; private onScroll; private customItemSelect; private handleWrapperClick; private handleItemClick; private handleBlur; private handleFocus; private onPopupOpened; private onPopupClosed; private focusElement; private applyState; private setValidity; private calculateMedia; /** * Updates the state of the MultiSelect when the complex keyboard navigation that * includes key combinations with the Ctrl/Command, Shift, Home and End keys * * @param {Array} dataToSet Defines the array of new values that will be applied to the MultiSelect * @param {MultiSelectInternalState} state The current state of the MultiSelect */ private updateStateOnKeyboardNavigation; /** * Returns the last element that was selected or deselected. Needed for the keyboard navigation specifications * * @param {number} correction A correction is needed depending on if UP or DOWN key is pressed */ private getLastSelectedOrDeselectedIndex; } /** * Represents the PropsContext of the `MultiSelect` component. * Used for global configuration of all `MultiSelect` instances. * * For more information, refer to the [Dropdowns Props Context](https://www.telerik.com/kendo-react-ui/components/dropdowns/props-context) article. */ export declare const MultiSelectPropsContext: React.Context<(p: MultiSelectProps) => MultiSelectProps>; /** * Represent the `ref` of the MultiSelect component. */ export interface MultiSelectHandle extends Pick { /** * The MultiSelect element. */ element: HTMLSpanElement | null; /** * Gets the mobile mode of the MultiSelect component. */ mobileMode: boolean; /** * Gets the `name` property of the MultiSelect. */ name: string | undefined; /** * Gets whether the MultiSelect popup is open. */ opened: boolean; /** * The tags to render in the MultiSelect. */ tagsToRender: Array; /** * Represents the validity state into which the MultiSelect is set. */ validity: FormComponentValidity; /** * Represents the value of the MultiSelect. */ value: Array; } /** @hidden */ export type MultiSelect = MultiSelectHandle; /** * Represents the [KendoReact MultiSelect component](https://www.telerik.com/kendo-react-ui/components/dropdowns/multiselect). * * Accepts properties of type [MultiSelectProps](https://www.telerik.com/kendo-react-ui/components/dropdowns/api/multiselectprops). * Obtaining the `ref` returns an object of type [MultiSelectHandle](https://www.telerik.com/kendo-react-ui/components/dropdowns/api/multiselecthandle). * * @example * ```jsx * const App = () => { * const multiselect = React.useRef(null); * return ( *
* * *
* ); * } * ``` */ export declare const MultiSelect: React.ForwardRefExoticComponent>;