UNPKG

jamis

Version:

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

125 lines (124 loc) 3.93 kB
import type { RendererProps, Schema, SchemaBoolean } from 'jamis-core'; import type { ActionSchema, BaseSchema, Card2Schema, CardSchema, IListItem, IListStore, SchemaClassName, SchemaCollection, SchemaExpression, SchemaTokenizeableString, SchemaTpl, WithPrefixAffixHook, WithWrapperHook } from '../types'; /** * Cards 卡片集合渲染器。 */ export interface CardsSchema extends BaseSchema, WithWrapperHook, WithPrefixAffixHook { /** * 指定为 cards 类型 */ type: 'cards'; card?: Partial<CardSchema> | Card2Schema; /** * 头部 CSS 类名 */ headerClassName?: SchemaClassName; /** * 底部 CSS 类名 */ footerClassName?: SchemaClassName; /** * 卡片 CSS 类名 */ itemClassName?: SchemaClassName; cardClassName?: SchemaClassName; checkAll?: boolean; /** * 无数据提示 */ placeholder?: SchemaTpl; placeholderExpr?: SchemaTpl; /** * 是否显示底部 */ showFooter?: boolean; /** * 是否显示头部 */ showHeader?: boolean; /** * 数据源: 绑定当前环境变量 * * @default ${items} */ source?: SchemaTokenizeableString; /** * 是否隐藏勾选框 */ hideCheckToggler?: boolean; /** * 是否固顶 */ affixHeader?: boolean; /** * 顶部区域 */ header?: SchemaCollection; headerToolbarClassName?: SchemaClassName; toolbarClassName?: SchemaClassName; /** * 底部区域 */ footer?: SchemaCollection; footerToolbarClassName?: SchemaClassName; /** * 配置某项是否可以点选 */ itemCheckableOn?: SchemaExpression; /** * 配置某项是否可拖拽排序,前提是要开启拖拽功能 */ itemDraggableOn?: SchemaExpression; /** * 点击卡片的时候是否勾选卡片。 */ checkOnItemClick?: boolean; /** * 是否为瀑布流布局? */ masonryLayout?: boolean; /** * 可以用来作为值的字段 */ valueField?: string; /** * 卡片一行显示几列, 默认会自适应 */ columnsCount?: number; itemAction?: ActionSchema; /** 是否显示加载中 */ showLoading?: boolean; showLoadingOn?: SchemaBoolean; lazyRenderAfter?: number; lazyItemClassName?: SchemaClassName; } export interface CardsProps extends RendererProps, Omit<CardsSchema, 'className' | 'itemClassName'> { store: IListStore; selectable?: boolean; selected?: Array<any>; checkAll?: boolean; multiple?: 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 { index: number; card: Schema | undefined; item: IListItem; itemClassName: string; lazyItemClassName?: SchemaClassName; syncSelected: () => void; handleAction: CardsProps['onAction']; cardsProps: Pick<CardsProps, 'multiple' | 'checkOnItemClick' | 'hideCheckToggler' | 'cardClassName' | 'itemAction' | 'data' | 'dispatchEvent' | 'onEvent' | 'onAction' | 'onSave' | 'primaryField' | 'render'>; storeProps: Pick<IListStore, 'dragging' | 'selectable' | 'selectedItems' | 'unSelectedItems'>; }