ngx-pluto
Version:
111 lines (110 loc) • 4.53 kB
TypeScript
import { ElementRef } from '@angular/core';
import * as moment_ from 'moment';
import { OverlayPositionBuilder, OverlayRef, Overlay } from '@angular/cdk/overlay';
import { DatePickerLocale } from './public-api';
export declare class NpDatePickerService {
private overlayPositionBuilder;
private overlay;
readonly locale: DatePickerLocale;
constructor(overlayPositionBuilder: OverlayPositionBuilder, overlay: Overlay);
/**
* 根据传入的moment时间及传入的年份生成年份范围数组YearData。
* 例如:year = 2020, 年份范围value示例为
*
* [
*
* 2019, 2020, 2021,
*
* 2022, 2023, 2024,
*
* 2025, 2026, 2027,
*
* 2028, 2029, 2030
*
* ]
* @param date Moment时间
* @param year 年份YYYY, 例:2020
* @param selectedDate 当前选中的日期
*/
buildYearsPanel(date: moment_.Moment, year: string, selectedDate: moment_.Moment): Array<YearData>;
/**
* 构建当前年份的全部月份
* @param selectedDate 当前选中的日期
*/
buildMonthsPanel(date: moment_.Moment, selectedDate: moment_.Moment): Array<MonthData>;
/**
* 根据传入的日期构建当前显示日历面板(当前这个月的天数面板)。
* 例如:传入日期为2020/08/20,则返回一个DayDataPerMonth数组,
* 其中的value示例如下:
*
* ['日', '一', '二', '三', '四', '五', '六',
*
* '26', '27', '28', '29', '30', '31', '1',
*
* '2', '3', '4', '5', '6', '7', '8',
*
* '9', '10', '11', '12', '13', '14', '15',
*
* '16', '17', '18', '19', '20', '21', '22',
*
* '23', '24', '25', '26', '27', '28', '29',
*
* '30', '31', '1', '2', '3', '4', '5']
* @param date 构建日期面板的日期
* @param selectedDate 当前选中的日期
* @param isRangePicker 是否是时间区间选择
* @param dates 当isRangePicker为true时,需要传入此时间区间字段,代表时间区间已选择的区间值
*/
buildDaysPanel(date: moment_.Moment, selectedDate: moment_.Moment): Array<DayDataPerMonth>;
sortDates(dates: Array<moment_.Moment>, asc?: boolean): moment_.Moment[];
buildStartAndEndDates(sDate: moment_.Moment, eDate: moment_.Moment): moment_.Moment[];
day(date: moment_.Moment): moment_.Moment;
private getDayStatus;
/**
* 构建时间区间选择当鼠标hover面板时的状态,同buildDaysPanel的功能,
* 增加对象DayDataPerMonth中对字段isWithinDateRangeHover的值的区分。
*
* @param date 构建日期面板的日期
* @param selectedDate 当前选中的日期
* @param hoverDate 当前hover的时间moment值
* @param dates 需要传入此时间区间字段,代表时间区间已选择的区间值
*/
buildDaysPanelForRangePicker(date: moment_.Moment, selectedDate: moment_.Moment, hoverDate: moment_.Moment, dates?: Array<moment_.Moment>): DayDataPerMonth[];
getWeekdaysMin(): string[];
getOverlayRef(elementRef: ElementRef): OverlayRef;
/**获取calendar时间,例如今天,昨天,明天等 */
calendar(date: moment_.Moment, locale?: DatePickerLocale): string;
isValid(date: moment_.Moment | string): boolean;
}
export interface DateData {
/**是否可选 */
available: boolean;
/**当前值 */
value: string;
/**当前是否选中 */
isSelected: boolean;
/**当前日期 */
date: moment_.Moment;
}
export interface DayDataPerMonth extends DateData {
/**是否是第一行的周 */
isWeekDayMin: boolean;
/**当datepickertype为date-range-picker的时候,鼠标hover后在候选时间区间的则为true,否则false */
hoverDateType?: DayStatusForRangePicker;
}
/**
* 区间时间选择在所有日期天数面板的状态及对应样式
*
* normal - 正常日期天数 无额外样式
*
* within-hover - 在hover的时间区间里面 有虚线边框
*
* within-selected - 在已选的时间区间里面 有背景色
*
* within-selected-hover - 在已选的时间区间里面被hover 加深背景色
*/
export declare type DayStatusForRangePicker = 'normal' | 'within-hover' | 'within-selected' | 'within-selected-hover';
export interface YearData extends DateData {
}
export interface MonthData extends DateData {
}