///
import { EmitType, ModuleDeclaration } from '@syncfusion/ej2-base';
import { KeyboardEventArgs } from '@syncfusion/ej2-base';
import { IInput, InputObject, FloatLabelType } from '@syncfusion/ej2-inputs';
import { DropDownBase, SelectEventArgs, FilteringEventArgs, PopupEventArgs } from '../drop-down-base/drop-down-base';
import { FieldSettingsModel } from '../drop-down-base/drop-down-base-model';
import { DropDownListModel } from '../drop-down-list';
import { DataManager, Query } from '@syncfusion/ej2-data';
export interface ChangeEventArgs extends SelectEventArgs {
/**
* Returns the selected value
*
* @isGenericType true
*/
value: number | string | boolean | object;
/**
* Returns the previous selected list item
*/
previousItem: HTMLLIElement;
/**
* Returns the previous selected item as JSON Object from the data source.
*
*/
previousItemData: FieldSettingsModel;
/**
* Returns the root element of the component.
*/
element: HTMLElement;
/**
* Specifies the original event arguments.
*/
event: MouseEvent | KeyboardEvent | TouchEvent;
/**
* Specifies the original event arguments.
*/
e: MouseEvent | KeyboardEvent | TouchEvent;
/**
* Illustrates whether the current action needs to be prevented or not.
*/
cancel?: boolean;
}
export interface GeneratedData {
[key: string]: Object;
}
export declare const dropDownListClasses: DropDownListClassList;
/**
* The DropDownList component contains a list of predefined values from which you can
* choose a single value.
* ```html
*
* ```
* ```typescript
* let dropDownListObj:DropDownList = new DropDownList();
* dropDownListObj.appendTo("#list");
* ```
*/
export declare class DropDownList extends DropDownBase implements IInput {
protected inputWrapper: InputObject;
protected inputElement: HTMLInputElement;
private valueTempElement;
private listObject;
private header;
private footer;
protected selectedLI: HTMLElement;
protected previousSelectedLI: HTMLElement;
protected previousItemData: {
[key: string]: Object;
} | string | number | boolean;
protected hiddenElement: HTMLSelectElement;
protected isPopupOpen: boolean;
private isPopupRender;
private isDocumentClick;
protected isInteracted: boolean;
private isFilterFocus;
protected beforePopupOpen: boolean;
protected initial: boolean;
private searchBoxHeight;
private popupObj;
private backIconElement;
private clearIconElement;
protected previousValue: string | number | boolean | object;
protected activeIndex: number;
protected filterInput: HTMLInputElement;
private searchKeyModule;
private tabIndex;
private isNotSearchList;
protected isTyped: boolean;
protected isSelected: boolean;
protected preventFocus: boolean;
protected preventAutoFill: boolean;
protected queryString: string;
protected isValidKey: boolean;
protected typedString: string;
protected isEscapeKey: boolean;
private isPreventBlur;
protected isTabKey: boolean;
private actionCompleteData;
private actionData;
protected prevSelectPoints: {
[key: string]: number;
};
protected isSelectCustom: boolean;
protected isDropDownClick: boolean;
protected preventAltUp: boolean;
private searchKeyEvent;
private filterInputObj;
protected spinnerElement: HTMLElement;
protected keyConfigure: {
[key: string]: string;
};
protected isCustomFilter: boolean;
private isSecondClick;
protected isListSearched: boolean;
protected preventChange: boolean;
protected selectedElementID: string;
private preselectedIndex;
private isTouched;
protected isFocused: boolean;
private clearButton;
protected autoFill: boolean;
private resizer;
private isResizing;
private originalHeight;
private originalWidth;
private originalMouseX;
private originalMouseY;
private resizeHeight;
private resizeWidth;
private isUpdateHeaderHeight;
private isUpdateFooterHeight;
private filterArgs;
private isReactTemplateUpdate;
private iOSscrollPosition;
private resizeHandler;
/**
* Sets CSS classes to the root element of the component that allows customization of appearance.
*
* @default null
*/
cssClass: string;
/**
* Specifies the width of the component. By default, the component width sets based on the width of
* its parent container. You can also set the width in pixel values.
*
* @default '100%'
* @aspType string
*/
width: string | number;
/**
* Specifies a value that indicates whether the component is enabled or not.
*
* @default true
*/
enabled: boolean;
/**
* Enable or disable persisting component's state between page reloads.
* If enabled, following list of states will be persisted.
* 1. value
*
* @default false
*/
enablePersistence: boolean;
/**
* Specifies the height of the popup list.
* > For more details about the popup configuration refer to
* [`Popup Configuration`](https://ej2.syncfusion.com/javascript/documentation/drop-down-list/es5-getting-started#configure-the-popup-list) documentation.
*
* @default '300px'
* @aspType string
*/
popupHeight: string | number;
/**
* Specifies the width of the popup list. By default, the popup width sets based on the width of
* the component.
* > For more details about the popup configuration refer to
* [`Popup Configuration`](https://ej2.syncfusion.com/javascript/documentation/drop-down-list/es5-getting-started#configure-the-popup-list) documentation.
*
* @default '100%'
* @aspType string
*/
popupWidth: string | number;
/**
* Specifies a short hint that describes the expected value of the DropDownList component.
*
* @default null
*/
placeholder: string;
/**
* Accepts the value to be displayed as a watermark text on the filter bar.
*
* @default null
*/
filterBarPlaceholder: string;
/**
* Allows additional HTML attributes such as title, name, etc., and
* accepts n number of attributes in a key-value pair format.
*
* {% codeBlock src='dropdownlist/htmlAttributes/index.md' %}{% endcodeBlock %}
*
* @default {}
*/
htmlAttributes: {
[key: string]: string;
};
/**
* Accepts the external `Query`
* that execute along with data processing.
*
* {% codeBlock src='dropdownlist/query/index.md' %}{% endcodeBlock %}
*
* @default null
*/
query: Query;
/**
* Accepts the template design and assigns it to the selected list item in the input element of the component.
* For more details about the available template options refer to
* [`Template`](../../drop-down-list/templates) documentation.
*
* We have built-in `template engine`
* which provides options to compile template string into a executable function.
* For EX: We have expression evolution as like ES6 expression string literals.
*
* @default null
* @aspType string
*/
valueTemplate: string | Function;
/**
* Accepts the template design and assigns it to the header container of the popup list.
* > For more details about the available template options refer to [`Template`](../../drop-down-list/templates) documentation.
*
* @default null
* @aspType string
*/
headerTemplate: string | Function;
/**
* Accepts the template design and assigns it to the footer container of the popup list.
* > For more details about the available template options refer to [`Template`](../../drop-down-list/templates) documentation.
*
* @default null
* @aspType string
*/
footerTemplate: string | Function;
/**
* When allowFiltering is set to true, show the filter bar (search box) of the component.
* The filter action retrieves matched items through the `filtering` event based on
* the characters typed in the search TextBox.
*
* If no match is found, the value of the `noRecordsTemplate` property will be displayed.
* > For more details about the filtering refer to [`Filtering`](../../drop-down-list/filtering) documentation.
*
* {% codeBlock src="dropdownlist/allow-filtering-api/index.ts" %}{% endcodeBlock %}
*
* {% codeBlock src="dropdownlist/allow-filtering-api/index.html" %}{% endcodeBlock %}
*
* @default false
*/
allowFiltering: boolean;
/**
* Specifies the delay time in milliseconds for filtering operations.
*
* @default 300
*/
debounceDelay: number;
/**
* Defines whether the popup opens in fullscreen mode on mobile devices when filtering is enabled. When set to false, the popup will display similarly on both mobile and desktop devices.
*
* @default true
*/
isDeviceFullScreen: boolean;
/**
* When set to true, the user interactions on the component are disabled.
*
* @default false
*/
readonly: boolean;
/**
* Defines whether to enable virtual scrolling in the component.
*
* @default false
*/
enableVirtualization: boolean;
/**
* Gets or sets a value that indicates whether the DropDownList popup can be resized.
* When set to `true`, a resize handle appears in the bottom-right corner of the popup,
* allowing the user to resize the width and height of the popup.
*
* @default false
*/
allowResize: boolean;
/**
* Gets or sets the display text of the selected item in the component.
*
* @default null
* @aspType string
*/
text: string | null;
/**
* Gets or sets the value of the selected item in the component.
*
* @default null
* @isGenericType true
*/
value: number | string | boolean | object | null;
/**
* Defines whether the object binding is allowed or not in the component.
*
* @default false
*/
allowObjectBinding: boolean;
/**
* Gets or sets the index of the selected item in the component.
*
* {% codeBlock src="dropdownlist/index-api/index.ts" %}{% endcodeBlock %}
*
* {% codeBlock src="dropdownlist/index-api/index.html" %}{% endcodeBlock %}
*
* @default null
* @aspType double
*/
index: number | null;
/**
* Specifies whether to display the floating label above the input element.
* Possible values are:
* * Never: The label will never float in the input when the placeholder is available.
* * Always: The floating label will always float above the input.
* * Auto: The floating label will float above the input after focusing or entering a value in the input.
*
* {% codeBlock src="dropdownlist/float-label-type-api/index.ts" %}{% endcodeBlock %}
*
* {% codeBlock src="dropdownlist/float-label-type-api/index.html" %}{% endcodeBlock %}
*
* @default Syncfusion.EJ2.Inputs.FloatLabelType.Never
* @aspType Syncfusion.EJ2.Inputs.FloatLabelType
* @isEnumeration true
*/
floatLabelType: FloatLabelType;
/**
* Specifies whether to show or hide the clear button.
* When the clear button is clicked, `value`, `text`, and `index` properties are reset to null.
*
* @default false
*/
showClearButton: boolean;
/**
* Triggers on typing a character in the filter bar when the
* [`allowFiltering`](./#allowfiltering)
* is enabled.
* > For more details about the filtering refer to [`Filtering`](../../drop-down-list/filtering) documentation.
*
* @event filtering
*/
filtering: EmitType;
/**
* Triggers when an item in a popup is selected or when the model value is changed by user.
* Use change event to
* [`Configure the Cascading DropDownList`](../../drop-down-list/how-to/cascading)
*
* @event change
*/
change: EmitType;
/**
* Triggers when the popup before opens.
*
* @event beforeOpen
*/
beforeOpen: EmitType