UNPKG

jamis

Version:

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

145 lines (144 loc) 4.8 kB
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<CardSchema>; /** * 头部 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<CardsSchema, 'className' | 'itemClassName' | 'data'> { store: IListStore; selectable?: boolean; selected?: Array<any>; checkAll?: boolean; valueField?: string; draggable?: boolean; dragIcon?: SVGAElement; onSelect: (selectedItems: Array<object>, unSelectedItems: Array<object>) => void; onSave?: (items: Array<object> | object, diff: Array<object> | object, rowIndexes: Array<number> | number, unModifiedItems?: Array<object>, rowOrigins?: Array<object> | object, options?: { resetOnFailed?: boolean; reload?: string; }) => void; onSaveOrder?: (moved: Array<object>, items: Array<object>) => 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<CardsProps, 'checkOnItemClick' | 'hideCheckToggler' | 'cardClassName' | 'itemAction' | 'data' | 'dispatchEvent' | 'onEvent' | 'onAction' | 'onSave' | 'primaryField' | 'render'> & { multiple?: boolean; }; storeProps: Pick<IListStore, 'dragging' | 'selectable' | 'selectedItems' | 'unSelectedItems'>; }