@syncfusion/ej2-dropdowns
Version:
Essential JS 2 DropDown Components
273 lines (230 loc) • 8.3 kB
TypeScript
import { Component, EventHandler, addClass, append, Property, Event, KeyboardEvents, EmitType, L10n, compile, KeyboardEventArgs } from '@syncfusion/ej2-base';import { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue, AnimationModel } from '@syncfusion/ej2-base';import { NotifyPropertyChanges, INotifyPropertyChanged, rippleEffect, RippleOptions, ChildProperty, Complex } from '@syncfusion/ej2-base';import { DataManager, Query, DataOptions, DataUtil } from '@syncfusion/ej2-data';import { ListBase, SortOrder } from '@syncfusion/ej2-lists';import { Popup } from '@syncfusion/ej2-popups';import { select, selectAll } from '@syncfusion/ej2-base';import { VirtualInfo, VirtualScroll } from '../common/virtual-scroll';import { GeneratedData } from '../drop-down-list';import { Skeleton } from '@syncfusion/ej2-notifications';
import {FilterType,SelectEventArgs} from "./drop-down-base";
import {ComponentModel} from '@syncfusion/ej2-base';
/**
* Interface for a class FieldSettings
*/
export interface FieldSettingsModel {
/**
* Maps the text column from data table for each list item
*
* @default null
*/
text?: string;
/**
* Maps the value column from data table for each list item
*
* @default null
*/
value?: string;
/**
* Maps the icon class column from data table for each list item.
*
* @default null
*/
iconCss?: string;
/**
* Group the list items with it's related items by mapping groupBy field.
*
* @default null
*/
groupBy?: string;
/**
* Allows additional attributes such as title, disabled, etc., to configure the elements
* in various ways to meet the criteria.
*
* @default null
*/
htmlAttributes?: string;
/**
* Defines whether the particular field value is disabled or not.
*
* @default null
*/
disabled?: string;
}
/**
* Interface for a class DropDownBase
*/
export interface DropDownBaseModel extends ComponentModel{
/**
* The `fields` property maps the columns of the data table and binds the data to the component.
* * text - Maps the text column from data table for each list item.
* * value - Maps the value column from data table for each list item.
* * iconCss - Maps the icon class column from data table for each list item.
* * groupBy - Group the list items with it's related items by mapping groupBy field.
* ```html
* <input type="text" tabindex="1" id="list"> </input>
* ```
* ```typescript
* let customers: DropDownList = new DropDownList({
* dataSource:new DataManager({ url:'http://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/' }),
* query: new Query().from('Customers').select(['ContactName', 'CustomerID']).take(5),
* fields: { text: 'ContactName', value: 'CustomerID' },
* placeholder: 'Select a customer'
* });
* customers.appendTo("#list");
* ```
*
* @default {text: null, value: null, iconCss: null, groupBy: null, disabled: null}
*/
fields?: FieldSettingsModel;
/**
* Accepts the template design and assigns it to each list item present in the popup.
* 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
*/
itemTemplate?: string | Function;
/**
* Accepts the template design and assigns it to the group headers present in the popup list.
*
* @default null
* @aspType string
*/
groupTemplate?: string | Function;
/**
* Accepts the template design and assigns it to popup list of component
* when no data is available on the component.
*
* @default 'No records found'
* @aspType string
*/
noRecordsTemplate?: string | Function;
/**
* Accepts the template and assigns it to the popup list content of the component
* when the data fetch request from the remote server fails.
*
* @default 'Request failed'
* @aspType string
*/
actionFailureTemplate?: string | Function;
/**
* Specifies the `sortOrder` to sort the data source. The available type of sort orders are
* * `None` - The data source is not sorting.
* * `Ascending` - The data source is sorting with ascending order.
* * `Descending` - The data source is sorting with descending order.
*
* @default null
* @asptype object
* @aspjsonconverterignore
*/
sortOrder?: SortOrder;
/**
* Accepts the list items either through local or remote service and binds it to the component.
* It can be an array of JSON Objects or an instance of
* `DataManager`.
*
* @default []
*/
dataSource?: { [key: string]: Object }[] | DataManager | string[] | number[] | boolean[];
/**
* Accepts the external `Query`
* which will execute along with the data processing.
*
* @default null
*/
query?: Query;
/**
* Determines on which filter type, the component needs to be considered on search action.
* The `FilterType` and its supported data types are
*
* <table>
* <tr>
* <td colSpan=1 rowSpan=1>
* FilterType<br/></td><td colSpan=1 rowSpan=1>
* Description<br/></td><td colSpan=1 rowSpan=1>
* Supported Types<br/></td></tr>
* <tr>
* <td colSpan=1 rowSpan=1>
* StartsWith<br/></td><td colSpan=1 rowSpan=1>
* Checks whether a value begins with the specified value.<br/></td><td colSpan=1 rowSpan=1>
* String<br/></td></tr>
* <tr>
* <td colSpan=1 rowSpan=1>
* EndsWith<br/></td><td colSpan=1 rowSpan=1>
* Checks whether a value ends with specified value.<br/><br/></td><td colSpan=1 rowSpan=1>
* <br/>String<br/></td></tr>
* <tr>
* <td colSpan=1 rowSpan=1>
* Contains<br/></td><td colSpan=1 rowSpan=1>
* Checks whether a value contains with specified value.<br/><br/></td><td colSpan=1 rowSpan=1>
* <br/>String<br/></td></tr>
* </table>
*
* The default value set to `StartsWith`, all the suggestion items which contain typed characters to listed in the suggestion popup.
*
* @default 'StartsWith'
*/
filterType?: FilterType;
/**
* When set to ‘false’, consider the `case-sensitive` on performing the search to find suggestions.
* By default consider the casing.
*
* @default true
*/
ignoreCase?: boolean;
/**
* specifies the z-index value of the component popup element.
*
* @default 1000
*/
zIndex?: number;
/**
* ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.
*
*/
ignoreAccent?: boolean;
/**
* Overrides the global culture and localization value for this component. Default global culture is 'en-US'.
*
* @default 'en-US'
*/
locale?: string;
/**
* Triggers before fetching data from the remote server.
*
* @event actionBegin
*/
actionBegin?: EmitType<Object>;
/**
* Triggers after data is fetched successfully from the remote server.
*
* @event actionComplete
*/
actionComplete?: EmitType<Object>;
/**
* Triggers when the data fetch request from the remote server fails.
*
* @event actionFailure
*/
actionFailure?: EmitType<Object>;
/**
* Triggers when an item in the popup is selected by the user either with mouse/tap or with keyboard navigation.
*
* @event select
*/
select?: EmitType<SelectEventArgs>;
/**
* Triggers when data source is populated in the popup list..
*
* @event dataBound
*/
dataBound?: EmitType<Object>;
/**
* Triggers when the component is created.
*
* @event created
*/
created?: EmitType<Object>;
/**
* Triggers when the component is destroyed.
*
* @event destroyed
*/
destroyed?: EmitType<Object>;
}