UNPKG

yoyo-ng-modulewindy

Version:

服务于52ABP模板的前端开源的相关组件内容。整合了ng-alain和你NG ZORRO的内容

229 lines (228 loc) 8.59 kB
import { OnDestroy, OnInit, OnChanges, SimpleChanges, EventEmitter, Renderer2, ElementRef, TemplateRef, SimpleChange } from '@angular/core'; import { DecimalPipe } from '@angular/common'; import { HttpClient } from '@angular/common/http'; import { Router } from '@angular/router'; import { Observable } from 'rxjs'; import { CNCurrencyPipe, DatePipe, YNPipe, ModalHelper } from 'yoyo-ng-module/theme'; import { SimpleTableColumn, SimpleTableChange, SimpleTableSelection, SimpleTableFilter, SimpleTableData, SimpleTableButton, STExportOptions, ResReNameType, ReqReNameType } from './interface'; import { AdSimpleTableConfig } from './simple-table.config'; import { SimpleTableExport } from './simple-table-export'; export declare class SimpleTableComponent implements OnInit, OnChanges, OnDestroy { private defConfig; private http; private router; private el; private renderer; private exportSrv; private modal; private currenty; private date; private yn; private number; private doc; private data$; private _inited; _data: SimpleTableData[]; _url: string; _isAjax: boolean; _isPagination: boolean; _classMap: string[]; _allChecked: boolean; _indeterminate: boolean; _columns: SimpleTableColumn[]; /** 数据源 */ data: string | any[] | Observable<any[]>; /** * 额外请求参数,默认自动附加 `pi`、`ps` 至URL * - `{ status: 'new' }` => `url?pi=1&ps=10&status=new` */ extraParams: any; /** 请求方法 */ reqMethod: string; /** 请求体 `body` */ reqBody: any; /** 请求体 `Header` */ reqHeaders: any; /** * 重命名请求参数 `pi`、`ps` * - `{ pi: 'Page' }` => `pi` 会被替换成 Page */ reqReName: ReqReNameType; private _reqReName; /** 请求异常时回调 */ readonly reqError: EventEmitter<any>; /** * 重命名返回参数 `total`、`list` * - `{ total: 'Total' }` => Total 会被当作 `total` */ resReName: ResReNameType; private _resReName; /** 列描述 */ columns: SimpleTableColumn[]; /** 每页数量,当设置为 `0` 表示不分页,默认:`10` */ ps: any; private _ps; /** 当前页码 */ pi: any; private _pi; /** 数据总量 */ total: any; private _total; /** 是否显示分页器 */ showPagination: any; private _showPagination; /** 是否显示Loading */ loading: any; private _loading; /** 延迟显示加载效果的时间(防止闪烁) */ loadingDelay: any; private _loadingDelay; /** 是否显示边框 */ bordered: any; private _bordered; /** table大小 */ size: 'small' | 'middle' | 'default'; /** 纵向支持滚动,也可用于指定滚动区域的高度:`{ y: '300px', x: '300px' }` */ scroll: { y?: string; x?: string; }; /** 是否显示pagination中改变页数 */ showSizeChanger: any; private _showSizeChanger; /** pagination中每页显示条目数下拉框值 */ pageSizeOptions: number[]; /** 是否显示pagination中快速跳转 */ showQuickJumper: any; private _showQuickJumper; /** 是否显示总数据量 */ private _totalTpl; showTotal: any; renderTotal(total: string, range: string[]): string; /** * 前端分页,当 `data` 为`any[]` 或 `Observable<any[]>` 有效,默认:`true` * - `true` 由 `simple-table` 根据 `data` 长度受控分页,包括:排序、过滤等 * - `false` 由用户通过 `total` 和 `data` 参数受控分页,并维护 `(change)` 当分页变更时重新加载数据 */ frontPagination: any; private _frontPagination; /** 数据变更后是否保留在数据变更前的页码 */ isPageIndexReset: any; private _isPageIndexReset; /** 分页方向 */ pagePlacement?: 'left' | 'center' | 'right'; /** 切换分页时返回顶部 */ toTopInChange: any; private _toTopInChange; /** 返回顶部偏移值 */ toTopOffset: any; private _toTopOffset; /** 重命名排序值,`columns` 的重命名高于属性 */ sortReName: { ascend?: string; descend?: string; }; /** 是否多排序,当 `sort` 多个相同值时自动合并,建议后端支持时使用 */ multiSort: any; private _multiSort; /** 数据处理前回调 */ preDataChange: (data: SimpleTableData[]) => SimpleTableData[]; /** `header` 标题 */ header: TemplateRef<void>; /** 额外 `body` 内容 */ body: TemplateRef<void>; /** `footer` 底部 */ footer: TemplateRef<void>; /** `expand` 可展开,当数据源中包括 `expand` 表示展开状态 */ expand: TemplateRef<{ $implicit: any; column: SimpleTableColumn; }>; noResult: string | TemplateRef<void>; widthConfig: string[]; /** 页码、每页数量变化时回调 */ readonly change: EventEmitter<SimpleTableChange>; /** checkbox变化时回调,参数为当前所选清单 */ readonly checkboxChange: EventEmitter<SimpleTableData[]>; /** radio变化时回调,参数为当前所选 */ readonly radioChange: EventEmitter<SimpleTableData>; /** 排序回调 */ readonly sortChange: EventEmitter<any>; /** Filter回调 */ readonly filterChange: EventEmitter<SimpleTableColumn>; /** 后端分页是否采用`1`基索引,只在`data`类型为`string`时有效 */ zeroIndexedOnPage: any; private _zeroIndexedOnPage; constructor(defConfig: AdSimpleTableConfig, http: HttpClient, router: Router, el: ElementRef, renderer: Renderer2, exportSrv: SimpleTableExport, modal: ModalHelper, currenty: CNCurrencyPipe, date: DatePipe, yn: YNPipe, number: DecimalPipe, doc: any); /** * 根据页码重新加载数据 * * @param pi 指定当前页码,默认:`1` * @param extraParams 重新指定 `extraParams` 值 */ load(pi?: number, extraParams?: any): void; /** * 重新刷新当前页 * @param extraParams 重新指定 `extraParams` 值 */ reload(extraParams?: any): void; /** * 重置且重新设置 `pi` 为 `1` * * @param extraParams 重新指定 `extraParams` 值 */ reset(extraParams?: any): void; private getAjaxData(url?); private _genAjax(forceRefresh?); _genData(forceRefresh?: boolean): void; private _toTop(); private checkPaged(); private processData(); private subscribeData(res); _change(type: 'pi' | 'ps'): void; _get(item: any, col: SimpleTableColumn): any; _click(e: Event, item: any, col: SimpleTableColumn): boolean; _sortMap: { [key: number]: any; }; _sortColumn: SimpleTableColumn; _sortOrder: string; _sortIndex: number; private getReqSortMap(); 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; /** 清除所有 `checkbox` */ clearCheck(): this; _checkAll(checked?: boolean): this; _checkSelection(i: SimpleTableData, value: boolean): this; _refCheck(): this; _rowSelection(row: SimpleTableSelection): this; _checkNotify(): this; /** 清除所有 `radio` */ clearRadio(): this; _refRadio(checked: boolean, item: SimpleTableData): this; btnCoerce(list: SimpleTableButton[]): SimpleTableButton[]; btnCoerceIf(list: SimpleTableButton[]): void; btnClick(record: any, btn: SimpleTableButton): void; private btnCallback(record, btn, modal?); btnText(record: any, btn: SimpleTableButton): string; fixedCoerce(list: SimpleTableColumn[]): void; /** * 导出Excel,确保已经注册 `AdXlsxModule` * @param urlOrData 重新指定数据,例如希望导出所有数据非常有用 * @param opt 额外参数 */ export(urlOrData?: string | any[], opt?: STExportOptions): void; ngOnInit(): void; private setClass(); private updateColumns(); ngOnChanges(changes: { [P in keyof this]?: SimpleChange; } & SimpleChanges): void; ngOnDestroy(): void; }