import { Observable } from 'rxjs/Observable'; /** * Interface de un dataprovider para el select * Ej: Array, Service * Debe implementar, necesariamente, los metodos getData y findItem para obtener la funcionalidad basica del select */ export interface INgxSelectDataprovider { type: string; getData: (search: string, filterData?: any) => Observable; findItem: (value: any, comparator: INgxSelectComparator) => Observable; addItem?: (item: any) => void; editItem?: (item: any) => void; } /** * Opciones de configuracion del select que afectan al dataprovider */ export interface INgxSelectDataproviderOptions { filter_prop: string; min_input?: number; sort_data?: boolean; } /** * Interface del datasource que se requiere * @param {string} search [description] * @param {any} filterData [description] * @return {Observable} [description] */ export interface INgxSelectDatasource { fetchData(search: string, filterData?: any): Observable; findItem(value: any, comparator?: INgxSelectComparator): Observable; } /** * Interfaz de la funcion de comparacion */ export interface INgxSelectComparator { compare: (value: any, item: any) => boolean; } /** * Interfaz de los parametros que se envian en el evento onCreate */ export interface INgxSelectOnCreateParams { input: string; property: string; filter_data?: any; done: (item?: any) => void; } /** * Interfaz de los parametros que se envian en el evento onEdit */ export interface INgxSelectOnEditParams { item: any; input: string; property: string; filter_data?: any; done: (item?: any) => void; }