UNPKG

jamis

Version:

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

169 lines (168 loc) 3.21 kB
/** * 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 {};