@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
592 lines • 68.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: single-date-range-picker.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, Output, forwardRef, ElementRef, Renderer2, EventEmitter, ChangeDetectorRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { DatepickerComponent as SingleDatepickerComponent } from './datepicker.component';
import { DatePickerConfigService as DatePickerConfig } from './date-picker.config.service';
import { I18nService } from '@duoduo-oba/ng-devui/i18n';
import { SelectDateRangeChangeReason } from './date-range-change-event-args.model';
/**
* @record
*/
export function SimpleDate() { }
if (false) {
/** @type {?} */
SimpleDate.prototype.year;
/** @type {?} */
SimpleDate.prototype.month;
}
export class SingleDateRangePickerComponent extends SingleDatepickerComponent {
/**
* @param {?} elementRef
* @param {?} renderer
* @param {?} datePickerConfig
* @param {?} changeDetectorRef
* @param {?} i18n
*/
constructor(elementRef, renderer, datePickerConfig, changeDetectorRef, i18n) {
super(elementRef, renderer, datePickerConfig, changeDetectorRef, i18n);
this.elementRef = elementRef;
this.renderer = renderer;
this.datePickerConfig = datePickerConfig;
this.changeDetectorRef = changeDetectorRef;
this.i18n = i18n;
this.selectedRange = Array(2);
this.rangePicker = false;
this.isAuxiliary = false;
this.currentCalendars = Array(2);
this.hoverOnDate = new EventEmitter();
this.rangeSelected = new EventEmitter();
this.rangeSelecting = new EventEmitter();
this.syncPickerPair = new EventEmitter();
this.consolidateTime = new EventEmitter();
}
/**
* @return {?}
*/
ngOnInit() {
[this.rangeStart, this.rangeEnd] = this.selectedRange;
if (!this.isAuxiliary && !this.rangeStart) {
// 主面板,未选择开始日期的情况
this.onSelectDateChanged();
this.onDisplayWeeksChange();
this.initDatePicker();
this.setI18nText();
}
else if (this.isAuxiliary && !this.rangeEnd) {
// 副面板,未选择结束日期的情况
this.onSelectDateChanged();
this.initDatePicker();
this.onNextMonth('init');
this.selectedDate = new Date(this.currentYear, this.currentMonth);
this.setI18nText();
}
else if (!this.isAuxiliary && this.rangeStart) {
// 主面板,已选择开始日期的情况
this.selectedDate = this.rangeStart;
super.ngOnInit();
}
else if (this.isAuxiliary && this.rangeEnd) {
// 副面板,已选择结束日期的情况
/** @type {?} */
const rangeStart = this.convertDate(this.rangeStart);
/** @type {?} */
const rangeEnd = this.convertDate(this.rangeEnd);
this.currentYear = rangeEnd.getFullYear();
this.currentMonth = rangeEnd.getMonth();
this.selectedDate = new Date(this.currentYear, this.currentMonth);
super.ngOnInit();
// 处理选择的日期范围开始和结束在同一个月的情况
if (rangeStart && rangeEnd && rangeStart.getFullYear() === rangeEnd.getFullYear() &&
rangeStart.getMonth() === rangeEnd.getMonth()) {
this.onNextMonth('init');
}
this.selectedDate = new Date(this.currentYear, this.currentMonth);
}
this.notifyCalenderChange();
}
/*
** @param invocation:调用时机
*/
/**
* @param {?} $event
* @param {?} date
* @param {?=} invocation
* @return {?}
*/
onSelectDate($event, date, invocation) {
if ($event.stopPropagation) {
$event.stopPropagation();
}
if (invocation !== 'init') {
if (this.isDisabledDay(date)) {
$event.preventDefault();
return;
}
this.selectRange(date);
}
}
/**
* @param {?} $event
* @param {?} date
* @return {?}
*/
emitHoverDate($event, date) {
if (this.selectingRange) {
this.hoverOnDate.emit(date);
}
}
/**
* @param {?} date
* @return {?}
*/
selectStart(date) {
if (date) {
this.rangeStart = this.convertDate(date);
}
}
/**
* @param {?} date
* @return {?}
*/
selectEnd(date) {
if (date) {
this.selectingRange = false;
this.rangeEnd = this.convertDate(date);
if (!!this.rangeStart && !!this.rangeEnd) {
this.rangeChange(this.ensureRangeValueOrder([this.rangeStart, this.rangeEnd]));
}
}
}
/**
* @param {?} date
* @return {?}
*/
convertDate(date) {
return date ? this.dateConverter.parse(date, this.dateFormat, this.locale) : null;
}
/**
* @param {?} date
* @param {?=} passive
* @return {?}
*/
selectRange(date, passive = false) {
if (this.disabled) {
return;
}
this.setTime(date);
if (!this.rangeStart || (!!this.rangeStart && !!this.rangeEnd)) {
this.rangeEnd = null;
this.rangeStart = null;
this.selectStart(date);
this.selectingRange = true;
if (!passive) {
this.rangeSelecting.emit(this.rangeStart);
}
}
else {
this.selectEnd(date);
}
}
/**
* @param {?} range
* @return {?}
*/
rangeChange(range) {
this.selectedRange = range;
this.notifyValueChange(range);
}
/**
* @param {?} selectedRange
* @return {?}
*/
writeValue(selectedRange) {
this.selectedRange = selectedRange;
}
/**
* @protected
* @param {?} selectedRange
* @return {?}
*/
notifyValueChange(selectedRange) {
this.onChange(selectedRange);
this.rangeSelected.emit({
reason: SelectDateRangeChangeReason.time,
selectedRange: selectedRange
});
}
/**
* @param {?} date
* @return {?}
*/
isSelectDay(date) {
/** @type {?} */
let rangeSource = this.selectedRange;
if (this.selectingRange) {
rangeSource = [this.rangeStart, this.previewEnd];
}
return rangeSource.some((/**
* @param {?} selectedDate
* @return {?}
*/
(selectedDate) => {
if (!selectedDate || !date) {
return false;
}
return (date.getFullYear() === selectedDate.getFullYear() &&
date.getMonth() === selectedDate.getMonth() &&
date.getDate() === selectedDate.getDate());
}));
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
if (changes.hasOwnProperty('selectedRange')) {
this.selectingRange = false;
[this.rangeStart, this.rangeEnd] = changes['selectedRange'].currentValue;
}
}
/**
* @param {?} date
* @return {?}
*/
isInRange(date) {
/** @type {?} */
const rangeStart = this.rangeStart;
/** @type {?} */
let rangeEnd = this.rangeEnd;
if (this.selectingRange) {
rangeEnd = this.previewEnd;
}
date = (new Date(date)).getTime();
return date < Math.max((new Date(rangeStart)).getTime(), (new Date(rangeEnd)).getTime())
&& date > Math.min((new Date(rangeStart)).getTime(), (new Date(rangeEnd)).getTime());
}
/**
* @param {?} dateRange
* @return {?}
*/
ensureRangeValueOrder(dateRange) {
if (Array.isArray(dateRange) && dateRange.length === 2) {
dateRange.sort((/**
* @param {?} a
* @param {?} b
* @return {?}
*/
(a, b) => {
return (new Date(a)).getTime() - (new Date(b).getTime());
}));
}
return dateRange;
}
/**
* @param {?=} invocation
* @return {?}
*/
onNextMonth(invocation) {
if (this.hasNextMonth() || invocation === 'init') {
/** @type {?} */
let maxDateInRange;
if (invocation === 'init') {
maxDateInRange = this.selectedRange.reduce((/**
* @param {?} start
* @param {?} end
* @return {?}
*/
(start, end) => new Date(end) > new Date(start) ? end : start));
}
super.onNextMonth(maxDateInRange, 'init');
this.notifyCalenderChange();
}
}
/**
* @return {?}
*/
hasNextMonth() {
/** @type {?} */
let hasNextMonth = true;
// 副面板只用考虑maxDate的影响
// 主面板同时考虑maxDate和日历的影响
// minDate的影响在super.hasNextMonth()中有计算
if (!this.isAuxiliary && this.currentCalendars[0] && this.currentCalendars[1]) {
hasNextMonth = this.isBeforeMoreThanOneMonth(this.currentCalendars[0], this.currentCalendars[1]);
}
return hasNextMonth && super.hasNextMonth();
}
/**
* @return {?}
*/
onPreMonth() {
if (this.hasPreMonth()) {
super.onPreMonth();
this.notifyCalenderChange();
}
}
/**
* @return {?}
*/
hasPreMonth() {
/** @type {?} */
let hasPrevMonth = true;
// 主面板只用考虑minDate的影响
// 副面板同时考虑minDate和日历的影响
// minDate的影响在super.hasPreMonth()中有计算
if (this.isAuxiliary && this.currentCalendars[0] && this.currentCalendars[1]) {
hasPrevMonth = this.isAfterMoreThanOneMonth(this.currentCalendars[1], this.currentCalendars[0]);
}
return hasPrevMonth && super.hasPreMonth();
}
/**
* @return {?}
*/
hasPreYearOption() {
/** @type {?} */
let hasPrevYear = true;
if (this.currentCalendars[0] && this.currentCalendars[1]) {
// 主面板只用考虑minDate的影响
if (!this.isAuxiliary) {
hasPrevYear = this.currentCalendars[0].year > this.minDate.getFullYear();
}
else { // 副面板同时考虑minDate和日历的影响
hasPrevYear = this.currentCalendars[1].year > this.minDate.getFullYear() &&
this.isBeforeMoreThanOneYear(this.currentCalendars[0], this.currentCalendars[1]);
}
}
return hasPrevYear;
}
/**
* @return {?}
*/
hasNextYearOption() {
/** @type {?} */
let hasNextYear = true;
if (this.currentCalendars[0] && this.currentCalendars[1]) {
// 副面板只用考虑maxDate的影响
if (this.isAuxiliary) {
hasNextYear = this.currentCalendars[1].year < this.maxDate.getFullYear();
}
else { // 主面板同时考虑maxDate和日历的影响
hasNextYear = this.currentCalendars[0].year < this.maxDate.getFullYear() &&
this.isAfterMoreThanOneYear(this.currentCalendars[1], this.currentCalendars[0]);
}
}
return hasNextYear;
}
/**
* @return {?}
*/
onPreYear() {
if (this.hasPreYearOption()) {
this.onSelectYear(this.currentYear - 1);
this.notifyCalenderChange();
}
}
/**
* @return {?}
*/
onNextYear() {
if (this.hasNextYearOption()) {
this.onSelectYear(this.currentYear + 1);
this.notifyCalenderChange();
}
}
/**
* @param {?} dateA
* @param {?} dateB
* @return {?}
*/
isBeforeMoreThanOneMonth(dateA, dateB) {
if (dateA.year > dateB.year) {
return false;
}
if (dateA.year === dateB.year && dateB.month <= dateA.month + 1) {
return false;
}
// 处理A日期为B日期前一年12月同时B日期为1月的特殊情况
return !(dateB.year - dateA.year === 1 && dateA.month === 11 && dateB.month === 0);
}
/**
* @param {?} dateA
* @param {?} dateB
* @return {?}
*/
isAfterMoreThanOneMonth(dateA, dateB) {
if (dateA.year < dateB.year) {
return false;
}
if (dateA.year === dateB.year && dateB.month + 1 >= dateA.month) {
return false;
}
// 处理A日期为B日期后一年1月同时B日期为12月的特殊情况
return !(dateA.year - dateB.year === 1 && dateA.month === 0 && dateB.month === 11);
}
/**
* @param {?} dateA
* @param {?} dateB
* @return {?}
*/
isBeforeMoreThanOneYear(dateA, dateB) {
if (dateA.year >= dateB.year) {
return false;
}
// 处理B日期比A日期大1年同时A日期月份大于B日期月份的情况
return !(dateB.year - dateA.year === 1 && dateA.month >= dateB.month);
}
/**
* @param {?} dateA
* @param {?} dateB
* @return {?}
*/
isAfterMoreThanOneYear(dateA, dateB) {
if (dateA.year <= dateB.year) {
return false;
}
// 处理A日期比B日期大1年同时A日期月份小于B日期月份的情况
return (!(dateA.year - dateB.year === 1 && dateA.month <= dateB.month));
}
/**
* @protected
* @return {?}
*/
notifyCalenderChange() {
this.syncPickerPair.emit({
year: this.currentYear,
month: this.currentMonth
});
}
/**
* @return {?}
*/
confirmTime() {
this.consolidateTime.emit();
}
/**
* @private
* @param {?} date
* @return {?}
*/
setTime(date) {
this.currentHour = this.showTime && date ? date.getHours() : 0;
this.currentMinute = this.showTime && date ? date.getMinutes() : 0;
this.currentSecond = this.showTime && date ? date.getSeconds() : 0;
}
/**
* @protected
* @return {?}
*/
onSelectDateChanged() {
/** @type {?} */
let date = this.selectedDate || new Date();
if (date.getTime() < this.minDate.getTime()) {
date = this.minDate;
}
if (date.getTime() > this.maxDate.getTime()) {
date = this.maxDate;
}
this.currentYear = date.getFullYear();
this.currentMonth = date.getMonth();
if (!this.showTime) {
return;
}
switch (this.isAuxiliary) {
case false:
// Left panel
this.currentHour = this.rangeStart ? this.rangeStart.getHours() : 0;
this.currentMinute = this.rangeStart ? this.rangeStart.getMinutes() : 0;
this.currentSecond = this.rangeStart ? this.rangeStart.getSeconds() : 0;
break;
case true:
// Right panel
this.currentHour = this.rangeEnd ? this.rangeEnd.getHours() : 0;
this.currentMinute = this.rangeEnd ? this.rangeEnd.getMinutes() : 0;
this.currentSecond = this.rangeEnd ? this.rangeEnd.getSeconds() : 0;
break;
}
}
/**
* @return {?}
*/
get currentTime() {
return {
hour: this.currentHour,
minute: this.currentMinute,
second: this.currentSecond
};
}
}
SingleDateRangePickerComponent.decorators = [
{ type: Component, args: [{
selector: 'd-datepicker-range-single',
template: "<div class=\"devui-month-view {{ cssClass }}\">\r\n <table class=\"devui-table devui-month-view-table\">\r\n <thead>\r\n <tr class=\"devui-calender-header\">\r\n <td>\r\n <a\r\n class=\"devui-btn-link\"\r\n aria-hidden=\"true\"\r\n (click)=\"onPreYear()\"\r\n [ngClass]=\"{ 'devui-year-month-disabled': !hasPreYearOption() }\"\r\n >\r\n <span class=\"left-triangle\"></span>\r\n <span class=\"left-triangle second\"></span>\r\n </a>\r\n </td>\r\n <td>\r\n <a\r\n class=\"devui-btn-link devui-btn-left\"\r\n aria-hidden=\"true\"\r\n (click)=\"onPreMonth()\"\r\n [ngClass]=\"{ 'devui-year-month-disabled': !hasPreMonth() }\"\r\n >\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"collapse-left\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g>\r\n <polygon\r\n id=\"left-path\"\r\n fill-rule=\"nonzero\"\r\n points=\"10.7071068 12.2928932 9.29289322 13.7071068 3.58578644 8 9.29289322 2.29289322 10.7071068 3.70710678 6.41421356 8\"\r\n ></polygon>\r\n </g>\r\n </g>\r\n </svg>\r\n </a>\r\n </td>\r\n <td colspan=\"3\" class=\"devui-dropdown\">\r\n <span class=\"devui-date-title\">{{ (i18nText?.monthsOfYear)[currentMonth] }}</span>\r\n <span class=\"devui-date-title\">{{ currentYear }}</span>\r\n </td>\r\n <td>\r\n <a\r\n class=\"devui-btn-link devui-btn-right\"\r\n aria-hidden=\"true\"\r\n (click)=\"onNextMonth()\"\r\n [ngClass]=\"{ 'devui-year-month-disabled': !hasNextMonth() }\"\r\n >\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"collapse-right\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g>\r\n <polygon\r\n id=\"right-path\"\r\n fill-rule=\"nonzero\"\r\n points=\"10.7071068 12.2928932 9.29289322 13.7071068 3.58578644 8 9.29289322 2.29289322 10.7071068 3.70710678 6.41421356 8\"\r\n ></polygon>\r\n </g>\r\n </g>\r\n </svg>\r\n </a>\r\n </td>\r\n <td>\r\n <a\r\n class=\"devui-btn-link\"\r\n aria-hidden=\"true\"\r\n (click)=\"onNextYear()\"\r\n [ngClass]=\"{ 'devui-year-month-disabled': !hasNextYearOption() }\"\r\n >\r\n <span class=\"right-triangle\"></span>\r\n <span class=\"right-triangle second\"></span>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr class=\"small text-center devui-week-header\">\r\n <td *ngFor=\"let item of i18nText?.daysOfWeek\">{{ item }}</td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let week of displayWeeks\">\r\n <td\r\n *ngFor=\"let day of week\"\r\n class=\"devui-day\"\r\n [ngClass]=\"{\r\n 'devui-out-of-month': !day.inMonth,\r\n 'devui-in-month-day': day.inMonth,\r\n active: isSelectDay(day.date),\r\n disabled: isDisabledDay(day.date),\r\n 'devui-in-range': isInRange(day.date)\r\n }\"\r\n (click)=\"onSelectDate($event, day.date)\"\r\n (mouseover)=\"emitHoverDate($event, day.date)\"\r\n >\r\n <div class=\"devui-calendar-date\">{{ day.day }}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <tr class=\"time-picker-view\" *ngIf=\"showTime\">\r\n <ng-container *ngIf=\"!customViewTemplate\">\r\n <td colspan=\"4\">\r\n <div class=\"devui-timepicker\" *ngIf=\"showTime\" [ngClass]=\"{ 'devui-timepicker-disabled': isDisabledTime() }\">\r\n <div class=\"devui-time\">\r\n <input type=\"number\" [(ngModel)]=\"currentHour\" max=\"23\" min=\"0\" [disabled]=\"isDisabledTime()\" />\r\n <div class=\"devui-btn-nav\" *ngIf=\"!isDisabledTime()\">\r\n <div class=\"btn-up\" (click)=\"timeUp('h')\"></div>\r\n <div class=\"btn-down\" (click)=\"timeDown('h')\"></div>\r\n </div>\r\n </div>\r\n <div class=\"devui-time\">\r\n <input type=\"number\" class=\"devui-minutes\" [(ngModel)]=\"currentMinute\" max=\"59\" min=\"0\" [disabled]=\"isDisabledTime()\" />\r\n <div class=\"devui-btn-nav\" *ngIf=\"!isDisabledTime()\">\r\n <div class=\"btn-up\" (click)=\"timeUp('m')\"></div>\r\n <div class=\"btn-down\" (click)=\"timeDown('m')\"></div>\r\n </div>\r\n </div>\r\n <div class=\"devui-time\">\r\n <input type=\"number\" class=\"devui-seconds\" [(ngModel)]=\"currentSecond\" max=\"59\" min=\"0\" [disabled]=\"isDisabledTime()\" />\r\n <div class=\"devui-btn-nav\" *ngIf=\"!isDisabledTime()\">\r\n <div class=\"btn-up\" (click)=\"timeUp('s')\"></div>\r\n <div class=\"btn-down\" (click)=\"timeDown('s')\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td colspan=\"3\" *ngIf=\"isAuxiliary\">\r\n <div class=\"devui-btn-wrapper\">\r\n <d-button bsStyle=\"primary\" [disabled]=\"!rangeStart || !rangeEnd\" (btnClick)=\"confirmTime()\" bsSize=\"sm\">\r\n {{ i18nCommonText?.btnConfirm }}\r\n </d-button>\r\n </div>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tfoot>\r\n </table>\r\n</div>\r\n",
providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
() => SingleDateRangePickerComponent)),
multi: true
}],
styles: [".devui-month-view{background-color:#fff;font-size:12px;width:240px;text-align:center;box-shadow:0 4px 8px 0 rgba(41,48,64,.2);border-radius:2px;position:relative;box-shadow:none}.devui-month-view .devui-month-view-table{margin-bottom:0;background:#fff;table-layout:fixed;border-collapse:collapse}.devui-month-view .devui-date-title{font-weight:700;cursor:pointer;font-size:12px}.devui-month-view .devui-btn-link{text-decoration:none;cursor:pointer}.devui-month-view .devui-btn-link.devui-year-month-disabled{opacity:.3;cursor:not-allowed}.devui-month-view .devui-btn-link .left-triangle,.devui-month-view .devui-btn-link .right-triangle{display:inline-block;position:absolute;top:6px;width:0;height:0;border:6px solid}.devui-month-view .devui-btn-link .left-triangle{left:6px;border-color:transparent #252b3a transparent transparent}.devui-month-view .devui-btn-link .right-triangle{right:6px;border-color:transparent transparent transparent #252b3a}.devui-month-view .devui-btn-link .left-triangle.second{left:12px}.devui-month-view .devui-btn-link .right-triangle.second{right:12px}.devui-month-view .devui-btn-link svg #left-path,.devui-month-view .devui-btn-link svg #right-path{fill:#252b3a}.devui-month-view .devui-btn-link:not(.devui-year-month-disabled):hover .left-triangle{border-right-color:#344899}.devui-month-view .devui-btn-link:not(.devui-year-month-disabled):hover .right-triangle{border-left-color:#344899}.devui-month-view .devui-btn-link:not(.devui-year-month-disabled):hover #left-path,.devui-month-view .devui-btn-link:not(.devui-year-month-disabled):hover #right-path,.devui-month-view .devui-btn-link:not(.devui-year-month-disabled):hover svg #left-path,.devui-month-view .devui-btn-link:not(.devui-year-month-disabled):hover svg #right-path{fill:#344899}.devui-month-view .date-select{border:none;background:0 0;outline:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.devui-month-view .devui-week-header{cursor:default;margin-bottom:16px}.devui-month-view .devui-week-header td{width:32px;height:24px;line-height:24px;color:#252b3a;border:none}.devui-month-view .devui-day:not(.disabled){cursor:pointer;font-size:12px;color:#dfe1e6}.devui-month-view .devui-day.disabled{cursor:not-allowed}.devui-calendar-date{display:block;margin:0 3px;width:20px;height:20px;padding:0;line-height:20px;background:0 0;text-align:center;-webkit-transition:background .3s;transition:background .3s;font-size:12px;color:#252b3a}.devui-month-view .devui-day:hover:not(.active):not(.disabled) .devui-calendar-date{background-color:#f2f5fc}.devui-month-view .devui-day.active:hover .devui-calendar-date{background-color:#344899;color:#fff}.devui-month-view .devui-in-month-day.disabled:not(.active) .devui-calendar-date{color:#252b3a;background-color:#dfe1e6;opacity:.8;cursor:not-allowed}.devui-month-view .devui-in-month-day.active .devui-calendar-date{background:#5e7ce0;color:#fff}.devui-month-view .devui-out-of-month .devui-calendar-date{opacity:.8;background-color:#fff;color:#adb0b8}.devui-month-view .devui-minutes:before{content:':';text-align:center;position:absolute;margin-left:-13px}.devui-month-view .devui-seconds:before{content:':';text-align:center;position:absolute;margin-left:-13px;z-index:999}.devui-yearOption{min-width:4em;margin-left:4.5em;max-height:255px;overflow-x:hidden;overflow-y:auto}.devui-monthOption{min-width:3em;margin-left:1em}.devui-monthOption li,.devui-yearOption li{text-align:center}.devui-monthOption li:hover,.devui-yearOption li:hover{background:#344899;color:#fff;cursor:pointer}.devui-monthOption li.active,.devui-yearOption li.active{color:#fff;background-color:#5e7ce0}.devui-monthOption li.active:hover,.devui-yearOption li.active:hover{background-color:#344899}.devui-month-view .devui-timepicker{background:#f8f8f8;display:-webkit-box;display:flex;-webkit-box-pack:space-evenly;justify-content:space-evenly}.devui-month-view .devui-timepicker input{outline:0;border:0;background:#f8f8f8;color:#252b3a;width:30px;padding:0 0 0 3px;height:30px;text-align:center}.devui-month-view .devui-timepicker.devui-timepicker-disabled input{cursor:not-allowed;opacity:.3}.devui-month-view .devui-timepicker .devui-time{position:relative;display:inline-block;width:40px}.devui-month-view .devui-timepicker .devui-time:not(:first-child):before{content:':'}.devui-month-view .devui-table>tbody>tr>td{vertical-align:middle;padding:4px;border-top:none}.devui-month-view .devui-table>tbody>tr>td:not(.disabled){border-top:none;background:#fff}.devui-month-view .devui-table>thead>tr>td{vertical-align:top;line-height:1.5;padding:4px}.devui-noSelect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.devui-month-view .devui-month-view-table td{border-bottom:none}.devui-month-view .devui-table tfoot{border-top:1px solid #f8f8f8}.devui-month-view tfoot td{padding:2px;vertical-align:middle;border-top:none}.devui-dropdown-menu{font-size:12px}.devui-btn-wrapper{margin-top:0}.devui-btn-nav{display:none;position:absolute;right:9px;top:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.devui-btn-nav .btn-down,.devui-btn-nav .btn-up{position:absolute;width:0;height:0;border:6px solid}.devui-btn-nav .btn-up{padding-top:2px;padding-bottom:1px;border-color:transparent transparent #252b3a}.devui-btn-nav .btn-up:hover{border-color:transparent transparent #344899}.devui-btn-nav .btn-down{top:16px;padding-bottom:4px;border-color:#252b3a transparent transparent}.devui-btn-nav .btn-down:hover{border-color:#344899 transparent transparent}.devui-time input[type=number]::-webkit-inner-spin-button,.devui-time input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.devui-time input[type=number]{-moz-appearance:textfield}.devui-time:hover .devui-btn-nav{display:block}:host ::ng-deep .cdk-overlay-pane d-datepicker.devui-dropdown-menu{padding:0}.devui-month-view .devui-table>tbody>tr>td.devui-in-month-day.devui-in-range:not(.active):not(.disabled){background-color:#f2f5fc;color:#252b3a}.devui-month-view .devui-table>tbody>tr>td.devui-in-month-day.devui-in-range.disabled:not(.active){background-color:#dfe1e6;opacity:.8;color:#252b3a}.devui-month-view .devui-table>tbody>tr>td.devui-in-month-day.active.disabled{background-color:#dfe1e6}.devui-month-view .devui-table>tbody>tr>td.devui-in-month-day.active.disabled .devui-calendar-date{opacity:.8}.devui-month-view .devui-in-month-day.devui-in-range.disabled:not(.active) .devui-calendar-date{color:#252b3a;cursor:not-allowed;width:100%}.devui-month-view .devui-day.devui-out-of-month.active:hover .devui-calendar-date{background-color:transparent;color:#575d6c}.devui-month-view .devui-day.devui-out-of-month.active.disabled{background-color:transparent}tr.devui-calender-header{height:29px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.devui-month-view .devui-btn-link.devui-btn-right{-webkit-transform:scale(-1,1);transform:scale(-1,1);display:inline-block;line-height:1}"]
}] }
];
/** @nocollapse */
SingleDateRangePickerComponent.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 },
{ type: DatePickerConfig },
{ type: ChangeDetectorRef },
{ type: I18nService }
];
SingleDateRangePickerComponent.propDecorators = {
selectedRange: [{ type: Input }],
rangePicker: [{ type: Input }],
isAuxiliary: [{ type: Input }],
currentCalendars: [{ type: Input }],
hoverOnDate: [{ type: Output }],
rangeSelected: [{ type: Output }],
rangeSelecting: [{ type: Output }],
syncPickerPair: [{ type: Output }],
consolidateTime: [{ type: Output }]
};
if (false) {
/** @type {?} */
SingleDateRangePickerComponent.prototype.selectedRange;
/** @type {?} */
SingleDateRangePickerComponent.prototype.rangePicker;
/** @type {?} */
SingleDateRangePickerComponent.prototype.isAuxiliary;
/** @type {?} */
SingleDateRangePickerComponent.prototype.currentCalendars;
/** @type {?} */
SingleDateRangePickerComponent.prototype.hoverOnDate;
/** @type {?} */
SingleDateRangePickerComponent.prototype.rangeSelected;
/** @type {?} */
SingleDateRangePickerComponent.prototype.rangeSelecting;
/** @type {?} */
SingleDateRangePickerComponent.prototype.syncPickerPair;
/** @type {?} */
SingleDateRangePickerComponent.prototype.consolidateTime;
/** @type {?} */
SingleDateRangePickerComponent.prototype.rangeStart;
/** @type {?} */
SingleDateRangePickerComponent.prototype.rangeEnd;
/** @type {?} */
SingleDateRangePickerComponent.prototype.previewEnd;
/**
* @type {?}
* @protected
*/
SingleDateRangePickerComponent.prototype.selectingRange;
/**
* @type {?}
* @protected
*/
SingleDateRangePickerComponent.prototype.elementRef;
/**
* @type {?}
* @protected
*/
SingleDateRangePickerComponent.prototype.renderer;
/**
* @type {?}
* @protected
*/
SingleDateRangePickerComponent.prototype.datePickerConfig;
/**
* @type {?}
* @protected
*/
SingleDateRangePickerComponent.prototype.changeDetectorRef;
/**
* @type {?}
* @protected
*/
SingleDateRangePickerComponent.prototype.i18n;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLWRhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2RhdGVwaWNrZXIvIiwic291cmNlcyI6WyJzaW5nbGUtZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFJbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixJQUFJLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixJQUFJLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQWtDLDJCQUEyQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7QUFFbkgsZ0NBR0M7OztJQUZDLDBCQUFhOztJQUNiLDJCQUFjOztBQWNoQixNQUFNLE9BQU8sOEJBQStCLFNBQVEseUJBQXlCOzs7Ozs7OztJQWUzRSxZQUNZLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxpQkFBb0MsRUFDcEMsSUFBaUI7UUFFM0IsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFON0QsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxTQUFJLEdBQUosSUFB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QUM3QiwwREFBcUM7O0lBQ3JDLHFEQUEyQzs7SUFDM0MsdURBQTZFOztJQUM3RSx3REFBOEU7O0lBQzlFLHdEQUFrRDs7SUFDbEQseURBQStDOztJQUMvQyxvREFBa0I7O0lBQ2xCLGtEQUFnQjs7SUFDaEIsb0RBQWtCOzs7OztJQUNsQix3REFBa0M7Ozs7O0lBR2hDLG9EQUFnQzs7Ozs7SUFDaEMsa0RBQTZCOzs7OztJQUM3QiwwREFBNEM7Ozs7O0lBQzVDLDJEQUE4Qzs7Ozs7SUFDOUMsOENBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBSZW5kZXJlcjIsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRGF0ZXBpY2tlckNvbXBvbmVudCBhcyBTaW5nbGVEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb25maWdTZXJ2aWNlIGFzIERh