import { Observable } from 'rxjs'; import { SubTypeSelectColumnForms } from '../../enums/columns/SubTypeSelectColumnForms.enum'; import { Data } from '../data'; import { ColumnForms } from './column'; import { SubTypeReturnData } from './subTypeReturnData'; /** * Column general select */ export interface SelectColumnForms extends ColumnForms { /** * use select as multiple select * @example * ``` * { * listValues: listValuesSelect.getValuesTranslate(AttributedToKey, translocoAppService), * type: FormTypeColumn.SELECT, * secondAttribute: 'attributed_to', * number: 3, * attribute: 'attributedTo', * required: true, * header: translocoAppService.translate('attributedTo'), * sort: { sort: true }, * filter: { filter: true }, * multiple: true, * } as SelecColumn, * ``` */ multiple?: boolean | (({ data, column }: SubTypeReturnData) => boolean); /** * subtype of column select */ subType?: SubTypeSelectColumnForms | (({ data, column }: SubTypeReturnData) => SubTypeSelectColumnForms); } /** * List column */ export interface ListColumnForms extends SelectColumnForms { /** * List of values */ listValues: Array<{ text: string; value: string; }>; } /** * Entity column */ export interface EntityColumnForms extends SelectColumnForms { /** * filters to request a get list */ filters?: Array<{ key: string; value: any[]; }>; /** * Url to request an get list */ url?: string | ((column: TypeSelectsForms) => string); /** * custom http subscriber */ httpSubscribe: ({ page, pageSize, filters, column, data, }: HttpSubscribeReturnData) => Observable; /** * custom map to http subscriber */ mapHttpSubscribe?: ({ page, pageSize, filters, response, column, }: MapHttpSubscribeReturnData) => any; /** * value to send data */ attributeValue: string; /** * list to keys attributes */ listAttributtes: Array; } /** * All export types selects */ export declare type TypeSelectsForms = EntityColumnForms | ListColumnForms; export interface HttpSubscribeReturnData { page: number; pageSize: number; filters: Array<{ key: string; value: any[]; }>; column: TypeSelectsForms; data: Data; } export interface MapHttpSubscribeReturnData { page: number; pageSize: number; filters: Array<{ key: string; value: any[]; }>; column: TypeSelectsForms; response: any; }