UNPKG

@freezesoul/nz-formly

Version:

基于ng-zorro-antd UI 扩展的ngx-formly组件库

276 lines (275 loc) 8.19 kB
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'; }