import { OnDestroy, OnInit, OnChanges, SimpleChanges, EventEmitter, Renderer2, ElementRef, TemplateRef, SimpleChange, AfterViewInit } from '@angular/core'; import { DecimalPipe } from '@angular/common'; import { _HttpClient, CNCurrencyPipe, MomentDatePipe, YNPipe, ModalHelper, AlainI18NService } from '@delon/theme'; import { ACLService } from '@delon/acl'; import { Observable } from 'rxjs/Observable'; import { SimpleTableColumn, SimpleTableChange, SimpleTableSelection, SimpleTableFilter, SimpleTableData, SimpleTableButton, STExportOptions, ResReNameType } from './interface'; import { SimpleTableConfig } from './simple-table.config'; import { SimpleTableRowDirective } from './simple-table-row.directive'; import { SimpleTableExport } from './simple-table-export'; export declare class SimpleTableComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy { private defConfig; private _http; private el; private renderer; private exportSrv; private acl; private i18nSrv; private modal; private currenty; private date; private yn; private number; private data$; _data: SimpleTableData[]; _url: string; _isAjax: boolean; _isPagination: boolean; _classMap: string[]; _allChecked: boolean; _indeterminate: boolean; _footer: boolean; _columns: SimpleTableColumn[]; _resRN: ResReNameType; /** 数据源 */ data: string | any[] | Observable; /** * 后端URL地址 * @deprecated 已过期,请使用 `data` 属性,`0.6.0` 后将移除 */ url: string; /** * 额外请求参数,默认自动附加 `pi`、`ps` 至URL * - `{ status: 'new' }` => `url?pi=1&ps=10&status=new` */ extraParams: any; /** 请求方法 */ reqMehtod: string; /** 请求体 `body` */ reqBody: any; /** 请求体 `Header` */ reqHeaders: any; /** * 重命名请求参数 `pi`、`ps` * - `{ pi: 'Page' }` => `pi` 会被替换成 Page */ reqReName: Object; /** 请求异常时回调 */ reqError: EventEmitter; /** * 重命名返回参数 `total`、`list` * - `{ total: 'Total' }` => Total 会被当作 `total` */ resReName: ResReNameType; /** 列描述 */ columns: SimpleTableColumn[]; /** 每页数量,当设置为 `0` 表示不分页,默认:`10` */ ps: any; private _ps; /** 当前页码 */ pi: any; private _pi; /** 数据总量 */ total: any; private _total; /** 是否显示Loading */ loading: any; private _loading; /** 是否显示边框 */ bordered: any; private _bordered; /** table大小 */ size: 'small' | 'middle' | 'default'; /** 纵向支持滚动,也可用于指定滚动区域的高度:`{ y: 300 }` */ scroll: { y: number; }; /** 是否显示pagination中改变页数 */ showSizeChanger: any; private _showSizeChanger; /** pagination中每页显示条目数下拉框值 */ pageSizeSelectorValues: number[]; /** 是否显示pagination中快速跳转 */ showQuickJumper: any; private _showQuickJumper; /** 是否显示总数据量 */ showTotal: any; private _showTotal; /** 数据变更后是否保留在数据变更前的页码 */ isPageIndexReset: any; private _isPageIndexReset; /** 分页方向 */ pagePlacement?: 'left' | 'center' | 'right'; /** 切换分页时返回顶部 */ toTopInChange: any; private _toTopInChange; /** 返回顶部偏移值 */ toTopOffset: any; private _toTopOffset; /** 重命名排序值,`columns` 的重命名高于属性 */ sortReName: { ascend?: string; descend?: string; }; /** 是否多排序,建议后端支持时使用,默认:`false` */ multiSort: any; private _multiSort; /** 数据处理前回调 */ preDataChange: (data: SimpleTableData[]) => SimpleTableData[]; /** 额外 `body` 内容 */ body: TemplateRef; /** `footer` 内容 */ footer: TemplateRef; /** 页码、每页数量变化时回调 */ change: EventEmitter; /** checkbox变化时回调,参数为当前所选清单 */ checkboxChange: EventEmitter; /** radio变化时回调,参数为当前所选 */ radioChange: EventEmitter; /** 排序回调 */ sortChange: EventEmitter; /** Filter回调 */ filterChange: EventEmitter; constructor(defConfig: SimpleTableConfig, _http: _HttpClient, el: ElementRef, renderer: Renderer2, exportSrv: SimpleTableExport, acl: ACLService, i18nSrv: AlainI18NService, modal: ModalHelper, currenty: CNCurrencyPipe, date: MomentDatePipe, yn: YNPipe, number: DecimalPipe); private getAjaxData(url?); load(pi?: number): void; reset(): void; _change(type: 'pi' | 'ps'): void; _genAjax(forceRefresh?: boolean): void; _genData(forceRefresh?: boolean): void; _toTop(): void; _get(item: any, col: SimpleTableColumn): any; private getDataObs(urlOrData?); private processData(); private _subscribeData(res); _sortMap: { [key: number]: any; }; _sortColumn: SimpleTableColumn; _sortOrder: string; _sortIndex: number; private getReqSortMap(); private recursiveSort(data, sorterFn); private getSorterFn(); sort(index: number, value: any): void; private getReqFilterMap(); private handleFilter(col); filterConfirm(col: SimpleTableColumn): void; filterClear(col: SimpleTableColumn): void; filterRadio(col: SimpleTableColumn, item: SimpleTableFilter, checked: boolean): void; _checkAll(): void; _checkSelection(i: SimpleTableData): void; _refCheck(): void; _rowSelection(row: SimpleTableSelection): void; _refRadio(idx: number, checked: boolean): void; btnClick(record: any, btn: SimpleTableButton): void; private btnCallback(record, btn, modal?); btnText(record: any, btn: SimpleTableButton): string; /** * 导出Excel,确保已经注册 `AdXlsxModule` * @param urlOrData 重新指定数据,例如希望导出所有数据非常有用 * @param opt 额外参数 */ export(urlOrData?: string | any[], opt?: STExportOptions): void; ngOnInit(): void; ngAfterViewInit(): void; addRow(row: SimpleTableRowDirective): void; private setClass(); private updateColumns(); private updateResName(); ngOnChanges(changes: { [P in keyof this]?: SimpleChange; } & SimpleChanges): void; ngOnDestroy(): void; }