ngx-pluto
Version:
223 lines • 17.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ViewEncapsulation, Input, ViewChild, Output, EventEmitter } from "@angular/core";
import * as moment_ from 'moment';
/** @type {?} */
var moment = moment_;
import { NpDatePickerService } from "../date-picker.service";
import { NpDatePickerPopup } from "./date-picker-popup";
import { trigger, transition, style, animate } from "@angular/animations";
/**
* Date range picker popup组件
*/
var NpDateRangePickerPopup = /** @class */ (function () {
function NpDateRangePickerPopup(datePickerService) {
this.datePickerService = datePickerService;
this.datePickerType = 'date-range-picker';
this.footerItems = [];
this.onStartDayClicked = new EventEmitter();
this.onEndDayClicked = new EventEmitter();
this.onItemLabelClicked = new EventEmitter();
this.nowDate = moment();
}
/**
* @return {?}
*/
NpDateRangePickerPopup.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.buildPicker();
setTimeout((/**
* @return {?}
*/
function () {
_this.buildDayPanelStyle(moment(_this.startDate));
}), 0);
};
/**
* @param {?} dayData
* @return {?}
*/
NpDateRangePickerPopup.prototype.onStartPickerDayClicked = /**
* @param {?} dayData
* @return {?}
*/
function (dayData) {
/** @type {?} */
var dates = this.buildStartAndEndDates();
this.onStartDayClicked.emit({ day: dayData, dates: dates });
};
/**
* @param {?} dayData
* @return {?}
*/
NpDateRangePickerPopup.prototype.onEndPickerDayClicked = /**
* @param {?} dayData
* @return {?}
*/
function (dayData) {
/** @type {?} */
var dates = this.buildStartAndEndDates();
this.onEndDayClicked.emit({ day: dayData, dates: dates });
};
/**
* @param {?} dayData
* @return {?}
*/
NpDateRangePickerPopup.prototype.onStartPickerDayMouseover = /**
* @param {?} dayData
* @return {?}
*/
function (dayData) {
this.buildDayPanelStyle(dayData.date);
};
/**
* @param {?} dayData
* @return {?}
*/
NpDateRangePickerPopup.prototype.onEndPickerDayMouseover = /**
* @param {?} dayData
* @return {?}
*/
function (dayData) {
this.buildDayPanelStyle(dayData.date);
};
/**
* @param {?} item
* @return {?}
*/
NpDateRangePickerPopup.prototype.onFooterItemLabelClicked = /**
* @param {?} item
* @return {?}
*/
function (item) {
this.onItemLabelClicked.emit(item);
};
/**
* @return {?}
*/
NpDateRangePickerPopup.prototype.ngOnChanges = /**
* @return {?}
*/
function () {
};
/**
* @private
* @param {?} date
* @return {?}
*/
NpDateRangePickerPopup.prototype.buildDayPanelStyle = /**
* @private
* @param {?} date
* @return {?}
*/
function (date) {
/** @type {?} */
var dates = this.buildStartAndEndDates();
this.startPicker.buildPanelForRangePicker(date, dates);
this.endPicker.buildPanelForRangePicker(date, dates);
};
/**
* @private
* @return {?}
*/
NpDateRangePickerPopup.prototype.buildPicker = /**
* @private
* @return {?}
*/
function () {
if (this.startPicker) {
this.startPicker.datePickerType = this.datePickerType;
}
if (this.endPicker) {
this.endPicker.datePickerType = this.datePickerType;
}
};
/**
* @private
* @return {?}
*/
NpDateRangePickerPopup.prototype.buildStartAndEndDates = /**
* @private
* @return {?}
*/
function () {
if (!this.datePickerService.isValid(this.startDate) || !this.datePickerService.isValid(this.endDate)) {
return [];
}
if (moment(this.startDate) < moment(this.endDate)) {
return [this.startDate, this.endDate];
}
return [this.endDate, this.startDate];
};
NpDateRangePickerPopup.decorators = [
{ type: Component, args: [{
selector: "np-date-range-picker-popup",
template: "<div class=\"np-date-range-picker-popup-wrapper flex-wrap row-flex\">\r\n <np-date-picker-popup class=\"start-picker\" #startPicker [date]=\"startDate\" [footerItems]=\"footerItems\"\r\n (onItemLabelClicked)=\"onFooterItemLabelClicked($event)\" (onDayClicked)=\"onStartPickerDayClicked($event)\"\r\n (onDayMouseover)=\"onStartPickerDayMouseover($event)\">\r\n </np-date-picker-popup>\r\n <np-date-picker-popup class=\"end-picker\" #endPicker [date]=\"endDate\" (onDayClicked)=\"onEndPickerDayClicked($event)\"\r\n (onDayMouseover)=\"onEndPickerDayMouseover($event)\"></np-date-picker-popup>\r\n</div>\r\n",
encapsulation: ViewEncapsulation.None,
animations: [trigger('date-picker-animations', [
transition(':enter', [
style({ opacity: 0 }),
animate(300, style({ opacity: 1 })),
]),
transition(':leave', [
animate(300, style({ opacity: 0 })),
]),
])],
styles: [""]
}] }
];
/** @nocollapse */
NpDateRangePickerPopup.ctorParameters = function () { return [
{ type: NpDatePickerService }
]; };
NpDateRangePickerPopup.propDecorators = {
startDate: [{ type: Input }],
endDate: [{ type: Input }],
onStartDayClicked: [{ type: Output }],
onEndDayClicked: [{ type: Output }],
onItemLabelClicked: [{ type: Output }],
startPicker: [{ type: ViewChild, args: ['startPicker',] }],
endPicker: [{ type: ViewChild, args: ['endPicker',] }]
};
return NpDateRangePickerPopup;
}());
export { NpDateRangePickerPopup };
if (false) {
/** @type {?} */
NpDateRangePickerPopup.prototype.datePickerType;
/** @type {?} */
NpDateRangePickerPopup.prototype.footerItems;
/**
* 传入的第一个datepicker的时间,可以是moment实例,也可以是可转换为moment的字符串
* @type {?}
*/
NpDateRangePickerPopup.prototype.startDate;
/**
* 传入的第二个datepicker的时间,可以是moment实例,也可以是可转换为moment的字符串
* @type {?}
*/
NpDateRangePickerPopup.prototype.endDate;
/** @type {?} */
NpDateRangePickerPopup.prototype.onStartDayClicked;
/** @type {?} */
NpDateRangePickerPopup.prototype.onEndDayClicked;
/** @type {?} */
NpDateRangePickerPopup.prototype.onItemLabelClicked;
/** @type {?} */
NpDateRangePickerPopup.prototype.startPicker;
/** @type {?} */
NpDateRangePickerPopup.prototype.endPicker;
/** @type {?} */
NpDateRangePickerPopup.prototype.nowDate;
/**
* @type {?}
* @private
*/
NpDateRangePickerPopup.prototype.datePickerService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItcG9wdXAuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcGx1dG8vIiwic291cmNlcyI6WyJsaWIvZGF0ZS1waWNrZXIvY29tcG9uZW50cy9kYXRlLXJhbmdlLXBpY2tlci1wb3B1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7O0lBQU8sTUFBTSxHQUFHLE9BQU87QUFDekQsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFLMUU7SUFzQ0UsZ0NBQW9CLGlCQUFzQztRQUF0QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBckIxRCxtQkFBYyxHQUFtQixtQkFBbUIsQ0FBQztRQUNyRCxnQkFBVyxHQUEyQixFQUFFLENBQUM7UUFXL0Isc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQW1FLENBQUM7UUFDeEcsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBbUUsQ0FBQztRQUN0Ryx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUt4RSxZQUFPLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFMkMsQ0FBQzs7OztJQUUvRCx5Q0FBUTs7O0lBQVI7UUFBQSxpQkFNQztRQUxDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixVQUFVOzs7UUFBQztZQUNULEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSSxDQUFDLFNBQVMs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QUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUNwQyxDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ3BDLENBQUM7eUJBQ0gsQ0FBQyxDQUFDOztpQkFDSjs7OztnQkF0QnlCLG1CQUFtQjs7OzRCQStCMUMsS0FBSzswQkFJTCxLQUFLO29DQUVMLE1BQU07a0NBQ04sTUFBTTtxQ0FDTixNQUFNOzhCQUVOLFNBQVMsU0FBQyxhQUFhOzRCQUN2QixTQUFTLFNBQUMsV0FBVzs7SUFtRXhCLDZCQUFDO0NBQUEsQUFyR0QsSUFxR0M7U0FyRlksc0JBQXNCOzs7SUFDakMsZ0RBQXFEOztJQUNyRCw2Q0FBeUM7Ozs7O0lBS3pDLDJDQUF3Qjs7Ozs7SUFJeEIseUNBQXNCOztJQUV0QixtREFBa0g7O0lBQ2xILGlEQUFnSDs7SUFDaEgsb0RBQXdFOztJQUV4RSw2Q0FBeUQ7O0lBQ3pELDJDQUFxRDs7SUFFckQseUNBQW1COzs7OztJQUVQLG1EQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7IGNvbnN0IG1vbWVudCA9IG1vbWVudF9cclxuaW1wb3J0IHsgRGF5RGF0YVBlck1vbnRoLCBOcERhdGVQaWNrZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL2RhdGUtcGlja2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckZvb3Rlckl0ZW0gfSBmcm9tIFwiLi9kYXRlLXBpY2tlci1mb290ZXJcIjtcclxuaW1wb3J0IHsgTnBEYXRlUGlja2VyUG9wdXAsIERhdGVQaWNrZXJUeXBlIH0gZnJvbSBcIi4vZGF0ZS1waWNrZXItcG9wdXBcIjtcclxuaW1wb3J0IHsgdHJpZ2dlciwgdHJhbnNpdGlvbiwgc3R5bGUsIGFuaW1hdGUgfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xyXG5cclxuLyoqXHJcbiAqIERhdGUgcmFuZ2UgcGlja2VyIHBvcHVw57uE5Lu2XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYG5wLWRhdGUtcmFuZ2UtcGlja2VyLXBvcHVwYCxcclxuICB0ZW1wbGF0ZVVybDogJ2RhdGUtcmFuZ2UtcGlja2VyLXBvcHVwLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydkYXRlLXJhbmdlLXBpY2tlci1wb3B1cC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBhbmltYXRpb25zOiBbdHJpZ2dlcignZGF0ZS1waWNrZXItYW5pbWF0aW9ucycsIFtcclxuICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwIH0pLFxyXG4gICAgICBhbmltYXRlKDMwMCwgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKSxcclxuICAgIF0pLFxyXG4gICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgICBhbmltYXRlKDMwMCwgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcclxuICAgIF0pLFxyXG4gIF0pXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE5wRGF0ZVJhbmdlUGlja2VyUG9wdXAgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGRhdGVQaWNrZXJUeXBlOiBEYXRlUGlja2VyVHlwZSA9ICdkYXRlLXJhbmdlLXBpY2tlcic7XHJcbiAgZm9vdGVySXRlbXM6IERhdGVQaWNrZXJGb290ZXJJdGVtW10gPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICog5Lyg5YWl55qE56ys5LiA5LiqZGF0ZXBpY2tlcueahOaXtumXtO+8jOWPr+S7peaYr21vbWVudOWunuS+i++8jOS5n+WPr+S7peaYr+WPr+i9rOaNouS4um1vbWVudOeahOWtl+espuS4slxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZTogYW55O1xyXG4gIC8qKlxyXG4gICAqIOS8oOWFpeeahOesrOS6jOS4qmRhdGVwaWNrZXLnmoTml7bpl7TvvIzlj6/ku6XmmK9tb21lbnTlrp7kvovvvIzkuZ/lj6/ku6XmmK/lj6/ovazmjaLkuLptb21lbnTnmoTlrZfnrKbkuLJcclxuICAgKi9cclxuICBASW5wdXQoKSBlbmREYXRlOiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoKSBvblN0YXJ0RGF5Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXk6IERheURhdGFQZXJNb250aCwgZGF0ZXM6IEFycmF5PG1vbWVudF8uTW9tZW50IHwgc3RyaW5nPiB9PigpO1xyXG4gIEBPdXRwdXQoKSBvbkVuZERheUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZGF5OiBEYXlEYXRhUGVyTW9udGgsIGRhdGVzOiBBcnJheTxtb21lbnRfLk1vbWVudCB8IHN0cmluZz4gfT4oKTtcclxuICBAT3V0cHV0KCkgb25JdGVtTGFiZWxDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlUGlja2VyRm9vdGVySXRlbT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc3RhcnRQaWNrZXInKSBzdGFydFBpY2tlcjogTnBEYXRlUGlja2VyUG9wdXA7XHJcbiAgQFZpZXdDaGlsZCgnZW5kUGlja2VyJykgZW5kUGlja2VyOiBOcERhdGVQaWNrZXJQb3B1cDtcclxuXHJcbiAgbm93RGF0ZSA9IG1vbWVudCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaWNrZXJTZXJ2aWNlOiBOcERhdGVQaWNrZXJTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkUGlja2VyKCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYnVpbGREYXlQYW5lbFN0eWxlKG1vbWVudCh0aGlzLnN0YXJ0RGF0ZSkpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBvblN0YXJ0UGlja2VyRGF5Q2xpY2tlZChkYXlEYXRhOiBEYXlEYXRhUGVyTW9udGgpIHtcclxuICAgIGxldCBkYXRlcyA9IHRoaXMuYnVpbGRTdGFydEFuZEVuZERhdGVzKCk7XHJcbiAgICB0aGlzLm9uU3RhcnREYXlDbGlja2VkLmVtaXQoeyBkYXk6IGRheURhdGEsIGRhdGVzOiBkYXRlcyB9KTtcclxuICB9XHJcblxyXG4gIG9uRW5kUGlja2VyRGF5Q2xpY2tlZChkYXlEYXRhOiBEYXlEYXRhUGVyTW9udGgpIHtcclxuICAgIGxldCBkYXRlcyA9IHRoaXMuYnVpbGRTdGFydEFuZEVuZERhdGVzKCk7XHJcbiAgICB0aGlzLm9uRW5kRGF5Q2xpY2tlZC5lbWl0KHsgZGF5OiBkYXlEYXRhLCBkYXRlczogZGF0ZXMgfSk7XHJcbiAgfVxyXG5cclxuICBvblN0YXJ0UGlja2VyRGF5TW91c2VvdmVyKGRheURhdGE6IERheURhdGFQZXJNb250aCkge1xyXG4gICAgdGhpcy5idWlsZERheVBhbmVsU3R5bGUoZGF5RGF0YS5kYXRlKTtcclxuICB9XHJcblxyXG4gIG9uRW5kUGlja2VyRGF5TW91c2VvdmVyKGRheURhdGE6IERheURhdGFQZXJNb250aCkge1xyXG4gICAgdGhpcy5idWlsZERheVBhbmVsU3R5bGUoZGF5RGF0YS5kYXRlKTtcclxuICB9XHJcblxyXG4gIG9uRm9vdGVySXRlbUxhYmVsQ2xpY2tlZChpdGVtOiBEYXRlUGlja2VyRm9vdGVySXRlbSkge1xyXG4gICAgdGhpcy5vbkl0ZW1MYWJlbENsaWNrZWQuZW1pdChpdGVtKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGREYXlQYW5lbFN0eWxlKGRhdGU6IG1vbWVudF8uTW9tZW50KSB7XHJcbiAgICBsZXQgZGF0ZXMgPSB0aGlzLmJ1aWxkU3RhcnRBbmRFbmREYXRlcygpO1xyXG4gICAgdGhpcy5zdGFydFBpY2tlci5idWlsZFBhbmVsRm9yUmFuZ2VQaWNrZXIoZGF0ZSwgZGF0ZXMpO1xyXG4gICAgdGhpcy5lbmRQaWNrZXIuYnVpbGRQYW5lbEZvclJhbmdlUGlja2VyKGRhdGUsIGRhdGVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRQaWNrZXIoKSB7XHJcbiAgICBpZiAodGhpcy5zdGFydFBpY2tlcikge1xyXG4gICAgICB0aGlzLnN0YXJ0UGlja2VyLmRhdGVQaWNrZXJUeXBlID0gdGhpcy5kYXRlUGlja2VyVHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5lbmRQaWNrZXIpIHtcclxuICAgICAgdGhpcy5lbmRQaWNrZXIuZGF0ZVBpY2tlclR5cGUgPSB0aGlzLmRhdGVQaWNrZXJUeXBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFN0YXJ0QW5kRW5kRGF0ZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWxpZCh0aGlzLnN0YXJ0RGF0ZSkgfHwgIXRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWxpZCh0aGlzLmVuZERhdGUpKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobW9tZW50KHRoaXMuc3RhcnREYXRlKSA8IG1vbWVudCh0aGlzLmVuZERhdGUpKSB7XHJcbiAgICAgIHJldHVybiBbdGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZV07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFt0aGlzLmVuZERhdGUsIHRoaXMuc3RhcnREYXRlXTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERhdGVSYW5nZVBpY2tlclR5cGUgPSAnZGF0ZS1yYW5nZS1waWNrZXInIHwgJ2RhdGV0aW1lLXJhbmdlLXBpY2tlcic7Il19