tdesign-vue
Version:
99 lines (98 loc) • 3.69 kB
TypeScript
import Vue from 'vue';
import { Instance } from '@popperjs/core';
import dayjs from 'dayjs';
import { TdTimePickerProps, TdTimeRangePickerProps } from './type';
export declare type TimePickerProps = TdTimePickerProps;
export declare type TimeRangePickerProps = TdTimeRangePickerProps;
export * from './type';
export declare type TimeInputType = 'hour' | 'minute' | 'second' | 'meridiem';
export declare enum KeyboardDirection {
left = 37,
up = 38,
right = 39,
down = 40
}
export declare enum EPickerCols {
hour = "hour",
minute = "minute",
second = "second",
meridiem = "meridiem"
}
export interface InputTime {
hour: number | string;
minute?: number | string;
second?: number | string;
meridiem: 'AM' | 'PM' | string;
}
interface TimePickerSetInputValue {
(val: dayjs.Dayjs | undefined): InputTime | undefined;
}
interface TimePickerDayjs2InputTime {
(val: dayjs.Dayjs): InputTime;
}
export interface TimePickerInstance extends Vue {
setInputValue: TimePickerSetInputValue;
dayjs2InputTime: TimePickerDayjs2InputTime;
formatString: string;
}
export interface PickerData {
hour: number | string;
minute?: number | string;
second?: number | string;
meridiem?: 'AM' | 'PM';
}
export interface InputEvent extends Event {
data?: string;
target: HTMLInputElement;
}
export interface TimeInputEvent {
type: TimeInputType;
value: number | string;
index?: number;
}
export interface TimePickerPanelInstance extends Vue {
renderFooter: () => HTMLElement;
renderBody: () => HTMLElement;
confirmBtnClick?: () => void;
nowAction?: () => void;
renderSinglePicker: (index: number) => HTMLElement;
handleTimePick: (col: EPickerCols, time: string | number, index: number) => void;
scrollToTime: (colIndex: number, col: EPickerCols, time: number | string, behavior: ScrollBehavior) => void;
panelColUpdate: () => void;
classNames: Array<string>;
colValues: Array<dayjs.Dayjs>;
cols: Array<EPickerCols>;
formatField: Record<string, string>;
sectionComponentName: string;
rangePicker: boolean;
panel: Instance;
isFooterDisplay: boolean;
localeMeridiems: Array<string>;
showNowTime: boolean;
}
export interface TimePickerPanelColInstance extends Vue {
renderScrollers: () => Array<HTMLElement>;
renderScroller: (col: EPickerCols) => HTMLElement;
renderActiveMask: () => HTMLElement;
scrollToTime: (col: EPickerCols, time: number | string, behavior?: ScrollBehavior) => void;
getTimeItemHeight: (col: EPickerCols) => number;
generateColTime: (col: EPickerCols) => Array<number | string>;
generateTimeList: (num: number, step: number) => Array<number>;
generateColRows: (col: EPickerCols) => Array<HTMLElement>;
calcScrollYDistance: (index: number) => number;
calculateTimeIdx(time: number | string, step: number | string, type: EPickerCols): number;
splitValue: Record<EPickerCols, number | string>;
timeItemCanUsed: (col: EPickerCols, time: string | number) => boolean;
handleTimeItemClick: (e: MouseEvent, col: EPickerCols, time: number | string) => void;
handleScroll: (col: EPickerCols) => void;
isCurrent: (col: EPickerCols, colItem: string | number) => boolean;
updateTimeScrollPos: () => void;
closestLookup: (availableArr: Array<any>, x: number, step: number) => number;
disableFilter: (preIdx: number, col: EPickerCols) => any;
getScrollDistance: (col: EPickerCols, time: number | string) => number;
valStr: string;
isPm: boolean;
currentTimes: [number, number, number];
timeArr: [string, string, string];
timeItemMargin: number;
}