import { ElementRef, OnInit } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { GasDatepicker, GasDatepickerTime, GasPickerDay } from './gas-datepicker.interface'; import { GasDatepickerHelper } from './gas-datepicker-helper'; import { GasClickOutsideDirective } from '../../utils/click-outside-directive/gas-click-outside.directive'; /** @see https://www.figma.com/file/yqBeq1MiGfpdN62SvmA8tg/RTLABS_GAS_DS_1?node-id=589%3A5596 */ export declare class GasDatepickerComponent implements OnInit { private gasClickOutsideDirective; el: ElementRef; datepickerWrapper: ElementRef; /** флаг для отображения поля ввода времени */ timesPicker: boolean; defaultTime: GasDatepickerTime; /** Текущий выбранный день */ set presetDate(presetDate: Date); /** Возвращает выбранную дату */ get presetDate(): Date; /** Массив с днями для рендера в pickere */ daysInMonth: GasPickerDay[]; /** массив с днями недели */ weeks: string[]; /** массив с месяцами */ month: string[]; /** минимально доступный для выбора день */ minDate: Date; /** максимально доступный для выбора день */ maxDate: Date; /** Объект хранящий актуальные значения даты */ dateSetting: GasDatepicker; /** Показывает календарь/список годов/список месяцев */ currentViewPicker: 'datepicker' | 'yearpicker' | 'monthpicker'; /** Выбранная дата */ selectedDateSubject$: BehaviorSubject; /** Храним состояние клика для удаления компонента */ closeSubject$: BehaviorSubject; /** инстанс класса-хелпера */ gasDatepickerHelper: GasDatepickerHelper; constructor(gasClickOutsideDirective: GasClickOutsideDirective, el: ElementRef); /**************** Геттеры ***********************/ /** Возвращает текущий месяц */ get currentMonth(): number; /** Возвращает текущий год */ get currentYear(): string; /** * Инициализация при загрузке страницы * Добавляем подписку на клик вне компонента, для удаления динамического компонента */ ngOnInit(): void; /******************* Методы по установке даты ************************************/ /** * Выбираем день в календаре * Вначале проверяем, относится ли выбранный день к текущему месяцу, если нет - то меняем месяц * Если день из текущего месяца то просто устанавливаем его как выбранный * * @param day - выбранный день из календаря */ selectDay(day: GasPickerDay): void; /** * Устанавливает дату на текущий день */ setToDay(): void; /** Обновляет дату в директиве, изменяет массив с датами и закрывает picker */ updateDate(): void; /** * Обновляет данные в календаре и объекте с актуальными значениями даты * * @param day - текущий выбранный день */ changeRenderPicker(day?: Date): void; /******************* Методы для работы со сменой месяцев и года ********************************/ /** Выбираем предыдущий месяц */ previousMonth(index: number): void; /** Выбираем следующий месяц */ nextMonth(index: number): void; /** * Меняет текущий месяц * * @param index - индекс выбранного месяца */ changeMonth(index: number): void; /** * проверяет текущий месяц и меняет в нем значение если он выходит за корректный диапазон * в случае выхода за диапазон еще меняет год */ checkAndSetMonth(): void; /** открывает блок с выбором года */ openYearPicker(): void; /** открывает блок с выбором месяца */ openMonthPicker(): void; /** обрабатываем изменение года */ onChangeYear(year: number): void; /** обрабатываем изменение месяца из отдельного блока */ changeCurrentMonth(month: number): void; closePicker(): void; setDateAndTime(times: string[]): void; }