UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

615 lines 71.4 kB
/** * @fileoverview added by tsickle * Generated from: two-datepicker/two-datepicker-single.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'; export class TwoDatepickerSingleComponent 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 = this.rangeEnd; super.ngOnInit(); // 处理选择的日期范围开始和结束在同一个月的情况 if (rangeStart && rangeEnd && rangeStart.getFullYear() === rangeEnd.getFullYear() && rangeStart.getMonth() === rangeEnd.getMonth()) { this.onNextMonth('init'); } this.selectedDate = new Date(this.currentYear, this.currentMonth); } if (!this.selectedRange.every((/** * @param {?} curDate * @return {?} */ curDate => !!curDate))) { this.selectingRange = true; } 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 {?} */ selectSingle(date) { if (date) { /** @type {?} */ const ensureRange = this.ensureRangeValueOrder([this.rangeStart, this.rangeEnd]); this.rangeChange(ensureRange); } } /** * @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.whichOpen === 'start') { if (!this.rangeEnd) { this.rangeEnd = null; this.selectingRange = true; } else { this.selectingRange = false; } if (!passive) { this.rangeStart = this.convertDate(date); this.selectSingle(date); this.rangeSelecting.emit(this.rangeStart); } } else if (this.whichOpen === 'end') { if (this.rangeStart && this.rangeEnd || (!this.rangeStart && !this.rangeEnd)) { this.selectingRange = false; } else { this.selectingRange = true; if (!this.rangeStart) { this.rangeStart = null; } if (!this.rangeEnd) { this.rangeEnd = null; } } if (!passive) { this.rangeEnd = this.convertDate(date); this.selectSingle(date); this.rangeSelecting.emit(this.rangeEnd); } } } /** * @param {?} range * @return {?} */ rangeChange(range) { [this.rangeStart, this.rangeEnd] = 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.date, selectedRange: selectedRange }); } /** * @param {?} date * @return {?} */ isSelectDay(date) { /** @type {?} */ let rangeSource = this.selectedRange; if (this.selectingRange) { rangeSource = [this.rangeStart || this.rangeEnd, 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.rangeStart, this.rangeEnd] = changes['selectedRange'].currentValue; if (this.rangeStart && this.rangeEnd) { this.selectingRange = false; } } } /** * @param {?} date * @return {?} */ isInRange(date) { /** @type {?} */ let rangeStart = this.rangeStart; /** @type {?} */ let rangeEnd = this.rangeEnd; if (this.selectingRange) { if (rangeEnd) { rangeStart = this.previewEnd; } else if (rangeStart) { 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.every((/** * @param {?} curDate * @return {?} */ curDate => !!curDate))) { if (dateRange[0].getTime() > dateRange[1].getTime()) { if (this.whichOpen === 'start') { return [dateRange[0], null]; } else { return [null, dateRange[1]]; } } } 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 }; } } TwoDatepickerSingleComponent.decorators = [ { type: Component, args: [{ selector: 'd-two-datepicker-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 {?} */ () => TwoDatepickerSingleComponent)), 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 */ TwoDatepickerSingleComponent.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 }, { type: DatePickerConfig }, { type: ChangeDetectorRef }, { type: I18nService } ]; TwoDatepickerSingleComponent.propDecorators = { selectedRange: [{ type: Input }], rangePicker: [{ type: Input }], isAuxiliary: [{ type: Input }], currentCalendars: [{ type: Input }], whichOpen: [{ type: Input }], hoverOnDate: [{ type: Output }], rangeSelected: [{ type: Output }], rangeSelecting: [{ type: Output }], syncPickerPair: [{ type: Output }], consolidateTime: [{ type: Output }] }; if (false) { /** @type {?} */ TwoDatepickerSingleComponent.prototype.selectedRange; /** @type {?} */ TwoDatepickerSingleComponent.prototype.rangePicker; /** @type {?} */ TwoDatepickerSingleComponent.prototype.isAuxiliary; /** @type {?} */ TwoDatepickerSingleComponent.prototype.currentCalendars; /** @type {?} */ TwoDatepickerSingleComponent.prototype.whichOpen; /** @type {?} */ TwoDatepickerSingleComponent.prototype.hoverOnDate; /** @type {?} */ TwoDatepickerSingleComponent.prototype.rangeSelected; /** @type {?} */ TwoDatepickerSingleComponent.prototype.rangeSelecting; /** @type {?} */ TwoDatepickerSingleComponent.prototype.syncPickerPair; /** @type {?} */ TwoDatepickerSingleComponent.prototype.consolidateTime; /** @type {?} */ TwoDatepickerSingleComponent.prototype.rangeStart; /** @type {?} */ TwoDatepickerSingleComponent.prototype.rangeEnd; /** @type {?} */ TwoDatepickerSingleComponent.prototype.previewEnd; /** * @type {?} * @protected */ TwoDatepickerSingleComponent.prototype.selectingRange; /** * @type {?} * @protected */ TwoDatepickerSingleComponent.prototype.elementRef; /** * @type {?} * @protected */ TwoDatepickerSingleComponent.prototype.renderer; /** * @type {?} * @protected */ TwoDatepickerSingleComponent.prototype.datePickerConfig; /** * @type {?} * @protected */ TwoDatepickerSingleComponent.prototype.changeDetectorRef; /** * @type {?} * @protected */ TwoDatepickerSingleComponent.prototype.i18n; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLWRhdGVwaWNrZXItc2luZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2RhdGVwaWNrZXIvIiwic291cmNlcyI6WyJ0d28tZGF0ZXBpY2tlci90d28tZGF0ZXBpY2tlci1zaW5nbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFJbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixJQUFJLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixJQUFJLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQWtDLDJCQUEyQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFnQnBILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSx5QkFBeUI7Ozs7Ozs7O0lBZ0J6RSxZQUNZLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxpQkFBb0MsRUFDcEMsSUFBaUI7UUFFM0IsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFON0QsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBcEJwQixrQkFBYSxHQUFXLEtBQUss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