UNPKG

jamis

Version:

一种支持通过JSON配置方式生成页面的组件库

149 lines (148 loc) 6.77 kB
import React from 'react'; import { ScopedContext } from 'jamis-core'; import Sortable from 'sortablejs'; import type { ActionObject, IScopedContext, SchemaNode } from 'jamis-core'; import type { BackTopRef, ExportExcelToolbar, HeaderCellRenderProps, IColumn, IRow, ITableStore, RenderCellProps, SummaryRow, TableProps } from '../types'; export declare class TableCmpt extends React.Component<TableProps, object> { static contextType: React.Context<IScopedContext<import("jamis-core").ScopedComponentType>>; context: React.ContextType<typeof ScopedContext>; static propsList: Array<string>; static defaultProps: Partial<TableProps>; table?: HTMLTableElement; backTop: BackTopRef['current']; sortable?: Sortable; dragTip?: HTMLElement; affixedTable?: HTMLTableElement; parentNode?: HTMLElement | Window; totalWidth: number; totalHeight: number; outterWidth: number; outterHeight: number; unSensor?: Function; toDispose: Array<() => void>; updateTableInfoLazy: import("lodash").DebouncedFuncLeading<any>; widths: { [propName: string]: number; }; widths2: { [propName: string]: number; }; heights: { [propName: string]: number; }; renderedToolbars: Array<string>; subForms: any; timer: ReturnType<typeof setTimeout>; tableFixed: boolean; constructor(props: TableProps, context: IScopedContext); static syncRows(store: ITableStore, props: TableProps, prevProps?: TableProps): boolean; componentDidMount(): void; /** * 自动设置表格高度占满界面剩余区域 * 用 css 实现有点麻烦,要改很多结构,所以先用 dom hack 了,避免对之前的功能有影响 */ updateAutoFillHeight(): void; componentDidUpdate(prevProps: TableProps): void; componentWillUnmount(): void; subFormRef(form: any, x: number, y: number): void; handleAction(e: React.UIEvent<any> | undefined, action: ActionObject, ctx: object): void; handleCheck: (item: IRow, checked: boolean, shift?: boolean) => Promise<void>; handleRowClick: (item: IRow, index: number, restArgs: { clientX: number; clientY: number; }) => Promise<void | import("jamis-core").RendererEvent<any, any>>; handleRowMouseUp: (item: IRow, index: number, restArgs: { clientX: number; clientY: number; }) => Promise<void | import("jamis-core").RendererEvent<any, any>>; handleRowDbClick: (item: IRow, index: number, restArgs: { clientX: number; clientY: number; }) => Promise<void | import("jamis-core").RendererEvent<any, any>>; handleRowMouseEnter: import("lodash").DebouncedFuncLeading<(item: IRow, index: number) => Promise<void | import("jamis-core").RendererEvent<any, any>>>; handleRowMouseLeave: import("lodash").DebouncedFuncLeading<(item: IRow, index: number) => Promise<void | import("jamis-core").RendererEvent<any, any>>>; handleCheckAll(): Promise<void>; handleQuickChange(item: IRow, values: object, saveImmediately?: boolean | any, savePristine?: boolean, options?: { resetOnFailed?: boolean; reload?: string; }): void; handleSave(): Promise<void>; handleSaveOrder(): Promise<void>; syncSelected(): void; reset(): void; bulkUpdate(value: any, items: Array<object>): void; getSelected(): any[]; affixDetect(): void; updateTableInfo(): void; handleOutterScroll(): void; tableRef(ref: HTMLTableElement): void; dragTipRef(ref: any): void; affixedTableRef(ref: HTMLTableElement): void; initDragging(): void; destroyDragging(): void; getPopOverContainer: () => Element | Text | null; handleMouseMove: (e: React.MouseEvent<any>) => void; handleMouseLeave(): void; draggingTr: HTMLTableRowElement; originIndex: number; draggingSibling: Array<HTMLTableRowElement>; handleDragStart(e: React.DragEvent): void; handleDragOver(e: any): void; handleDrop(): Promise<void>; handleDragEnd(): void; handleImageEnlarge(info: any, target: { rowIndex: number; colIndex: number; }): void; resizeLine: HTMLElement; resizeLineLeft: number; targetTh: HTMLElement; targetThWidth: number; lineStartX: number; handleColResizeMouseDown(e: React.MouseEvent<HTMLElement>): void; handleColResizeMouseMove(e: MouseEvent): void; handleColResizeMouseUp(e: MouseEvent): void; handleColumnToggle(columns: Array<IColumn>): void; doAction(action: ActionObject, args: any, throwErrors: boolean): any; renderAutoFilterForm(): React.ReactNode; renderHeading(): JSX.Element | null; /** * 执行onQuery, 并异步将content区域的scrollTop重置 */ handleQueryWithResetScroll: (values: any) => void; handleSort: (column: IColumn) => Promise<void>; /** * 封装一层使用props.data来作为数据域以解析表达式 */ resolveVariable: (expr: string) => any; /** * 渲染表格头部列的前缀元素 */ renderHeaderCellAffix: (column: IColumn | (() => JSX.Element | null)) => JSX.Element; renderHeadCell: (column: IColumn | (() => JSX.Element | null), cellProps: HeaderCellRenderProps) => JSX.Element; renderCell: (region: "placeholder" | string, column: IColumn | (() => JSX.Element | null), row: IRow, cellProps: RenderCellProps, ignoreDrag?: boolean) => JSX.Element; renderAffixHeader(tableClassName: string): JSX.Element | null; renderToolbar(toolbar: SchemaNode): JSX.Element | null | undefined; renderColumnsToggler(config?: any): JSX.Element | null; renderDragToggler(): JSX.Element | null; renderExportExcel(toolbar: ExportExcelToolbar): JSX.Element | null; renderActions(region: string): JSX.Element | null; renderHeader(editable?: boolean): JSX.Element | JSX.Element[] | null; renderFooter(): JSX.Element | JSX.Element[] | null; generateRowKey: (row: IRow, rowKeyGenerator?: string) => any; renderRows(rows?: IRow[], columns?: IColumn[], rowProps?: { parent?: any; regionPrefix?: string; ignoreFootableContent?: boolean; renderCell?: TableCmpt['renderCell']; }): any[]; renderItemActions: () => JSX.Element | null; renderSummaryRow: (position: "prefix" | "affix", items?: Array<any>, rowIndex?: number) => JSX.Element | null; renderSummaryRows: (position: "prefix" | "affix", summaryRow?: SummaryRow) => JSX.Element | (JSX.Element | null)[] | null; renderTableContent(tableClassName: string): JSX.Element; render(): JSX.Element; } export declare class TableRenderer extends TableCmpt { receive(values: any, subPath?: string): void; reload(subPath?: string, query?: any, ctx?: any): void; }