UNPKG

jamis

Version:

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

94 lines (93 loc) 5.39 kB
import React from 'react'; import type { ActionObject, IScopedContext, RendererProps, Schema, SchemaNode } from 'jamis-core'; import { ScopedContext } from 'jamis-core'; import type { CRUDProps, ScrollEventParam } from '../types'; export default class CRUD extends React.Component<CRUDProps, any> { static propsList: Array<keyof CRUDProps>; static defaultProps: Partial<CRUDProps>; control: any; lastQuery: any; lastData: any; timer: ReturnType<typeof setTimeout>; mounted: boolean; /** 父容器, 主要用于定位CRUD内部popover的挂载点 */ parentContainer: Element | null; filterOnEvent: ((onEvent: RendererProps["onEvent"]) => import("lodash").Dictionary<import("jamis-core").EventListenerAction | undefined>) & import("lodash").MemoizedFunction; /** 正在加载下一页中 */ loadMoreSearch: Promise<void> | null; disposers: (() => void)[]; constructor(props: CRUDProps); componentDidMount(): void; componentDidUpdate(prevProps: CRUDProps): void; componentWillUnmount(): void; /** * 防抖解析source关联的数据域里的items, 兼容可能通过source使用了ARRAYFILTER等表达式的场景, 避免死循环 */ resolveSourceItemsLazy: import("lodash").DebouncedFunc<() => void>; /** 查找CRUD最近层级的父窗口 */ getClosestParentContainer: () => Element | null; controlRef(control: any): void; handleAction(e: React.UIEvent<any> | undefined, action: ActionObject, ctx: Record<string, any>, throwErrors?: boolean, delegate?: IScopedContext): any; handleScroll: (param: ScrollEventParam) => void; handleBulkAction(selectedItems: Array<any>, unSelectedItems: Array<any>, e: React.UIEvent<any>, action: ActionObject): void; handleItemAction(action: ActionObject, ctx: any): void; handleFilterInit(values: object): void; handleFilterReset(values: object, action: any): void; handleFilterSubmit(values: object, jumpToFirstPage?: boolean, replaceLocation?: boolean, search?: boolean): void; handleBulkGo(selectedItems: Array<any>, unSelectedItems: Array<any>, e: React.MouseEvent<any>): void | Promise<false | void>; handleDialogConfirm(values: object[], action: ActionObject, ctx: any, components: Array<any>): any; handleDialogClose(confirmed?: boolean): void; openFeedback(dialog: any, ctx: any): Promise<unknown>; /** * 执行加载 * * @param values 搜索条件 */ search: (values?: any, silent?: boolean, clearSelection?: boolean, forceReload?: boolean) => Promise<void>; silentSearch: (values?: object, clearSelection?: boolean, forceReload?: boolean) => Promise<void>; handleChangePage(page: number, perPage?: number): void; handleSave(rows: Array<object> | object, diff: Array<object> | object, indexes: Array<string>, unModifiedItems?: Array<any>, rowsOrigin?: Array<object> | object, options?: { resetOnFailed?: boolean; reload?: string; }): void; handleSaveOrder(moved: Array<object>, rows: Array<object>): void; handleSelect(items: Array<any>, unSelectedItems: Array<any>): void; handleChildPopOverOpen(popOver: any): void; handleChildPopOverClose(popOver: any): void; handleQuery(values: Record<string, any>, forceReload?: boolean): void; reload(subpath?: string, query?: any): void; receive(values: object): void; reloadTarget(target: string, data: any): void; closeTarget(target: string, data: any): void; doAction(action: ActionObject, data: object, throwErrors?: boolean): any; unSelectItem(item: any, index: number): void; clearSelection(): void; hasBulkActionsToolbar(): any; hasBulkActions(): number | false; renderBulkActions(childProps: any): JSX.Element | null; renderPagination(toolbar: SchemaNode, showPerPage?: boolean, showStatistics?: boolean): JSX.Element | null; renderStatistics(): JSX.Element | null; renderLoadMore(): JSX.Element; renderFilterToggler(): JSX.Element | null; renderExportCSV(toolbar: Schema): JSX.Element; renderToolbar(toolbar?: SchemaNode, index?: number, childProps?: any, restArgs?: { toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode; showPerPage?: boolean; showStatistics?: boolean; }): string | number | boolean | JSX.Element | React.ReactFragment | null; renderHeaderToolbar: (childProps: any, toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode) => string | number | boolean | JSX.Element | React.ReactFragment | null; renderFooterToolbar(childProps: Record<string, any>, toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode): string | number | boolean | JSX.Element | React.ReactFragment | null; renderSelection(): React.ReactNode; render(): JSX.Element; } export declare class CRUDRenderer extends CRUD { static contextType: React.Context<IScopedContext<import("jamis-core").ScopedComponentType>>; context: React.ContextType<typeof ScopedContext>; constructor(props: CRUDProps, context: IScopedContext); componentWillUnmount(): void; reload(subpath?: string, query?: any, ctx?: any): void; receive(values: any, subPath?: string): void; reloadTarget(target: string, data: any): void; closeTarget(target: string, data: any): void; setData(values: Record<string, any>): void; }