@freezesoul/nz-formly
Version:
基于ng-zorro-antd UI 扩展的ngx-formly组件库
276 lines (275 loc) • 8.19 kB
TypeScript
import { ControlOptions, NzFormlyFieldConfig } from '@freezesoul/nz-formly/common';
import { TemplateRef, TrackByFunction } from '@angular/core';
import { NzSafeAny } from 'ng-zorro-antd/core/types';
import { Observable } from 'rxjs';
import { CellEventArg, FetchSetting, HeaderEventArg, NzxColumn, NzxTableComponent, PageInfo, RowEventArg, SorterResult } from '@freezesoul/nzx-antd/table';
import { NzTableLayout, NzTablePaginationPosition, NzTablePaginationType, NzTableQueryParams, NzTableSize } from 'ng-zorro-antd/table';
import { PaginationItemRenderContext } from 'ng-zorro-antd/pagination';
import { FetchParams } from '@freezesoul/nzx-antd/service';
import { Any } from '@freezesoul/nzx-antd';
/**
* Table模板配置
*/
export interface TableOptions<T extends Record<string, Any> = Any> extends ControlOptions {
instance?: NzxTableComponent<T>;
init?: (instance: NzxTableComponent<T>, component: NzSafeAny) => void;
/**
* 请求处理
*/
api?: string | Promise<T[]> | Observable<T[]>;
/**
* 请求参数
*/
params?: FetchParams;
/**
* 请求之前处理函数
*/
beforeFetch?: (params: Record<string, NzSafeAny>) => Record<string, NzSafeAny> | Promise<NzSafeAny>;
/**
* 请求之后处理函数
*/
afterFetch?: (res: NzSafeAny, pageIndex: number) => PageInfo<T> | Promise<PageInfo<T>>;
/**
* 请求配置
*/
fetchSetting?: FetchSetting;
/**
* 排序函数
*/
sortFn?: (data: SorterResult) => SorterResult;
/**
* 配置列
*/
nzxColumns?: NzxColumn<T>[];
/**
* 显示配置列, 只在非合并表头时可用
*/
nzxSettingVisible?: boolean;
/**
* 默认渲染表头
*/
nzxDefaultRenderHeader?: boolean;
/**
* 标题
*/
title?: string | TemplateRef<void>;
/**
* 工具栏
*/
toolbar?: string | TemplateRef<void>;
/**
* 是否能调整列大小
*/
nzxResizable?: boolean;
/**
* 表格布局
*/
nzTableLayout?: NzTableLayout;
/**
* 用于显示数据总量和当前数据范围,用法参照 Pagination 组件
*/
nzShowTotal?: TemplateRef<{
$implicit: number;
range: [number, number];
}>;
nzShowTotalName?: string;
/**
* 用于自定义页码的结构,用法参照 Pagination 组件
*/
nzItemRender?: TemplateRef<PaginationItemRenderContext>;
nzItemRenderName?: string;
/**
* 表格标题
*/
nzTitle?: string | TemplateRef<NzSafeAny>;
nzTitleName?: string;
/**
* 表格尾部
*/
nzFooter?: string | TemplateRef<NzSafeAny>;
nzFooterName?: string;
/**
* 无数据时显示内容
*/
nzNoResult?: string | TemplateRef<NzSafeAny>;
nzNoResultName?: string;
/**
* 页数选择器可选值
*/
nzPageSizeOptions?: number[];
/**
* 虚拟滚动时每一列的高度,与 cdk itemSize 相同
*/
nzVirtualItemSize?: number;
/**
* 缓冲区最大像素高度,与 cdk maxBufferPx 相同
*/
nzVirtualMaxBufferPx?: number;
/**
* 缓冲区最小像素高度,低于该值时将加载新结构,与 cdk minBufferPx 相同
*/
nzVirtualMinBufferPx?: number;
/**
* 延迟显示加载效果的时间(防止闪烁)
*/
nzLoadingDelay?: number;
/**
* 当前页码,可双向绑定
*/
nzPageIndex?: number;
/**
* 每页展示多少数据,可双向绑定
*/
nzPageSize?: number;
/**
* 当前总数据,在服务器渲染时需要传入
*/
nzTotal?: number;
/**
* 表头分组时指定每列宽度,与 th 的 [nzWidth] 不可混用
*/
nzWidthConfig?: ReadonlyArray<string | null>;
/**
* 表格数据
*/
nzData?: readonly T[];
/**
* 指定分页显示的位置
*/
nzPaginationPosition?: NzTablePaginationPosition;
/**
* 横向支持滚动
*/
scrollX?: string;
/**
* 纵向支持滚动
*/
scrollY?: string;
/**
* 指定分页显示的尺寸
*/
nzPaginationType?: NzTablePaginationType;
/**
* 是否在前端对数据进行分页,如果在服务器分页数据或者需要在前端显示全部数据时传入 false
*/
nzFrontPagination?: boolean;
/**
* 模板模式,无需将数据传递给 nzData
*/
nzTemplateMode?: boolean;
/**
* 是否显示分页器
*/
nzShowPagination?: boolean;
/**
* 页面是否加载中
*/
nzLoading?: boolean;
/**
* 是否显示外边框
*/
nzOuterBordered?: boolean;
/**
* 加载指示符
*/
nzLoadingIndicator?: TemplateRef<NzSafeAny>;
nzLoadingIndicatorName?: string;
/**
* 是否展示外边框和列边框
*/
nzBordered?: boolean;
/**
* 表格大小, 正常或迷你类型
*/
nzSize?: NzTableSize;
/**
* 是否可以改变 nzPageSize
*/
nzShowSizeChanger?: boolean;
/**
* 只有一页时是否隐藏分页器
*/
nzHideOnSinglePage?: boolean;
/**
* 是否可以快速跳转至某页
*/
nzShowQuickJumper?: boolean;
/**
* 当添加该属性时,显示为简单分页
*/
nzSimple?: boolean;
/**
* 是否显示操作按钮小图标
*/
actionVisible?: boolean;
/**
* 是否显示顶部标题
*/
toolbarVisible?: boolean;
/**
* 由外部传入模板列表
*/
tplMap?: Map<string, TemplateRef<NzSafeAny>>;
/**
* 虚拟滚动数据 TrackByFunction 函数
*/
nzVirtualForTrackBy?: TrackByFunction<T>;
/**
* 页数改变时的回调函数
*/
nzPageSizeChange?: (evt: number, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 当前页码改变时的回调函数
*/
nzPageIndexChange?: (evt: number, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 当服务端分页、筛选、排序时,用于获得参数
*/
nzQueryParams?: (evt: NzTableQueryParams, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 当前页面展示数据改变的回调函数
*/
nzCurrentPageDataChange?: (evt: T[], field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 数据行点击事件
*/
rowClick?: (evt: RowEventArg<T>, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 数据行双击事件
*/
rowDblclick?: (evt: RowEventArg<T>, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 数据行右键菜单事件
*/
rowContextmenu?: (evt: RowEventArg<T>, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 单元格点击事件
*/
cellClick?: (evt: CellEventArg<T>, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 单元格双击事件
*/
cellDblclick?: (evt: CellEventArg<T>, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 单元格右键菜单事件
*/
cellContextmenu?: (evt: CellEventArg<T>, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 表头单元格事件
*/
headerClick?: (evt: HeaderEventArg, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 表头单元格双击事件
*/
headerDblclick?: (evt: HeaderEventArg, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
/**
* 表头单元格右键菜单事件
*/
headerContextmenu?: (evt: HeaderEventArg, field: NzFormlyFieldConfig<TableOptions>, instance: NzxTableComponent<T>) => void;
}
/**
* Table配置
*/
export interface TableFieldConfig extends NzFormlyFieldConfig<TableOptions> {
type: 'table';
}