import React from 'react'; import { RendererProps } from 'amis-core'; import { SchemaNode, ActionObject } from 'amis-core'; import { IListStore } from 'amis-core'; import { SchemaQuickEdit } from './QuickEdit'; import { SchemaPopOver } from './PopOver'; import Sortable from 'sortablejs'; import { TableCell } from './Table'; import { SchemaCopyable } from './Copyable'; import { BaseSchema, SchemaClassName, SchemaCollection, SchemaExpression, SchemaObject, SchemaTokenizeableString, SchemaTpl, SchemaUrlPath } from '../Schema'; import { ActionSchema } from './Action'; import { SchemaRemark } from './Remark'; import type { IItem } from 'amis-core/lib/store/list'; /** * 不指定类型默认就是文本 */ export declare type ListBodyFieldObject = { /** * 列标题 */ label?: string; /** * label 类名 */ labelClassName?: SchemaClassName; /** * 绑定字段名 */ name?: string; /** * 配置查看详情功能 */ popOver?: SchemaPopOver; /** * 配置快速编辑功能 */ quickEdit?: SchemaQuickEdit; /** * 配置点击复制功能 */ copyable?: SchemaCopyable; }; export declare type ListBodyField = SchemaObject & ListBodyFieldObject; export interface ListItemSchema extends Omit { actions?: Array; /** * 操作位置,默认在右侧,可以设置成左侧。 */ actionsPosition?: 'left' | 'right'; /** * 图片地址 */ avatar?: SchemaUrlPath; /** * 内容区域 */ body?: Array; /** * 描述 */ desc?: SchemaTpl; /** * tooltip 说明 */ remark?: SchemaRemark; /** * 标题 */ title?: SchemaTpl; /** * 副标题 */ subTitle?: SchemaTpl; } /** * List 列表展示控件。 * 文档:https://baidu.gitee.io/amis/docs/components/card */ export interface ListSchema extends BaseSchema { /** * 指定为 List 列表展示控件。 */ type: 'list' | 'static-list'; /** * 标题 */ title?: SchemaTpl; /** * 底部区域 */ footer?: SchemaCollection; /** * 底部区域类名 */ footerClassName?: SchemaClassName; /** * 顶部区域 */ header?: SchemaCollection; /** * 顶部区域类名 */ headerClassName?: SchemaClassName; /** * 单条数据展示内容配置 */ listItem?: ListItemSchema; /** * 数据源: 绑定当前环境变量 * * @default ${items} */ source?: SchemaTokenizeableString; /** * 是否显示底部 */ showFooter?: boolean; /** * 是否显示头部 */ showHeader?: boolean; /** * 无数据提示 * * @default 暂无数据 */ placeholder?: SchemaTpl; /** * 是否隐藏勾选框 */ hideCheckToggler?: boolean; /** * 是否固顶 */ affixHeader?: boolean; /** * 配置某项是否可以点选 */ itemCheckableOn?: SchemaExpression; /** * 配置某项是否可拖拽排序,前提是要开启拖拽功能 */ itemDraggableOn?: SchemaExpression; /** * 点击卡片的时候是否勾选卡片。 */ checkOnItemClick?: boolean; /** * 可以用来作为值的字段 */ valueField?: string; /** * 大小 */ size?: 'sm' | 'base'; /** * 点击列表项的行为 */ itemAction?: ActionSchema; } export interface Column { type: string; [propName: string]: any; } export interface ListProps extends RendererProps, Omit { store: IListStore; selectable?: boolean; selected?: Array; draggable?: boolean; onSelect: (selectedItems: Array, unSelectedItems: Array) => void; onSave?: (items: Array | object, diff: Array | object, rowIndexes: Array | number, unModifiedItems?: Array, rowOrigins?: Array | object, options?: { resetOnFailed?: boolean; reload?: string; }) => void; onSaveOrder?: (moved: Array, items: Array) => void; onQuery: (values: object) => void; } export default class List extends React.Component { static propsList: Array; static defaultProps: Partial; dragTip?: HTMLElement; sortable?: Sortable; parentNode?: any; body?: any; renderedToolbars: Array; constructor(props: ListProps); static syncItems(store: IListStore, props: ListProps, prevProps?: ListProps): boolean; componentDidMount(): void; componentDidUpdate(prevProps: ListProps): void; componentWillUnmount(): void; bodyRef(ref: HTMLDivElement): void; affixDetect(): void; getPopOverContainer(): Element | Text | null; handleAction(e: React.UIEvent, action: ActionObject, ctx: object): void; handleCheck(item: IItem): void; handleCheckAll(): void; syncSelected(): void; handleQuickChange(item: IItem, values: object, saveImmediately?: boolean | any, savePristine?: boolean, options?: { resetOnFailed?: boolean; reload?: string; }): void; handleSave(): void; handleSaveOrder(): void; reset(): void; bulkUpdate(value: object, items: Array): void; getSelected(): any[]; dragTipRef(ref: any): void; initDragging(): void; destroyDragging(): void; renderActions(region: string): JSX.Element | null; renderHeading(): JSX.Element | null; renderHeader(): JSX.Element | JSX.Element[] | null; renderFooter(): JSX.Element | JSX.Element[] | null; renderCheckAll(): JSX.Element | null; renderDragToggler(): JSX.Element | null; renderToolbar(toolbar: SchemaNode, index: number): JSX.Element | null | undefined; renderListItem(index: number, template: ListItemSchema | undefined, item: IItem, itemClassName: string): JSX.Element; render(): JSX.Element; } export declare class ListRenderer extends List { dragging: boolean; selectable: boolean; selected: boolean; title?: string; subTitle?: string; desc?: string; avatar?: string; avatarClassName?: string; body?: SchemaNode; actions?: Array; onCheck: (item: IItem) => void; } export interface ListItemProps extends RendererProps, Omit { hideCheckToggler?: boolean; item: IItem; itemIndex?: number; checkable?: boolean; checkOnItemClick?: boolean; itemAction?: ActionSchema; } export declare class ListItem extends React.Component { static defaultProps: Partial; static propsList: Array; constructor(props: ListItemProps); handleClick(e: React.MouseEvent): void; handleCheck(): void; handleAction(e: React.UIEvent, action: ActionObject, ctx: object): void; handleQuickChange(values: object, saveImmediately?: boolean, savePristine?: boolean, options?: { resetOnFailed?: boolean; reload?: string; }): void; renderLeft(): JSX.Element | null; renderRight(): JSX.Element | null; renderChild(node: SchemaNode, region?: string, key?: any): React.ReactNode; itemRender(field: any, index: number, props: any): JSX.Element | null; renderFeild(region: string, field: any, key: any, props: any): JSX.Element | null; renderBody(): React.ReactNode; render(): JSX.Element; } export declare class ListItemRenderer extends ListItem { static propsList: string[]; } export declare class ListItemFieldRenderer extends TableCell { static defaultProps: { wrapperComponent: string; }; static propsList: string[]; render(): JSX.Element; }