jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
169 lines (168 loc) • 3.21 kB
TypeScript
/**
* Range
*
*/
import type { FormBaseControlSchema, FormControlProps, SchemaObject } from '../types';
export interface MultipleValue {
min: number;
max: number;
}
export type MarksType = {
[index: string | number]: MarksValue;
};
type MarksValue = string | number | SchemaObject | {
style?: React.CSSProperties;
label?: string;
};
export type InputRangeValue = string | MultipleValue | number | [number, number];
export type RangeFormatValue = MultipleValue | number;
export type TooltipPosType = 'auto' | 'top' | 'right' | 'bottom' | 'left';
export type InputRangeRendererEvent = 'change' | 'blur' | 'focus';
export type InputRangeRendererAction = 'clear';
export interface RangeControlSchema extends FormBaseControlSchema {
type: 'input-range';
/**
* 滑块值
*/
value?: InputRangeValue;
/**
* 最大值
*/
max?: number;
/**
* 最小值
*/
min?: number;
/**
* 步长
*/
step?: number;
/**
* 单位
*/
unit?: string;
/**
* 是否展示步长
*/
showSteps?: boolean;
/**
* 分割块数
*/
parts?: number | number[];
/**
* 刻度
*/
marks?: MarksType;
/**
* 是否展示标签
*/
tooltipVisible?: boolean;
/**
* 标签方向
*/
tooltipPlacement?: TooltipPosType;
/**
* 是否为双滑块
*/
multiple?: boolean;
/**
* 是否通过分隔符连接
*/
joinValues?: boolean;
/**
* 分隔符
*/
delimiter?: string;
/**
* 是否展示输入框
*/
showInput?: boolean;
/**
* 是否禁用
*/
disabled?: boolean;
}
export interface RangeProps extends FormControlProps {
/**
* 滑块值
*/
value: InputRangeValue;
/**
* 最小值
*/
min: number;
/**
* 最大值
*/
max: number;
/**
* 步长
*/
step: number;
/**
* 是否展示步长
*/
showSteps: boolean;
/**
* 分割块数
*/
parts: number;
/**
* 刻度
*/
marks?: MarksType;
/**
* 是否展示标签
*/
tooltipVisible: boolean;
/**
* 标签方向
*/
tooltipPlacement: TooltipPosType;
/**
* 控制滑块标签显隐函数
*/
tipFormatter?: (value: InputRangeValue) => boolean;
/**
* 是否为双滑块
*/
multiple: boolean;
/**
* 是否通过分隔符连接
*/
joinValues: boolean;
/**
* 分隔符
*/
delimiter: string;
/**
* 单位
*/
unit?: string;
/**
* 是否展示输入框
*/
showInput: boolean;
/**
* 是否禁用
*/
disabled: boolean;
/**
* 输入框是否可清除
*/
clearable?: boolean;
/**
* value改变事件
*/
onChange: (value: InputRangeValue) => void;
/**
* 鼠标松开事件
*/
onAfterChange?: (value: InputRangeValue) => any;
}
export interface RangeItemProps extends RangeProps {
value: RangeFormatValue;
updateValue: (value: InputRangeValue) => void;
onAfterChange: () => void;
}
export {};