ngx-pluto
Version:
123 lines (122 loc) • 4.52 kB
TypeScript
import { OnInit, QueryList, OnChanges, SimpleChanges, EventEmitter } from "@angular/core";
import { NpColumnDirective } from "./column.directive";
import { NpEmptyDirective } from "./empty.directive";
import { NpHeaderDirective } from './header.directive';
/**
* 可分页表格组件 - 支持分页、自定义列名、自定义列内容等。对于多语言,支持通过·@Input·属性自定义。
*
* <example-url>https://stackblitz.com/edit/np-table-sample?embed=1&file=src/app/app.component.html</example-url>
*/
export declare class NpTable implements OnInit, OnChanges {
/**定义列名称(即数据源datasource对象属性名称),列显示名称,列宽度(可选,默认每列自适应等宽) */
columns: Array<ColumnDef>;
/**表格组件数据源,数据源为一个对象数组,对象的属性名称必须与表格列名称相同,否则不会展示此列 */
datasource: Array<any>;
/**数据总条数 */
total: number;
/**每页显示条数,默认20条 */
pageSize: number;
/**是否在表头第一列展示多选框,默认不展示 */
showCheckbox: boolean;
/**是否显示分页组件,默认显示 */
showPager: boolean;
/**是否服务器端排序,默认false,即客户端排序 */
serverSideSort: boolean;
/**首页按钮文字 */
firstBtnText: string;
/**上一页按钮文字 */
preBtnText: string;
/**下一页按钮文字 */
nextBtnText: string;
/**尾页按钮文字 */
lastBtnText: string;
/**共 */
totalText: string;
/**条,每页显示条数 */
itemsPerPageText: string;
/**没有数据按钮文字 */
noDataLabel: string;
/**当前页码 */
pageNumber: number;
/**页码改变事件,即翻页事件 (双向绑定) */
pageNumberChange: EventEmitter<number>;
/**页码改变事件,即翻页事件 */
onPageChanged: EventEmitter<number>;
/**每页显示条数改变事件 */
onPageSizeChanged: EventEmitter<number>;
/**
* Will be deprecated, use onRows instead
*/
onRowsChecked: EventEmitter<any>;
/**
* Will be deprecated, use onRows instead
*
* 为了向后兼容,故没有修改onRowsChecked逻辑,增加此output事件
*
* 当前行uncheck时触发此事件
*/
onRowsUnchecked: EventEmitter<any>;
/**当选择服务器端排序(即serverSideSort = true)时,根据当前点击列内容及排序,传给backend api返回服务器端排序数据赋值给datasource及total字段即可 */
onServerSideSorted: EventEmitter<{
col: ColumnDef;
sortedBy: "default" | "desc" | "asc";
}>;
/**
* 当前处理的行row/rows,选中/非选中状态
*
* 如点击全选按钮,则处理的是当前页的所有行rows
*/
onRows: EventEmitter<any>;
columnComponents: QueryList<NpColumnDirective>;
headerComponents: QueryList<NpHeaderDirective>;
emptyContent: NpEmptyDirective;
projectedTemplates: Array<{
name: string;
template: any;
}>;
headerTemplates: Array<{
name: string;
template: any;
}>;
internalColumns: Array<InternalColumnDef>;
/**此字段后续会废弃 will be deprecated */
selectedRows: Array<any>;
datasourceSortedByDefault: Array<any>;
constructor();
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngAfterContentInit(): void;
onTablePageChanged(currentPageNumber: number): void;
onTablePageSizeChanged(currentPageSize: number): void;
onSelectAllChecked(isChecked: boolean): void;
onRowSelectChecked(row: any): void;
onSort(item: InternalColumnDef): void;
private buildServerSideSort;
private buildClientSideSort;
private setNextSortedBy;
private initUniqueIdForDatasource;
private projectTemplate;
private mergeToInternalColumns;
private setSortedByToDefault;
private ID;
private selectAll;
private resetOtherSortedColumns;
}
export interface ColumnDef {
/**列名称 */
headerName: string;
/**列显示名称 */
headerDisplayName: string;
/**列宽度 */
width?: string;
sort?: boolean;
}
/**
* @ignore
*/
interface InternalColumnDef extends ColumnDef {
isCheckbox?: boolean;
checked?: boolean;
sortedBy?: 'default' | 'asc' | 'desc';
}
export {};