import { OnInit, OnChanges, OnDestroy, SimpleChanges, EventEmitter } from '@angular/core'; import { Subscription } from 'rxjs'; import { BindingData, BindingList, Change, ViewModel } from '@farris/devkit'; import { DatagridComponent } from '@farris/ui-datagrid'; export declare class FarrisDatagridUseBindingDataDirective implements OnInit, OnChanges, OnDestroy { bindingData: BindingData; viewModel: ViewModel; grid: DatagridComponent; private sortFields; private sortDirections; /** * 是否已排序 */ private hasSorted; /** * 过滤条件 */ private filters; protected bindingDataChangeEvent: Subscription; /** * 渲染grid */ private renderGridSubject; private enableFilterSorting; /** * 选中行切换事件 */ selectedRowChange: EventEmitter; constructor(bindingData: BindingData, viewModel: ViewModel, grid: DatagridComponent); ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; /** * 主键 */ protected readonly primaryKey: string; /** * 获取绑定数据 */ protected readonly bindingList: BindingList; /** * 设置组件引用 */ private setComponentRef; /** * 获取分页信息 */ protected getPagingInfo(): any; /** * 组件是否需要更新 * @param props 当前属性 * @param nextProps 新属性 * @param change 变更 */ protected shouldComponentUpdate(change: Change, data: any): { result: boolean; props?: any; }; protected registerEvent(): void; /** * 对bindingList排序 * @param change change */ private sortBindingList; /** * 更新数据 * @param change? 变更 */ bindData(change?: Change): void; /** * 是否应该过滤 * @param change - change * @returns {boolean} */ private shouldFiltering; private shouldSort; /** * 渲染grid * @param props 属性 */ private renderGrid; /** * 构造表格数据属性 */ protected buildProps(datas?: Array): { data: any; pageIndex: any; pageSize: any; total: any; pagination: boolean; }; /** * 计算grid状态 */ private buildGridProps; /** * 数据源发生变更 * @param change 变更 */ protected onBindingDataChange(change: Change): void; /** * 更新数据 */ private updateDataSource; private endCellEdit; /** * 设置grid当前选择行 * @param change 变更 */ private updateSelectedRow; /** * 注册bindingdata变化事件 */ private registerBindingDataChangeEvent; /** * 取消bindingdata变化订阅 */ private unRegisterBindingDataChangeEvent; /** * 触发页码切换事件 * @description 本方法适用场景仅为父级grid数据重新load,需要触发该grid重新取数使用。其他场景请勿使用 * @TODO: 待重构,控制下级数据加载应该依赖表格的行切换事件,临时这样处理,后续提供LoadChildren事件 */ private updateData; ngOnDestroy(): void; /** * 发射选中行切换事件 * @description 统一单选模式和多选模式下的行切换事件 */ protected fireSelectedRowChange(selectedRowContext: any): void; /** * 清空选定行 * @param change 变更 */ private clearCheckedRows; /** * 设置BindingList的当前行 * @param id 当前行内码 */ protected setSelectionIdToBindingData(id: string): void; private updateCheckedRows; /** * 设置选择行 */ protected setChecks(ids: string[]): void; /** * 获取勾选行id数组 * @returns */ protected getChecks(): string[]; /** * 更新勾选行数据 */ protected setCheckedRows(ids?: string[]): void; /** * 选中grid行 * @param id id */ protected selectGridRow(id: any): void; /** * 页码切换事件 * @param event event */ pageChangedHandler(event: any): void; /** * 行切换事件 * @param event event */ selectedRowChanged(event: any): void; /** * 取消行选择事件 * @param event event */ unSelected(event: any): void; /** * 勾选行发生变化 * @param event event */ checkedChanged(event: any): void; /** * 分页大小变更事件 * @param event event */ pageSizeChanged(event: any): void; /** * grid滚动加载数据 * @param event event */ scrollY(event: any): void; filterChanged(event: any): void; private checkIfChangeMatchBindingPath; private debounce; }