import type { PickClassStyleType, RendererProps, Schema, SchemaBoolean } from 'jamis-core'; import type { ActionSchema, BaseSchemaScoped, CardSchema, IListItem, IListStore, SchemaClassName, SchemaCollection, SchemaExpression, SchemaSlots, SchemaTokenizeableString, SchemaTpl, WithPrefixAffixHook, WithWrapperHook } from '../types'; /** * Cards 卡片集合组件。 */ export interface CardsSchema extends BaseSchemaScoped, WithWrapperHook, WithPrefixAffixHook { /** * 指定为 cards 类型 */ type: 'cards'; card?: Partial; /** * 头部 CSS 类名 * @deprecated 请使用`slots.Cards-header.className` */ headerClassName?: SchemaClassName; /** * 底部 CSS 类名 * @deprecated 请使用`slots.Cards-footer.className` */ footerClassName?: SchemaClassName; /** * 卡片 CSS 类名 * @deprecated 请使用`slots.className` */ itemClassName?: SchemaClassName; /** @deprecated 请使用`slots.className` */ cardClassName?: SchemaClassName; checkAll?: boolean; /** * 无数据提示 * @deprecated 请使用`slots` */ placeholder?: SchemaTpl; /** * @deprecated 请使用`slots` */ placeholderExpr?: SchemaTpl; /** * 是否显示底部 */ showFooter?: boolean; /** * 是否显示头部 */ showHeader?: boolean; /** * 数据源: 绑定当前环境变量 * * @default ${items} */ source?: SchemaTokenizeableString; /** * 是否隐藏勾选框 */ hideCheckToggler?: boolean; /** * 是否固顶 */ affixHeader?: boolean; /** * 顶部区域 * @deprecated 请使用`slots` */ header?: SchemaCollection; /** @deprecated 请使用`slots.className` */ headerToolbarClassName?: SchemaClassName; /** @deprecated 请使用`slots.className` */ toolbarClassName?: SchemaClassName; /** * 底部区域 * @deprecated 请使用`slots` */ footer?: SchemaCollection; /** @deprecated 请使用`slots.className` */ footerToolbarClassName?: SchemaClassName; /** * 配置某项是否可以点选 */ itemCheckableOn?: SchemaExpression; /** * 配置某项是否可拖拽排序,前提是要开启拖拽功能 */ itemDraggableOn?: SchemaExpression; /** * 点击卡片的时候是否勾选卡片。 */ checkOnItemClick?: boolean; /** * 是否为瀑布流布局? */ masonryLayout?: boolean; /** * 可以用来作为值的字段 */ valueField?: string; /** * 卡片一行显示几列, 默认会自适应 */ columnsCount?: number; itemAction?: ActionSchema; /** 是否显示加载中 */ showLoading?: boolean; showLoadingOn?: SchemaBoolean; lazyRenderAfter?: number; /** @deprecated 请使用`slots.className` */ lazyItemClassName?: SchemaClassName; /** * 是否多选 */ multiple?: SchemaBoolean; slots?: SchemaSlots<'Cards-header' | 'Cards-toolbar' | 'Cards-headerToolbar' | 'Cards-footer' | 'Cards-footerToolbar' | 'Cards-beforeRegion' | 'Cards-afterRegion' | (string & {})>; } export interface CardsProps extends RendererProps, Omit { store: IListStore; selectable?: boolean; selected?: Array; checkAll?: boolean; valueField?: string; draggable?: boolean; dragIcon?: SVGAElement; 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 type CardsRendererEvent = 'change' | 'selected' | 'selectedChange' | 'cardClick' | 'cardDbClick'; export type CardsRendererAction = 'check-all' | 'toggleSelectAll' | 'selectAll' | 'clearAll'; export interface CardsItemWrapperProps extends PickClassStyleType { index: number; card: Schema | undefined; item: IListItem; itemClassName: string; lazyItemClassName?: SchemaClassName; syncSelected: () => void; handleAction: CardsProps['onAction']; cardsProps: Pick & { multiple?: boolean; }; storeProps: Pick; }