import type { RendererProps, SchemaClassName } from 'jamis-core'; import type { BaseSchema, SchemaObject, StaticControlSchemaBase } from '../../types'; export interface FlexItemSpec { /** * `flex`属性是`flex-grow`,`flex-shrink`和`flex-basis`的缩写 * 其中第2和第3个参数(`flex-shrink`和`flex-basis`)是可选的。默认值为`0 1 auto`。 */ flex: 'none' | 'auto' | 'initial' | '1'; /** * 子项宽度扩展设置, 默认值是0 */ flexGrow: 0 | 1; /** * 子项宽度收缩设置, 默认值是1 */ flexShrink: 0 | 1; /** * 改变某一个flex子项的排序位置 */ order: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'first' | 'last'; /** * 定义了在分配剩余空间之前元素的默认大小, 默认是 auto */ flexBasis: 'auto' | 'none' | number; alignSelf: 'auto' | 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'; } export type FlexItemSchema = SchemaObject & Partial; /** * Flex 布局 */ export interface FlexSchema extends BaseSchema { /** * 指定为 flex 展示类型 */ type: 'flex'; /** * @deprecated 使用 flexDirection 替代 */ direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse'; /** * 方向 */ flexDirection?: 'row' | 'column' | 'row-reverse' | 'column-reverse'; /** * 控制子项整体单行显示还是换行显示 */ flexWrap?: 'nowrap' | 'wrap' | 'wrap-reverse'; /** * 是`flex-direction`和`flex-wrap`的缩写,表示flex布局的flow流动特性 */ flexFlow?: string; /** * 水平分布 */ justifyContent?: 'start' | 'flex-start' | 'center' | 'end' | 'flex-end' | 'space-around' | 'space-between' | 'space-evenly' | 'normal' | 'stretch'; /** * @deprecated 使用 justifyContent 替代 */ justify?: 'start' | 'flex-start' | 'center' | 'end' | 'flex-end' | 'space-around' | 'space-between' | 'space-evenly' | 'normal' | 'stretch'; /** * 垂直布局 */ alignItems?: 'stretch' | 'start' | 'flex-start' | 'flex-end' | 'end' | 'center' | 'baseline'; /** * 多行情况下的垂直分布 */ alignContent?: 'normal' | 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly' | 'stretch' | 'baseline'; /** * flex 项集合 */ body?: string | FlexItemSchema | (string | FlexItemSchema)[]; /** * flex 项集合 * @deprecated 请使用 body 替换 */ items?: string | FlexItemSchema | (string | FlexItemSchema)[]; /** * 每项都设置的样式类 */ itemClassName?: SchemaClassName; } export interface StaticFlexSchema extends Omit, StaticControlSchemaBase { type: 'static-flex'; } export interface FlexProps extends RendererProps, Omit { itemClassName: string; }