@opensig/opendesign
Version:
53 lines (52 loc) • 2.05 kB
TypeScript
import { Dayjs } from 'dayjs';
import { DateModelValue, DisabledMonthFn, DisabledYearFn } from './types';
export interface RangeStateResult {
isRangeStart: boolean;
isRangeEnd: boolean;
isInRange: boolean;
}
interface ComputeRangeStateParams {
/** 当前格子的日期 */
cell: Dayjs;
/** 比较粒度('day' | 'month' | 'year') */
unit: string;
/** 已确认范围的起始日期(排序后) */
rangeStart: Dayjs | null;
/** 已确认范围的结束日期(排序后) */
rangeEnd: Dayjs | null;
/** 第一次点击的锚点日期(选择进行中时有值) */
anchorDate: Dayjs | null;
/** 鼠标悬停的日期(用于范围选择的实时预览) */
hoverDate: Dayjs | null;
}
/**
* 根据范围选择状态计算单个格子的范围高亮标记
* @param cell - 当前格子的日期
* @param unit - 比较粒度
* @param rangeStart - 已确认范围起始
* @param rangeEnd - 已确认范围结束
* @param anchorDate - 选择进行中的锚点
* @param hoverDate - 当前悬停日期
* @returns 范围高亮状态
*/
export declare function computeRangeState({ cell, unit, rangeStart, rangeEnd, anchorDate, hoverDate }: ComputeRangeStateParams): RangeStateResult;
/** year view 下面板导航每次跳跃的年数,同时也是双面板右侧偏移量 */
export declare const YEAR_VIEW_STEP = 10;
/**
* Parse a user-provided model value into a Dayjs object.
* Accepts: Date object, formatted string, number timestamp, or ISO string.
*/
export declare function parseValue(value: DateModelValue): Dayjs | null;
export declare function isMonthDisabled(year: number, month: number, // 0-indexed,0=一月,11=十二月
options: {
disabledDate?: (d: Date) => boolean;
disabledMonth?: DisabledMonthFn;
minDate?: Dayjs | null;
maxDate?: Dayjs | null;
}): boolean;
export declare function isYearDisabled(year: number, options: {
disabledYear?: DisabledYearFn;
minDate?: Dayjs | null;
maxDate?: Dayjs | null;
}): boolean;
export {};